diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 08f637b7..0432a344 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -15,6 +15,9 @@ PODS: - Firebase/Firestore (= 9.3.0) - firebase_core - Flutter + - connectivity_plus (0.0.1): + - Flutter + - ReachabilitySwift - device_info_plus (0.0.1): - Flutter - facebook_app_events (0.0.1): @@ -242,11 +245,14 @@ PODS: - OrderedSet (5.0.0) - package_info_plus (0.4.5): - Flutter + - pasteboard (0.0.1): + - Flutter - path_provider_ios (0.0.1): - Flutter - PromisesObjC (2.1.1) - quick_actions_ios (0.0.1): - Flutter + - ReachabilitySwift (5.0.0) - shared_preferences_ios (0.0.1): - Flutter - sign_in_with_apple (0.0.1): @@ -266,6 +272,7 @@ DEPENDENCIES: - audio_session (from `.symlinks/plugins/audio_session/ios`) - awesome_notifications (from `.symlinks/plugins/awesome_notifications/ios`) - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - facebook_app_events (from `.symlinks/plugins/facebook_app_events/ios`) - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) @@ -292,6 +299,7 @@ DEPENDENCIES: - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) - objectbox_flutter_libs (from `.symlinks/plugins/objectbox_flutter_libs/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) + - pasteboard (from `.symlinks/plugins/pasteboard/ios`) - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) - quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`) - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) @@ -332,6 +340,7 @@ SPEC REPOS: - ObjectBox - OrderedSet - PromisesObjC + - ReachabilitySwift - Toast - TOCropViewController @@ -344,6 +353,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/awesome_notifications/ios" cloud_firestore: :path: ".symlinks/plugins/cloud_firestore/ios" + connectivity_plus: + :path: ".symlinks/plugins/connectivity_plus/ios" device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" facebook_app_events: @@ -397,6 +408,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/objectbox_flutter_libs/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" + pasteboard: + :path: ".symlinks/plugins/pasteboard/ios" path_provider_ios: :path: ".symlinks/plugins/path_provider_ios/ios" quick_actions_ios: @@ -423,6 +436,7 @@ SPEC CHECKSUMS: audio_session: 4f3e461722055d21515cf3261b64c973c062f345 awesome_notifications: 04530aafec8dac4635244ed4b4072f4aea6cc938 cloud_firestore: 08093e207dfb2e6c82a6b272def699e022548786 + connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed facebook_app_events: 62752eb33a4b0c6d3a6b62c724a83c6489b57aea FBAEMKit: d00064597439e75885c70d9adbcb5f3e9ad84f5d @@ -477,9 +491,11 @@ SPEC CHECKSUMS: objectbox_flutter_libs: e414a78ffda0a6418a7b41359dda7b7cfc6cd8fe OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e + pasteboard: 982969ebaa7c78af3e6cc7761e8f5e77565d9ce0 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb quick_actions_ios: 622e9076602c57f1f937f1c13e5c59c3379347e9 + ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440 sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 diff --git a/lib/utils/helpers/quill_helper.dart b/lib/utils/helpers/quill_helper.dart index 87444d19..b2a1745f 100644 --- a/lib/utils/helpers/quill_helper.dart +++ b/lib/utils/helpers/quill_helper.dart @@ -9,7 +9,7 @@ import 'package:flutter_quill/src/models/documents/nodes/block.dart' as block; import 'package:flutter_quill/src/models/documents/nodes/line.dart' as line; import 'package:flutter_quill/src/models/documents/nodes/node.dart' as node; import 'package:cached_network_image/cached_network_image.dart'; -import 'package:flutter_quill/src/widgets/embeds/image.dart'; +import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'; import 'dart:convert'; class QuillHelper { diff --git a/lib/views/content_reader/local_widgets/content_page_viewer.dart b/lib/views/content_reader/local_widgets/content_page_viewer.dart index dfd57e76..6a6b1376 100644 --- a/lib/views/content_reader/local_widgets/content_page_viewer.dart +++ b/lib/views/content_reader/local_widgets/content_page_viewer.dart @@ -2,8 +2,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_quill/flutter_quill.dart' as editor; import 'package:spooky/utils/constants/config_constant.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/custom_element_embed.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/quill_embed_renderer.dart'; +import 'package:spooky/views/detail/quill_renderer/quill_custom_renderer.dart'; +import 'package:spooky/views/detail/quill_renderer/quill_image_renderer.dart'; class ContentPageViewer extends StatefulWidget { const ContentPageViewer({ @@ -62,32 +62,10 @@ class ContentPageViewerState extends State { horizontal: ConfigConstant.margin2, vertical: ConfigConstant.margin2 + 8.0, ), - customElementsEmbedBuilder: ( - BuildContext context, - editor.QuillController controller, - editor.CustomBlockEmbed block, - bool readOnly, - void Function(GlobalKey videoContainerKey)? onVideoInit, - ) { - return CustomElementEmbed( - controller: controller, - block: block, - readOnly: readOnly, - ); - }, - embedBuilder: ( - BuildContext context, - editor.QuillController controller, - editor.Embed node, - bool readOnly, - void Function(GlobalKey videoContainerKey)? onVideoInit, - ) { - return QuillEmbedRenderer( - controller: controller, - node: node, - readOnly: readOnly, - ); - }, + embedBuilders: [ + QuillImageRenderer(), + QuillCustomRenderer(), + ], ); } } diff --git a/lib/views/detail/local_widgets/detail_editor.dart b/lib/views/detail/local_widgets/detail_editor.dart index 41ad22a8..4ad2c798 100644 --- a/lib/views/detail/local_widgets/detail_editor.dart +++ b/lib/views/detail/local_widgets/detail_editor.dart @@ -6,8 +6,9 @@ import 'package:spooky/utils/constants/config_constant.dart'; import 'package:spooky/utils/helpers/app_helper.dart'; import 'package:spooky/utils/mixins/stateful_mixin.dart'; import 'package:spooky/views/detail/detail_view_model.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/custom_element_embed.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/quill_embed_renderer.dart'; +import 'package:spooky/views/detail/quill_renderer/quill_custom_renderer.dart'; + +import '../quill_renderer/quill_image_renderer.dart'; class DetailEditor extends StatefulWidget { const DetailEditor({ @@ -103,32 +104,10 @@ class _DetailEditorState extends State with StatefulMixin, Automat top: ConfigConstant.margin2 + 8.0, bottom: kToolbarHeight + MediaQuery.of(context).viewPadding.bottom + ConfigConstant.margin2, ), - customElementsEmbedBuilder: ( - BuildContext context, - editor.QuillController controller, - editor.CustomBlockEmbed block, - bool readOnly, - void Function(GlobalKey videoContainerKey)? onVideoInit, - ) { - return CustomElementEmbed( - controller: controller, - block: block, - readOnly: readOnly, - ); - }, - embedBuilder: ( - BuildContext context, - editor.QuillController controller, - editor.Embed node, - bool readOnly, - void Function(GlobalKey videoContainerKey)? onVideoInit, - ) { - return QuillEmbedRenderer( - controller: controller, - node: node, - readOnly: readOnly, - ); - }, + embedBuilders: [ + QuillImageRenderer(), + QuillCustomRenderer(), + ], keyboardAppearance: M3Color.keyboardAppearance(context), onLaunchUrl: (url) { AppHelper.openLinkDialog(url); diff --git a/lib/views/detail/local_widgets/quill_renderer/custom_element_embed.dart b/lib/views/detail/local_widgets/quill_renderer/custom_element_embed.dart deleted file mode 100644 index 9d87db72..00000000 --- a/lib/views/detail/local_widgets/quill_renderer/custom_element_embed.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_quill/flutter_quill.dart' as quill; -import 'package:spooky/views/detail/local_widgets/quill_renderer/date_block_embed.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/date_block_embed_builder.dart'; - -class CustomElementEmbed extends StatelessWidget { - const CustomElementEmbed({ - Key? key, - required this.controller, - required this.block, - required this.readOnly, - this.onVideoInit, - }) : super(key: key); - - final quill.QuillController controller; - final quill.CustomBlockEmbed block; - final bool readOnly; - final void Function(GlobalKey videoContainerKey)? onVideoInit; - - @override - Widget build(BuildContext context) { - switch (block.type) { - case DateBlockEmbed.blockType: - return DateBlockEmbedBuilder( - block: block, - readOnly: readOnly, - controller: controller, - ); - default: - return const SizedBox.shrink(); - } - } -} diff --git a/lib/views/detail/local_widgets/quill_renderer/quill_embed_renderer.dart b/lib/views/detail/local_widgets/quill_renderer/quill_embed_renderer.dart deleted file mode 100644 index 1758388f..00000000 --- a/lib/views/detail/local_widgets/quill_renderer/quill_embed_renderer.dart +++ /dev/null @@ -1,33 +0,0 @@ -// ignore_for_file: implementation_imports - -import 'package:flutter/material.dart'; -import 'package:flutter_quill/flutter_quill.dart' as quill; -import 'package:spooky/views/detail/local_widgets/quill_renderer/quill_image_renderer.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/quill_unsupported_embed.dart'; - -class QuillEmbedRenderer extends StatelessWidget { - const QuillEmbedRenderer({ - Key? key, - required this.controller, - required this.node, - required this.readOnly, - }) : super(key: key); - - final quill.QuillController controller; - final quill.Embed node; - final bool readOnly; - - @override - Widget build(BuildContext context) { - switch (node.value.type) { - case quill.BlockEmbed.imageType: - return QuillImageRenderer( - node: node, - controller: controller, - readOnly: readOnly, - ); - default: - return const QuillUnsupportedEmbed(); - } - } -} diff --git a/lib/views/detail/local_widgets/quill_renderer/date_block_embed_builder.dart b/lib/views/detail/quill_renderer/custom_date_block_renderer.dart similarity index 93% rename from lib/views/detail/local_widgets/quill_renderer/date_block_embed_builder.dart rename to lib/views/detail/quill_renderer/custom_date_block_renderer.dart index ee41c151..c3e3d285 100644 --- a/lib/views/detail/local_widgets/quill_renderer/date_block_embed_builder.dart +++ b/lib/views/detail/quill_renderer/custom_date_block_renderer.dart @@ -4,11 +4,11 @@ import 'package:spooky/theme/m3/m3_color.dart'; import 'package:spooky/theme/m3/m3_text_theme.dart'; import 'package:spooky/utils/constants/config_constant.dart'; import 'package:spooky/utils/helpers/date_format_helper.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/date_block_embed.dart'; +import 'package:spooky/views/detail/quill_renderer_helper/date_block_embed.dart'; import 'package:spooky/widgets/sp_animated_icon.dart'; -class DateBlockEmbedBuilder extends StatelessWidget { - const DateBlockEmbedBuilder({ +class CustomDateBlockRenderer extends StatelessWidget { + const CustomDateBlockRenderer({ Key? key, required this.block, required this.readOnly, diff --git a/lib/views/detail/quill_renderer/quill_custom_renderer.dart b/lib/views/detail/quill_renderer/quill_custom_renderer.dart new file mode 100644 index 00000000..268d6942 --- /dev/null +++ b/lib/views/detail/quill_renderer/quill_custom_renderer.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_quill/flutter_quill.dart' as quill; +import 'package:spooky/views/detail/quill_renderer/custom_date_block_renderer.dart'; +import 'package:spooky/views/detail/quill_renderer/quill_unsupported_renderer.dart'; +import 'package:spooky/views/detail/quill_renderer_helper/date_block_embed.dart'; + +class QuillCustomRenderer extends quill.EmbedBuilder { + @override + String get key => quill.BlockEmbed.customType; + + @override + Widget build(BuildContext context, quill.QuillController controller, quill.Embed node, bool readOnly) { + quill.Embeddable block = node.value; + + switch (block.type) { + case DateBlockEmbed.blockType: + return CustomDateBlockRenderer( + block: block as quill.CustomBlockEmbed, + readOnly: readOnly, + controller: controller, + ); + default: + return const QuillUnsupportedRenderer(); + } + } +} diff --git a/lib/views/detail/local_widgets/quill_renderer/quill_image_renderer.dart b/lib/views/detail/quill_renderer/quill_image_renderer.dart similarity index 86% rename from lib/views/detail/local_widgets/quill_renderer/quill_image_renderer.dart rename to lib/views/detail/quill_renderer/quill_image_renderer.dart index fdf93ada..9485921c 100644 --- a/lib/views/detail/local_widgets/quill_renderer/quill_image_renderer.dart +++ b/lib/views/detail/quill_renderer/quill_image_renderer.dart @@ -10,20 +10,34 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_quill/flutter_quill.dart' as quill; -import 'package:flutter_quill/src/widgets/embeds/image.dart'; +import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'; import 'package:spooky/core/services/messenger_service.dart'; import 'package:spooky/utils/constants/config_constant.dart'; import 'package:spooky/utils/helpers/app_helper.dart'; import 'package:spooky/utils/helpers/quill_helper.dart'; import 'package:spooky/utils/helpers/quill_image_size_helper.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/image_resize_button.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/image_zoom_view.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/quill_unsupported_embed.dart'; +import 'package:spooky/views/detail/quill_renderer_helper/image_resize_button.dart'; +import 'package:spooky/views/detail/quill_renderer_helper/image_zoom_view.dart'; +import 'package:spooky/views/detail/quill_renderer/quill_unsupported_renderer.dart'; import 'package:spooky/widgets/sp_cross_fade.dart'; import 'package:spooky/widgets/sp_tap_effect.dart'; -class QuillImageRenderer extends StatelessWidget { - const QuillImageRenderer({ +class QuillImageRenderer extends quill.EmbedBuilder { + @override + String get key => quill.BlockEmbed.imageType; + + @override + Widget build(BuildContext context, quill.QuillController controller, quill.Embed node, bool readOnly) { + return _QuillImageRenderer( + node: node, + controller: controller, + readOnly: readOnly, + ); + } +} + +class _QuillImageRenderer extends StatelessWidget { + const _QuillImageRenderer({ Key? key, required this.node, required this.controller, @@ -72,7 +86,7 @@ class QuillImageRenderer extends StatelessWidget { okLabel: tr("button.ok"), ); }, - child: QuillUnsupportedEmbed( + child: QuillUnsupportedRenderer( message: tr("msg.invalid_image_source"), ), ); diff --git a/lib/views/detail/local_widgets/quill_renderer/quill_unsupported_embed.dart b/lib/views/detail/quill_renderer/quill_unsupported_renderer.dart similarity index 90% rename from lib/views/detail/local_widgets/quill_renderer/quill_unsupported_embed.dart rename to lib/views/detail/quill_renderer/quill_unsupported_renderer.dart index 33c73410..a1e6c8f8 100644 --- a/lib/views/detail/local_widgets/quill_renderer/quill_unsupported_embed.dart +++ b/lib/views/detail/quill_renderer/quill_unsupported_renderer.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:spooky/theme/m3/m3_color.dart'; import 'package:spooky/utils/constants/config_constant.dart'; -class QuillUnsupportedEmbed extends StatelessWidget { - const QuillUnsupportedEmbed({ +class QuillUnsupportedRenderer extends StatelessWidget { + const QuillUnsupportedRenderer({ Key? key, this.message, }) : super(key: key); diff --git a/lib/views/detail/local_widgets/quill_renderer/date_block_embed.dart b/lib/views/detail/quill_renderer_helper/date_block_embed.dart similarity index 59% rename from lib/views/detail/local_widgets/quill_renderer/date_block_embed.dart rename to lib/views/detail/quill_renderer_helper/date_block_embed.dart index 11265c8b..ef6eaf17 100644 --- a/lib/views/detail/local_widgets/quill_renderer/date_block_embed.dart +++ b/lib/views/detail/quill_renderer_helper/date_block_embed.dart @@ -1,28 +1,28 @@ -import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:flutter_quill/flutter_quill.dart'; +import 'package:flutter_quill/flutter_quill.dart' as quill; +import 'dart:convert'; import 'package:spooky/utils/util_widgets/sp_date_picker.dart'; import 'package:spooky/widgets/sp_toolbar/sp_move_cursor_button.dart'; -class DateBlockEmbed extends CustomBlockEmbed { +class DateBlockEmbed extends quill.CustomBlockEmbed { static const String blockType = 'date'; const DateBlockEmbed(String value) : super(blockType, value); - static DateBlockEmbed fromDocument(Document document) { + static DateBlockEmbed fromDocument(quill.Document document) { return DateBlockEmbed( jsonEncode(document.toDelta().toJson()), ); } - Document get document { - return Document.fromJson(jsonDecode(data)); + quill.Document get document { + return quill.Document.fromJson(jsonDecode(data)); } static void update({ - required QuillController controller, + required quill.QuillController controller, required DateTime initDate, required BuildContext context, - required Document document, + required quill.Document document, }) async { DateTime? pathDate = await SpDatePicker.showDatePicker( context, @@ -30,26 +30,26 @@ class DateBlockEmbed extends CustomBlockEmbed { ); if (pathDate != null) { - final block = BlockEmbed.custom( + final block = quill.BlockEmbed.custom( DateBlockEmbed.fromDocument( - Document.fromDelta( - Delta()..insert("${pathDate.toIso8601String()}\n"), + quill.Document.fromDelta( + quill.Delta()..insert("${pathDate.toIso8601String()}\n"), ), ), ); - final offset = getEmbedNode(controller, controller.selection.start).item1; + final offset = quill.getEmbedNode(controller, controller.selection.start).item1; controller.replaceText(offset, 1, block, TextSelection.collapsed(offset: offset)); } } static void add({ - required QuillController controller, + required quill.QuillController controller, required DateTime initDate, }) { - final block = BlockEmbed.custom( + final block = quill.BlockEmbed.custom( DateBlockEmbed.fromDocument( - Document.fromDelta( - Delta()..insert("${initDate.toIso8601String()}\n"), + quill.Document.fromDelta( + quill.Delta()..insert("${initDate.toIso8601String()}\n"), ), ), ); diff --git a/lib/views/detail/local_widgets/quill_renderer/image_resize_button.dart b/lib/views/detail/quill_renderer_helper/image_resize_button.dart similarity index 96% rename from lib/views/detail/local_widgets/quill_renderer/image_resize_button.dart rename to lib/views/detail/quill_renderer_helper/image_resize_button.dart index db06d91f..5b5c4e63 100644 --- a/lib/views/detail/local_widgets/quill_renderer/image_resize_button.dart +++ b/lib/views/detail/quill_renderer_helper/image_resize_button.dart @@ -2,7 +2,7 @@ import 'package:community_material_icon/community_material_icon.dart'; import 'package:flutter/material.dart'; import 'package:flutter_quill/flutter_quill.dart' as quill; -import 'package:flutter_quill/src/widgets/embeds/image.dart'; +import 'package:flutter_quill_extensions/embeds/widgets/image.dart'; import 'package:spooky/theme/m3/m3_color.dart'; import 'package:spooky/utils/util_widgets/quill_image_resizer.dart'; import 'package:spooky/widgets/sp_floating_popup_button.dart'; diff --git a/lib/views/detail/local_widgets/quill_renderer/image_zoom_view.dart b/lib/views/detail/quill_renderer_helper/image_zoom_view.dart similarity index 100% rename from lib/views/detail/local_widgets/quill_renderer/image_zoom_view.dart rename to lib/views/detail/quill_renderer_helper/image_zoom_view.dart diff --git a/lib/widgets/sp_story_tile/widgets/story_tile_chips.dart b/lib/widgets/sp_story_tile/widgets/story_tile_chips.dart index efecc91f..52febf89 100644 --- a/lib/widgets/sp_story_tile/widgets/story_tile_chips.dart +++ b/lib/widgets/sp_story_tile/widgets/story_tile_chips.dart @@ -13,7 +13,7 @@ import 'package:spooky/utils/helpers/date_format_helper.dart'; import 'package:spooky/utils/helpers/quill_helper.dart'; import 'package:spooky/widgets/sp_cross_fade.dart'; import 'package:spooky/widgets/sp_story_tile/widgets/add_to_drive_button.dart'; -import 'package:flutter_quill/src/widgets/embeds/image.dart'; +import 'package:flutter_quill_extensions/embeds/widgets/image.dart'; import 'package:spooky/widgets/sp_story_tile/widgets/story_tile_tag_chips.dart'; import 'package:spooky/widgets/sp_chip.dart'; diff --git a/lib/widgets/sp_toolbar/sp_date_button.dart b/lib/widgets/sp_toolbar/sp_date_button.dart index 75ff950c..7414b196 100644 --- a/lib/widgets/sp_toolbar/sp_date_button.dart +++ b/lib/widgets/sp_toolbar/sp_date_button.dart @@ -2,7 +2,7 @@ import 'package:community_material_icon/community_material_icon.dart'; import 'package:flutter/material.dart'; import 'package:flutter_quill/flutter_quill.dart' as quill; import 'package:flutter_quill/flutter_quill.dart'; -import 'package:spooky/views/detail/local_widgets/quill_renderer/date_block_embed.dart'; +import 'package:spooky/views/detail/quill_renderer_helper/date_block_embed.dart'; class SpDateButton extends StatelessWidget { const SpDateButton({ diff --git a/lib/widgets/sp_toolbar/sp_image_button.dart b/lib/widgets/sp_toolbar/sp_image_button.dart index dcf51d06..3037db5c 100644 --- a/lib/widgets/sp_toolbar/sp_image_button.dart +++ b/lib/widgets/sp_toolbar/sp_image_button.dart @@ -9,6 +9,7 @@ import 'package:flutter_quill/flutter_quill.dart'; import 'package:image_picker/image_picker.dart'; import 'package:spooky/core/services/messenger_service.dart'; import 'package:image_cropper/image_cropper.dart'; +import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'; class SpImageButton extends StatelessWidget { const SpImageButton({ diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index efc5145d..344a6fb6 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include void fl_register_plugins(FlPluginRegistry* registry) { @@ -25,6 +26,9 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) objectbox_flutter_libs_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "ObjectboxFlutterLibsPlugin"); objectbox_flutter_libs_plugin_register_with_registrar(objectbox_flutter_libs_registrar); + g_autoptr(FlPluginRegistrar) pasteboard_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "PasteboardPlugin"); + pasteboard_plugin_register_with_registrar(pasteboard_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index eb8f0aba..a4d69777 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_color flutter_secure_storage_linux objectbox_flutter_libs + pasteboard url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 36dd8c3a..c0664345 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,6 +7,7 @@ import Foundation import audio_session import cloud_firestore +import connectivity_plus_macos import desktop_window import device_info_plus_macos import dynamic_color @@ -20,6 +21,7 @@ import just_audio import macos_ui import objectbox_flutter_libs import package_info_plus_macos +import pasteboard import path_provider_macos import shared_preferences_macos import sign_in_with_apple @@ -29,6 +31,7 @@ import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) + ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) @@ -42,6 +45,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { MacOSUiPlugin.register(with: registry.registrar(forPlugin: "MacOSUiPlugin")) ObjectboxFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "ObjectboxFlutterLibsPlugin")) FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) + PasteboardPlugin.register(with: registry.registrar(forPlugin: "PasteboardPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SignInWithApplePlugin.register(with: registry.registrar(forPlugin: "SignInWithApplePlugin")) diff --git a/pubspec.lock b/pubspec.lock index 86ff95b5..46c870d5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,7 +14,7 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "38.0.0" + version: "43.0.0" adaptive_dialog: dependency: "direct main" description: @@ -28,7 +28,7 @@ packages: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "3.4.1" + version: "4.3.1" animated_clipper: dependency: "direct main" description: @@ -98,7 +98,7 @@ packages: name: auto_route_generator url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.2.1" awesome_notifications: dependency: "direct main" description: @@ -297,6 +297,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.7.0" + connectivity_plus: + dependency: transitive + description: + name: connectivity_plus + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.7" + connectivity_plus_linux: + dependency: transitive + description: + name: connectivity_plus_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + connectivity_plus_macos: + dependency: transitive + description: + name: connectivity_plus_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.4" + connectivity_plus_platform_interface: + dependency: transitive + description: + name: connectivity_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + connectivity_plus_web: + dependency: transitive + description: + name: connectivity_plus_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.3" + connectivity_plus_windows: + dependency: transitive + description: + name: connectivity_plus_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.2" convert: dependency: transitive description: @@ -367,6 +409,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.2" + dbus: + dependency: transitive + description: + name: dbus + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.8" dependency_validator: dependency: "direct dev" description: @@ -464,7 +513,7 @@ packages: name: easy_localization_loader url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" easy_logger: dependency: transitive description: @@ -633,13 +682,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_app_name: - dependency: "direct dev" - description: - name: flutter_app_name - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.1" flutter_blurhash: dependency: transitive description: @@ -779,7 +821,7 @@ packages: name: flutter_native_splash url: "https://pub.dartlang.org" source: hosted - version: "2.2.0+1" + version: "2.2.10+1" flutter_phoenix: dependency: "direct main" description: @@ -800,7 +842,14 @@ packages: name: flutter_quill url: "https://pub.dartlang.org" source: hosted - version: "5.4.1" + version: "6.0.5" + flutter_quill_extensions: + dependency: "direct main" + description: + name: flutter_quill_extensions + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.0" flutter_screen_lock: dependency: "direct main" description: @@ -884,7 +933,7 @@ packages: name: flutter_svg url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.1.5" flutter_test: dependency: "direct dev" description: flutter @@ -1064,14 +1113,14 @@ packages: name: i18n_extension url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "5.0.1" image: dependency: transitive description: name: image url: "https://pub.dartlang.org" source: hosted - version: "3.1.3" + version: "3.2.0" image_cropper: dependency: "direct main" description: @@ -1176,7 +1225,7 @@ packages: name: injectable_generator url: "https://pub.dartlang.org" source: hosted - version: "1.5.3" + version: "1.5.4" intersperse: dependency: transitive description: @@ -1261,13 +1310,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.1" - lint: - dependency: transitive - description: - name: lint - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" lints: dependency: transitive description: @@ -1408,27 +1450,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.3.1" + nm: + dependency: transitive + description: + name: nm + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" objectbox: dependency: "direct main" description: name: objectbox url: "https://pub.dartlang.org" source: hosted - version: "1.6.0" + version: "1.6.2" objectbox_flutter_libs: dependency: "direct main" description: name: objectbox_flutter_libs url: "https://pub.dartlang.org" source: hosted - version: "1.6.0" + version: "1.6.2" objectbox_generator: dependency: "direct dev" description: name: objectbox_generator url: "https://pub.dartlang.org" source: hosted - version: "1.6.0" + version: "1.6.2" octo_image: dependency: transitive description: @@ -1485,6 +1534,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.0" + pasteboard: + dependency: transitive + description: + name: pasteboard + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" path: dependency: "direct main" description: @@ -2056,28 +2112,28 @@ packages: name: video_player url: "https://pub.dartlang.org" source: hosted - version: "2.4.5" + version: "2.4.7" video_player_android: dependency: transitive description: name: video_player_android url: "https://pub.dartlang.org" source: hosted - version: "2.3.8" + version: "2.3.9" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation url: "https://pub.dartlang.org" source: hosted - version: "2.3.5" + version: "2.3.6" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "5.1.3" + version: "5.1.4" video_player_web: dependency: transitive description: @@ -2133,7 +2189,7 @@ packages: name: xml url: "https://pub.dartlang.org" source: hosted - version: "5.4.1" + version: "6.1.0" yaml: dependency: transitive description: @@ -2149,5 +2205,5 @@ packages: source: hosted version: "8.2.2" sdks: - dart: ">=2.17.0 <3.0.0" + dart: ">=2.18.0 <3.0.0" flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 2e10d40b..14223915 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -42,7 +42,7 @@ dependencies: ref: 1.0.3 flutter_markdown: ^0.6.10+1 flutter_phoenix: ^1.0.0 - flutter_quill: ^5.2.11 + flutter_quill: ^6.0.5 flutter_screen_lock: ^7.0.4 flutter_secure_storage: ^6.0.0 flutter_sticky_header: ^0.6.3 @@ -109,6 +109,7 @@ dependencies: japx: ^2.0.4 firebase_crashlytics: ^2.8.10 easy_localization_loader: ^1.0.0 + flutter_quill_extensions: ^0.1.0 # for ObjectBox Sync # objectbox_sync_flutter_libs @@ -133,16 +134,12 @@ dev_dependencies: change_app_package_name: ^1.1.0 copy_with_extension_gen: ^4.0.2 dependency_validator: ^3.2.0 # pub run dependency_validator - flutter_app_name: ^0.1.1 flutter_lints: ^2.0.1 injectable_generator: ^1.5.3 json_serializable: ^6.2.0 objectbox_generator: any flutter_native_splash: ^2.2.0+1 -flutter_app_name: - name: "Spooky" - flutter: uses-material-design: true assets: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 53b5d490..20ccf9b7 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,14 +6,18 @@ #include "generated_plugin_registrant.h" +#include #include #include #include #include #include +#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + ConnectivityPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); DesktopWindowPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("DesktopWindowPlugin")); DynamicColorPluginCApiRegisterWithRegistrar( @@ -24,6 +28,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("LocalAuthPlugin")); ObjectboxFlutterLibsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ObjectboxFlutterLibsPlugin")); + PasteboardPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PasteboardPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index a8ad2eae..417ec5ff 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,11 +3,13 @@ # list(APPEND FLUTTER_PLUGIN_LIST + connectivity_plus_windows desktop_window dynamic_color flutter_secure_storage_windows local_auth_windows objectbox_flutter_libs + pasteboard url_launcher_windows )