From 0b7ae734a1fe58700ee20fcf5929dc0564080645 Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Tue, 30 Jan 2024 16:05:56 +0800 Subject: [PATCH] fix: potential dependency conflict (#4550) * fix: potential dependency conflict * fix: ci issues --- .../document_text_direction_test.dart | 4 +- .../custom_text_align_command.dart | 3 + .../callout/callout_block_component.dart | 4 +- .../code_block/code_block_component.dart | 2 +- .../code_block/code_block_shortcut_event.dart | 5 + .../context_menu/custom_context_menu.dart | 6 +- .../copy_and_paste/custom_copy_command.dart | 1 + .../copy_and_paste/custom_cut_command.dart | 1 + .../copy_and_paste/custom_paste_command.dart | 1 + .../database/inline_database_menu_item.dart | 7 +- .../referenced_database_menu_item.dart | 8 +- .../image/image_selection_menu.dart | 2 +- .../math_equation_block_component.dart | 2 +- .../mention/slash_menu_items.dart | 4 +- .../widgets/auto_completion_node_widget.dart | 6 +- .../outline/outline_block_component.dart | 2 +- .../toggle/toggle_block_component.dart | 2 +- .../toggle/toggle_block_shortcut_event.dart | 1 + .../lib/startup/tasks/supabase_task.dart | 34 +- .../auth/supabase_auth_service.dart | 18 +- .../user/application/supabase_realtime.dart | 74 ++-- .../widgets/emoji_picker/emoji_menu_item.dart | 4 +- .../packages/flowy_infra/pubspec.yaml | 2 +- frontend/appflowy_flutter/pubspec.lock | 346 ++++++++---------- frontend/appflowy_flutter/pubspec.yaml | 15 +- .../settings_shortcut_service_test.dart | 7 +- ...ettings_customize_shortcuts_view_test.dart | 4 + .../settings/shortcuts_list_tile_test.dart | 1 + .../settings/shortcuts_list_view_test.dart | 4 + frontend/resources/translations/en.json | 4 +- frontend/scripts/makefile/mobile.toml | 2 +- 31 files changed, 273 insertions(+), 303 deletions(-) diff --git a/frontend/appflowy_flutter/integration_test/document/document_text_direction_test.dart b/frontend/appflowy_flutter/integration_test/document/document_text_direction_test.dart index eff018d3ca4ce..3ab2bd2f6e49f 100644 --- a/frontend/appflowy_flutter/integration_test/document/document_text_direction_test.dart +++ b/frontend/appflowy_flutter/integration_test/document/document_text_direction_test.dart @@ -29,8 +29,8 @@ void main() { // because this icons are defined in the appflowy_editor package, we can't fetch the icons by SVG data. [textDirectionItems] final textDirectionIconNames = [ 'toolbar/text_direction_auto', - 'toolbar/text_direction_left', - 'toolbar/text_direction_right', + 'toolbar/text_direction_ltr', + 'toolbar/text_direction_rtl', ]; // no text direction items in default/LTR mode var button = find.byWidgetPredicate( diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/align_toolbar_item/custom_text_align_command.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/align_toolbar_item/custom_text_align_command.dart index 621a33b70d28b..2b632e474e239 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/align_toolbar_item/custom_text_align_command.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/align_toolbar_item/custom_text_align_command.dart @@ -19,6 +19,7 @@ final List customTextAlignCommands = [ final CommandShortcutEvent customTextLeftAlignCommand = CommandShortcutEvent( key: 'Align text to the left', command: 'ctrl+shift+l', + getDescription: () => 'Align text to the left', handler: (editorState) => _textAlignHandler(editorState, leftAlignmentKey), ); @@ -33,6 +34,7 @@ final CommandShortcutEvent customTextLeftAlignCommand = CommandShortcutEvent( final CommandShortcutEvent customTextCenterAlignCommand = CommandShortcutEvent( key: 'Align text to the center', command: 'ctrl+shift+e', + getDescription: () => 'Align text to the center', handler: (editorState) => _textAlignHandler(editorState, centerAlignmentKey), ); @@ -47,6 +49,7 @@ final CommandShortcutEvent customTextCenterAlignCommand = CommandShortcutEvent( final CommandShortcutEvent customTextRightAlignCommand = CommandShortcutEvent( key: 'Align text to the right', command: 'ctrl+shift+r', + getDescription: () => 'Align text to the right', handler: (editorState) => _textAlignHandler(editorState, rightAlignmentKey), ); diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/callout/callout_block_component.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/callout/callout_block_component.dart index 33f5151220de0..1c89d36be0af0 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/callout/callout_block_component.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/callout/callout_block_component.dart @@ -1,4 +1,6 @@ +import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:easy_localization/easy_localization.dart' hide TextDirection; import 'package:flowy_infra/theme_extension.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flutter/material.dart'; @@ -47,7 +49,7 @@ Node calloutNode({ // defining the callout block menu item in selection menu SelectionMenuItem calloutItem = SelectionMenuItem.node( - name: 'Callout', + getName: () => LocaleKeys.document_plugins_callout.tr(), iconData: Icons.note, keywords: [CalloutBlockKeys.type], nodeBuilder: (editorState, context) => diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_component.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_component.dart index 62aafe0a18aa6..91d866edf4eec 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_component.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_component.dart @@ -107,7 +107,7 @@ Node codeBlockNode({ // defining the callout block menu item for selection SelectionMenuItem codeBlockItem = SelectionMenuItem.node( - name: LocaleKeys.document_selectionMenu_codeBlock.tr(), + getName: () => LocaleKeys.document_selectionMenu_codeBlock.tr(), iconData: Icons.abc, keywords: ['code', 'codeblock'], nodeBuilder: (editorState, _) => codeBlockNode(), diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_shortcut_event.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_shortcut_event.dart index cea457bdd727b..6e6ace469484d 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_shortcut_event.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/code_block/code_block_shortcut_event.dart @@ -59,6 +59,7 @@ final CommandShortcutEvent insertNewParagraphNextToCodeBlockCommand = CommandShortcutEvent( key: 'insert a new paragraph next to the code block', command: 'shift+enter', + getDescription: () => 'Insert a new paragraph next to the code block', handler: _insertNewParagraphNextToCodeBlockCommandHandler, ); @@ -71,6 +72,7 @@ final CommandShortcutEvent tabToInsertSpacesInCodeBlockCommand = CommandShortcutEvent( key: 'tab to insert two spaces at the line start in code block', command: 'tab', + getDescription: () => 'Insert two spaces at the line start in code block', handler: _tabToInsertSpacesInCodeBlockCommandHandler, ); @@ -83,6 +85,7 @@ final CommandShortcutEvent tabToDeleteSpacesInCodeBlockCommand = CommandShortcutEvent( key: 'shift + tab to delete two spaces at the line start in code block', command: 'shift+tab', + getDescription: () => 'Delete two spaces at the line start in code block', handler: _tabToDeleteSpacesInCodeBlockCommandHandler, ); @@ -95,6 +98,7 @@ final CommandShortcutEvent selectAllInCodeBlockCommand = CommandShortcutEvent( key: 'ctrl + a to select all content inside a code block', command: 'ctrl+a', macOSCommand: 'meta+a', + getDescription: () => 'Select all content inside a code block', handler: _selectAllInCodeBlockCommandHandler, ); @@ -107,6 +111,7 @@ final CommandShortcutEvent pasteInCodeblock = CommandShortcutEvent( key: 'paste in codeblock', command: 'ctrl+v', macOSCommand: 'cmd+v', + getDescription: () => 'Paste text in codeblock', handler: _pasteInCodeBlock, ); diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/context_menu/custom_context_menu.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/context_menu/custom_context_menu.dart index 70aea8bbb5ea7..4d637dbcce3cf 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/context_menu/custom_context_menu.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/context_menu/custom_context_menu.dart @@ -6,15 +6,15 @@ import 'package:easy_localization/easy_localization.dart'; final List> customContextMenuItems = [ [ ContextMenuItem( - name: LocaleKeys.document_plugins_contextMenu_copy.tr(), + getName: () => LocaleKeys.document_plugins_contextMenu_copy.tr(), onPressed: (editorState) => customCopyCommand.execute(editorState), ), ContextMenuItem( - name: LocaleKeys.document_plugins_contextMenu_paste.tr(), + getName: () => LocaleKeys.document_plugins_contextMenu_paste.tr(), onPressed: (editorState) => customPasteCommand.execute(editorState), ), ContextMenuItem( - name: LocaleKeys.document_plugins_contextMenu_cut.tr(), + getName: () => LocaleKeys.document_plugins_contextMenu_cut.tr(), onPressed: (editorState) => customCutCommand.execute(editorState), ), ], diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_copy_command.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_copy_command.dart index 945505e926aa7..84da3dff37c07 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_copy_command.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_copy_command.dart @@ -14,6 +14,7 @@ import 'package:flutter/material.dart'; /// final CommandShortcutEvent customCopyCommand = CommandShortcutEvent( key: 'copy the selected content (with formatting)', + getDescription: () => 'copy the selected content (with formatting)', command: 'ctrl+c', macOSCommand: 'cmd+c', handler: _copyCommandHandler, diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_cut_command.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_cut_command.dart index 602556eec0b3e..9d56d82b390c8 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_cut_command.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_cut_command.dart @@ -12,6 +12,7 @@ import 'package:flutter/material.dart'; /// final CommandShortcutEvent customCutCommand = CommandShortcutEvent( key: 'cut the selected content (with formatting)', + getDescription: () => 'cut the selected content (with formatting)', command: 'ctrl+x', macOSCommand: 'cmd+x', handler: _cutCommandHandler, diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_paste_command.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_paste_command.dart index 8f1b0aa9101c7..be29fe63ff63c 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_paste_command.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/copy_and_paste/custom_paste_command.dart @@ -19,6 +19,7 @@ import 'package:string_validator/string_validator.dart'; /// final CommandShortcutEvent customPasteCommand = CommandShortcutEvent( key: 'paste the content (with formatting)', + getDescription: () => 'paste the content (with formatting)', command: 'ctrl+v', macOSCommand: 'cmd+v', handler: _pasteCommandHandler, diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart index ad27f4b43558c..989abcc3ec889 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart @@ -10,7 +10,7 @@ import 'package:easy_localization/easy_localization.dart'; SelectionMenuItem inlineGridMenuItem(DocumentBloc documentBloc) => SelectionMenuItem( - name: LocaleKeys.document_slashMenu_grid_createANewGrid.tr(), + getName: () => LocaleKeys.document_slashMenu_grid_createANewGrid.tr(), icon: (editorState, onSelected, style) => SelectableSvgWidget( data: FlowySvgs.grid_s, isSelected: onSelected, @@ -31,7 +31,7 @@ SelectionMenuItem inlineGridMenuItem(DocumentBloc documentBloc) => SelectionMenuItem inlineBoardMenuItem(DocumentBloc documentBloc) => SelectionMenuItem( - name: LocaleKeys.document_slashMenu_board_createANewBoard.tr(), + getName: () => LocaleKeys.document_slashMenu_board_createANewBoard.tr(), icon: (editorState, onSelected, style) => SelectableSvgWidget( data: FlowySvgs.board_s, isSelected: onSelected, @@ -52,7 +52,8 @@ SelectionMenuItem inlineBoardMenuItem(DocumentBloc documentBloc) => SelectionMenuItem inlineCalendarMenuItem(DocumentBloc documentBloc) => SelectionMenuItem( - name: LocaleKeys.document_slashMenu_calendar_createANewCalendar.tr(), + getName: () => + LocaleKeys.document_slashMenu_calendar_createANewCalendar.tr(), icon: (editorState, onSelected, style) => SelectableSvgWidget( data: FlowySvgs.date_s, isSelected: onSelected, diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart index 50b08db313d55..a43ede321e880 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart @@ -9,7 +9,7 @@ import 'package:easy_localization/easy_localization.dart'; // Document Reference SelectionMenuItem referencedDocumentMenuItem = SelectionMenuItem( - name: LocaleKeys.document_plugins_referencedDocument.tr(), + getName: () => LocaleKeys.document_plugins_referencedDocument.tr(), icon: (editorState, onSelected, style) => SelectableSvgWidget( data: FlowySvgs.document_s, isSelected: onSelected, @@ -23,7 +23,7 @@ SelectionMenuItem referencedDocumentMenuItem = SelectionMenuItem( // Database References SelectionMenuItem referencedGridMenuItem = SelectionMenuItem( - name: LocaleKeys.document_plugins_referencedGrid.tr(), + getName: () => LocaleKeys.document_plugins_referencedGrid.tr(), icon: (editorState, onSelected, style) => SelectableSvgWidget( data: FlowySvgs.grid_s, isSelected: onSelected, @@ -35,7 +35,7 @@ SelectionMenuItem referencedGridMenuItem = SelectionMenuItem( ); SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem( - name: LocaleKeys.document_plugins_referencedBoard.tr(), + getName: () => LocaleKeys.document_plugins_referencedBoard.tr(), icon: (editorState, onSelected, style) => SelectableSvgWidget( data: FlowySvgs.board_s, isSelected: onSelected, @@ -47,7 +47,7 @@ SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem( ); SelectionMenuItem referencedCalendarMenuItem = SelectionMenuItem( - name: LocaleKeys.document_plugins_referencedCalendar.tr(), + getName: () => LocaleKeys.document_plugins_referencedCalendar.tr(), icon: (editorState, onSelected, style) => SelectableSvgWidget( data: FlowySvgs.date_s, isSelected: onSelected, diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_selection_menu.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_selection_menu.dart index 4d578794516d9..c42e4f8147966 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_selection_menu.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_selection_menu.dart @@ -4,7 +4,7 @@ import 'package:appflowy_editor/appflowy_editor.dart' hide Log; import 'package:flutter/material.dart'; final customImageMenuItem = SelectionMenuItem( - name: AppFlowyEditorL10n.current.image, + getName: () => AppFlowyEditorL10n.current.image, icon: (editorState, isSelected, style) => SelectionMenuIconWidget( name: 'image', isSelected: isSelected, diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/math_equation/math_equation_block_component.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/math_equation/math_equation_block_component.dart index de0438a056729..6afe34118c5db 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/math_equation/math_equation_block_component.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/math_equation/math_equation_block_component.dart @@ -36,7 +36,7 @@ Node mathEquationNode({ // defining the callout block menu item for selection SelectionMenuItem mathEquationItem = SelectionMenuItem.node( - name: 'MathEquation', + getName: () => LocaleKeys.document_plugins_mathEquation_name.tr(), iconData: Icons.text_fields_rounded, keywords: ['tex, latex, katex', 'math equation', 'formula'], nodeBuilder: (editorState, _) => mathEquationNode(), diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/slash_menu_items.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/slash_menu_items.dart index 75b418e3e92b7..c8b93fcde2abf 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/slash_menu_items.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/slash_menu_items.dart @@ -1,9 +1,11 @@ import 'package:appflowy/generated/flowy_svgs.g.dart'; +import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/plugins/document/presentation/editor_plugins/mention/mention_block.dart'; import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:easy_localization/easy_localization.dart'; SelectionMenuItem dateMenuItem = SelectionMenuItem( - name: 'Insert Date', + getName: () => LocaleKeys.document_plugins_date.tr(), icon: (_, isSelected, style) => FlowySvg( FlowySvgs.date_s, color: isSelected diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/openai/widgets/auto_completion_node_widget.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/openai/widgets/auto_completion_node_widget.dart index 82d006137c191..56eed31926b8b 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/openai/widgets/auto_completion_node_widget.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/openai/widgets/auto_completion_node_widget.dart @@ -43,7 +43,7 @@ Node autoCompletionNode({ } SelectionMenuItem autoGeneratorMenuItem = SelectionMenuItem.node( - name: LocaleKeys.document_plugins_autoGeneratorMenuItemName.tr(), + getName: () => LocaleKeys.document_plugins_autoGeneratorMenuItemName.tr(), iconData: Icons.generating_tokens, keywords: ['ai', 'openai' 'writer', 'autogenerator'], nodeBuilder: (editorState, _) { @@ -172,9 +172,7 @@ class _AutoCompletionBlockComponentState maxLines: 5, focusNode: textFieldFocusNode, autoFocus: false, - hintTextConstraints: const BoxConstraints( - - ), + hintTextConstraints: const BoxConstraints(), ); } diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/outline/outline_block_component.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/outline/outline_block_component.dart index 8e5e5f233434d..1aa48ade9acf0 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/outline/outline_block_component.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/outline/outline_block_component.dart @@ -18,7 +18,7 @@ class OutlineBlockKeys { // defining the callout block menu item for selection SelectionMenuItem outlineItem = SelectionMenuItem.node( - name: LocaleKeys.document_selectionMenu_outline.tr(), + getName: () => LocaleKeys.document_selectionMenu_outline.tr(), iconData: Icons.list_alt, keywords: ['outline', 'table of contents'], nodeBuilder: (editorState, _) => outlineBlockNode(), diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_component.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_component.dart index a38755849c495..0bb7936658817 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_component.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_component.dart @@ -46,7 +46,7 @@ Node toggleListBlockNode({ // defining the toggle list block menu item SelectionMenuItem toggleListBlockItem = SelectionMenuItem.node( - name: LocaleKeys.document_plugins_toggleList.tr(), + getName: () => LocaleKeys.document_plugins_toggleList.tr(), iconData: Icons.arrow_right, keywords: ['collapsed list', 'toggle list', 'list'], nodeBuilder: (editorState, _) => toggleListBlockNode(), diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_shortcut_event.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_shortcut_event.dart index 900cc66583bd9..6857e830d6040 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_shortcut_event.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/toggle/toggle_block_shortcut_event.dart @@ -108,6 +108,7 @@ CharacterShortcutEvent insertChildNodeInsideToggleList = CharacterShortcutEvent( // toggle the todo list final CommandShortcutEvent toggleToggleListCommand = CommandShortcutEvent( key: 'toggle the toggle list', + getDescription: () => 'Toggle the toggle list', command: 'ctrl+enter', macOSCommand: 'cmd+enter', handler: _toggleToggleListCommandHandler, diff --git a/frontend/appflowy_flutter/lib/startup/tasks/supabase_task.dart b/frontend/appflowy_flutter/lib/startup/tasks/supabase_task.dart index 271d62be888dd..cb8981acddaa7 100644 --- a/frontend/appflowy_flutter/lib/startup/tasks/supabase_task.dart +++ b/frontend/appflowy_flutter/lib/startup/tasks/supabase_task.dart @@ -33,13 +33,15 @@ class InitSupabaseTask extends LaunchTask { return; } - supabase?.dispose(); + await supabase?.dispose(); supabase = null; final initializedSupabase = await Supabase.initialize( url: getIt().supabaseConfig.url, anonKey: getIt().supabaseConfig.anon_key, debug: kDebugMode, - localStorage: const SupabaseLocalStorage(), + authOptions: const FlutterAuthClientOptions( + localStorage: SupabaseLocalStorage(), + ), ); if (realtimeService != null) { @@ -60,7 +62,7 @@ class InitSupabaseTask extends LaunchTask { Future dispose() async { await realtimeService?.dispose(); realtimeService = null; - supabase?.dispose(); + await supabase?.dispose(); supabase = null; } } @@ -70,16 +72,10 @@ class InitSupabaseTask extends LaunchTask { /// We don't use the default one because it always save the session in the document directory. /// When we switch to the different folder, the session still exists. class SupabaseLocalStorage extends LocalStorage { - const SupabaseLocalStorage() - : super( - initialize: _initialize, - hasAccessToken: _hasAccessToken, - accessToken: _accessToken, - removePersistedSession: _removePersistedSession, - persistSession: _persistSession, - ); - - static Future _initialize() async { + const SupabaseLocalStorage(); + + @override + Future initialize() async { HiveCipher? encryptionCipher; // customize the path for Hive @@ -91,7 +87,8 @@ class SupabaseLocalStorage extends LocalStorage { ); } - static Future _hasAccessToken() { + @override + Future hasAccessToken() { return Future.value( Hive.box(hiveBoxName).containsKey( supabasePersistSessionKey, @@ -99,17 +96,20 @@ class SupabaseLocalStorage extends LocalStorage { ); } - static Future _accessToken() { + @override + Future accessToken() { return Future.value( Hive.box(hiveBoxName).get(supabasePersistSessionKey) as String?, ); } - static Future _removePersistedSession() { + @override + Future removePersistedSession() { return Hive.box(hiveBoxName).delete(supabasePersistSessionKey); } - static Future _persistSession(String persistSessionString) { + @override + Future persistSession(String persistSessionString) { return Hive.box(hiveBoxName).put( supabasePersistSessionKey, persistSessionString, diff --git a/frontend/appflowy_flutter/lib/user/application/auth/supabase_auth_service.dart b/frontend/appflowy_flutter/lib/user/application/auth/supabase_auth_service.dart index 49ddc25dea3b8..38b3980711e63 100644 --- a/frontend/appflowy_flutter/lib/user/application/auth/supabase_auth_service.dart +++ b/frontend/appflowy_flutter/lib/user/application/auth/supabase_auth_service.dart @@ -180,14 +180,14 @@ class SupabaseAuthService implements AuthService { } extension on String { - Provider toProvider() { + OAuthProvider toProvider() { switch (this) { case 'github': - return Provider.github; + return OAuthProvider.github; case 'google': - return Provider.google; + return OAuthProvider.google; case 'discord': - return Provider.discord; + return OAuthProvider.discord; default: throw UnimplementedError(); } @@ -235,17 +235,15 @@ Completer> supabaseLoginCompleter({ return completer; } -Map queryParamsForProvider(Provider provider) { +Map queryParamsForProvider(OAuthProvider provider) { switch (provider) { - case Provider.github: - return {}; - case Provider.google: + case OAuthProvider.google: return { 'access_type': 'offline', 'prompt': 'consent', }; - case Provider.discord: - return {}; + case OAuthProvider.github: + case OAuthProvider.discord: default: return {}; } diff --git a/frontend/appflowy_flutter/lib/user/application/supabase_realtime.dart b/frontend/appflowy_flutter/lib/user/application/supabase_realtime.dart index e005e93ed3fce..e47334676ab08 100644 --- a/frontend/appflowy_flutter/lib/user/application/supabase_realtime.dart +++ b/frontend/appflowy_flutter/lib/user/application/supabase_realtime.dart @@ -56,52 +56,44 @@ class SupabaseRealtimeService { final result = await UserBackendService.getCurrentUserProfile(); result.fold((l) => null, (userProfile) { Log.info("Start listening supabase table changes"); + // https://supabase.com/docs/guides/realtime/postgres-changes - final List filters = [ + + const ops = RealtimeChannelConfig(ack: true); + channel?.unsubscribe(); + channel = supabase.client.channel("table-db-changes", opts: ops); + for (final name in [ "document", "folder", "database", "database_row", "w_database", - ] - .map( - (name) => ChannelFilter( - event: 'INSERT', - schema: 'public', - table: "af_collab_update_$name", - filter: 'uid=eq.${userProfile.id}', - ), - ) - .toList(); - - filters.add( - ChannelFilter( - event: 'UPDATE', + ]) { + channel?.onPostgresChanges( + event: PostgresChangeEvent.insert, schema: 'public', - table: "af_user", - filter: 'uid=eq.${userProfile.id}', - ), - ); - - const ops = RealtimeChannelConfig(ack: true); - channel?.unsubscribe(); - channel = supabase.client.channel("table-db-changes", opts: ops); - for (final filter in filters) { - channel?.on( - RealtimeListenTypes.postgresChanges, - filter, - (payload, [ref]) { - try { - final jsonStr = jsonEncode(payload); - final pb = RealtimePayloadPB.create()..jsonStr = jsonStr; - UserEventPushRealtimeEvent(pb).send(); - } catch (e) { - Log.error(e); - } - }, + table: 'af_collab_update_$name', + filter: PostgresChangeFilter( + type: PostgresChangeFilterType.eq, + column: 'uid', + value: userProfile.id, + ), + callback: _onPostgresChangesCallback, ); } + channel?.onPostgresChanges( + event: PostgresChangeEvent.update, + schema: 'public', + table: 'af_user', + filter: PostgresChangeFilter( + type: PostgresChangeFilterType.eq, + column: 'uid', + value: userProfile.id, + ), + callback: _onPostgresChangesCallback, + ); + channel?.subscribe( (status, [err]) { Log.info( @@ -117,4 +109,14 @@ class SupabaseRealtimeService { await authStateSubscription?.cancel(); await channel?.unsubscribe(); } + + void _onPostgresChangesCallback(PostgresChangePayload payload) { + try { + final jsonStr = jsonEncode(payload); + final pb = RealtimePayloadPB.create()..jsonStr = jsonStr; + UserEventPushRealtimeEvent(pb).send(); + } catch (e) { + Log.error(e); + } + } } diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/emoji_picker/emoji_menu_item.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/emoji_picker/emoji_menu_item.dart index a830b6d64e8c0..0ea296a7d4523 100644 --- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/emoji_picker/emoji_menu_item.dart +++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/emoji_picker/emoji_menu_item.dart @@ -1,12 +1,14 @@ +import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/plugins/base/emoji/emoji_picker.dart'; import 'package:appflowy/plugins/document/presentation/editor_plugins/base/selectable_svg_widget.dart'; import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra_ui/style_widget/decoration.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; SelectionMenuItem emojiMenuItem = SelectionMenuItem( - name: 'Emoji', + getName: () => LocaleKeys.document_plugins_emoji.tr(), icon: (editorState, onSelected, style) => SelectableIconWidget( icon: Icons.emoji_emotions_outlined, isSelected: onSelected, diff --git a/frontend/appflowy_flutter/packages/flowy_infra/pubspec.yaml b/frontend/appflowy_flutter/packages/flowy_infra/pubspec.yaml index c812fcde83123..d3cfa7c9c0194 100644 --- a/frontend/appflowy_flutter/packages/flowy_infra/pubspec.yaml +++ b/frontend/appflowy_flutter/packages/flowy_infra/pubspec.yaml @@ -20,7 +20,7 @@ dependencies: bloc: ^8.1.2 freezed_annotation: ^2.1.0 file_picker: ^6.1.1 - file: ^6.1.4 + file: ^7.0.0 dev_dependencies: flutter_test: diff --git a/frontend/appflowy_flutter/pubspec.lock b/frontend/appflowy_flutter/pubspec.lock index 3baba2eacea6a..90eaf47da5042 100644 --- a/frontend/appflowy_flutter/pubspec.lock +++ b/frontend/appflowy_flutter/pubspec.lock @@ -5,26 +5,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "36a321c3d2cbe01cbcb3540a87b8843846e0206df3e691fa7b23e19e78de6d49" + sha256: "0f7b1783ddb1e4600580b8c00d0ddae5b06ae7f0382bd4fcce5db4df97b618e1" url: "https://pub.dev" source: hosted - version: "65.0.0" + version: "66.0.0" analyzer: dependency: "direct dev" description: name: analyzer - sha256: dfe03b90ec022450e22513b5e5ca1f01c0c01de9c3fba2f7fd233cb57a6b9a07 + sha256: "5e8bdcda061d91da6b034d64d8e4026f355bcb8c3e7a0ac2da1523205a91a737" url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.4.0" animations: dependency: transitive description: name: animations - sha256: "708e4b68c23228c264b038fe7003a2f5d01ce85fc64d8cae090e86b27fcea6c5" + sha256: d3d6dcfb218225bbe68e87ccf6378bbb2e32a94900722c5f81611dad089911cb url: "https://pub.dev" source: hosted - version: "2.0.10" + version: "2.0.11" app_links: dependency: "direct main" description: @@ -53,17 +53,17 @@ packages: dependency: "direct main" description: path: "." - ref: "31a18c5" - resolved-ref: "31a18c5486a1fc4b15d0db22102fd6dd67a30ce7" + ref: e80edfc + resolved-ref: e80edfcaaa402c606a642bf9bd1abf523ed15c80 url: "https://github.com/AppFlowy-IO/appflowy-editor.git" source: git - version: "2.3.0" + version: "2.3.1" appflowy_editor_plugins: dependency: "direct main" description: path: "." - ref: "6c49fea" - resolved-ref: "6c49feabd65d87ab6ab5c6942df3e85fa5add98d" + ref: "0223cca" + resolved-ref: "0223ccabe74b86092d3f3849b69026c89df3b236" url: "https://github.com/LucasXu0/appflowy_editor_plugins" source: git version: "0.0.1" @@ -78,10 +78,10 @@ packages: dependency: "direct main" description: name: archive - sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" + sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" url: "https://pub.dev" source: hosted - version: "3.4.9" + version: "3.4.10" args: dependency: transitive description: @@ -150,18 +150,18 @@ packages: dependency: transitive description: name: build_resolvers - sha256: "64e12b0521812d1684b1917bc80945625391cb9bdd4312536b1d69dcb6133ed8" + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "67d591d602906ef9201caf93452495ad1812bea2074f04e25dbd7c133785821b" + sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" url: "https://pub.dev" source: hosted - version: "2.4.7" + version: "2.4.8" build_runner_core: dependency: transitive description: @@ -182,34 +182,34 @@ packages: dependency: transitive description: name: built_value - sha256: "69acb7007eb2a31dc901512bfe0f7b767168be34cb734835d54c070bfa74c1b2" + sha256: a3ec2e0f967bc47f69f95009bb93db936288d61d5343b9436e378b28a2f830c6 url: "https://pub.dev" source: hosted - version: "8.8.0" + version: "8.9.0" cached_network_image: dependency: "direct main" description: name: cached_network_image - sha256: f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f + sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "56aa42a7a01e3c9db8456d9f3f999931f1e05535b5a424271e9a38cabf066613" + sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "4.0.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "759b9a9f8f6ccbb66c185df805fac107f05730b1dab9c64626d1008cca532257" + sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" calendar_view: dependency: "direct main" description: @@ -263,10 +263,10 @@ packages: dependency: transitive description: name: code_builder - sha256: b2151ce26a06171005b379ecff6e08d34c470180ffe16b8e14b6d52be292b55f + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.10.0" collection: dependency: "direct main" description: @@ -415,18 +415,18 @@ packages: dependency: "direct main" description: name: envied - sha256: c4af8bb99203d7f216cea41f2ec70874f9dd826b2a5782cdc5bd25389c5adcc1 + sha256: dab29e21452c3d57ec10889d96b06b4a006b01375d4df10b33c9704800c208c4 url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.5.3" envied_generator: dependency: "direct dev" description: name: envied_generator - sha256: "637901d274db3974afb3919ca9ba2e1a97f110fd57350ac13a3adcd20ad7d530" + sha256: b8655d5cb39b4d1d449a79ff6f1367b252c23955ff17ec7c03aacdff938598bd url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.5.3" equatable: dependency: "direct main" description: @@ -460,7 +460,7 @@ packages: source: hosted version: "2.1.0" file: - dependency: "direct overridden" + dependency: transitive description: name: file sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" @@ -495,10 +495,10 @@ packages: dependency: transitive description: name: file_selector_platform_interface - sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.6.2" file_selector_windows: dependency: transitive description: @@ -692,10 +692,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "21bf2825311de65501d22e563e3d7605dff57fb5e6da982db785ae5372ff018a" + sha256: "6c5031daae12c7072b3a87eff98983076434b4889ef2a44384d0cae3f82372ba" url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "2.4.6" freezed_annotation: dependency: "direct main" description: @@ -721,18 +721,18 @@ packages: dependency: transitive description: name: functions_client - sha256: "3b157b4d3ae9e38614fd80fab76d1ef1e0e39ff3412a45de2651f27cecb9d2d2" + sha256: "9a0ab83a525c8691a6724746e642de755a299afa04158807787364cd9e718001" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "2.0.0" get_it: dependency: "direct main" description: name: get_it - sha256: f79870884de16d689cf9a7d15eedf31ed61d750e813c538a6efb92660fea83c3 + sha256: e6017ce7fdeaf218dc51a100344d8cb70134b80e28b760f8bb23c242437bafd7 url: "https://pub.dev" source: hosted - version: "7.6.4" + version: "7.6.7" glob: dependency: transitive description: @@ -745,10 +745,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: c5fa45fa502ee880839e3b2152d987c44abae26d064a2376d4aad434cf0f7b15 + sha256: "07ee2436909f749d606f53521dc1725dd738dc5196e5ff815bc254253c594075" url: "https://pub.dev" source: hosted - version: "12.1.3" + version: "13.1.0" google_fonts: dependency: "direct main" description: @@ -761,10 +761,10 @@ packages: dependency: transitive description: name: gotrue - sha256: f3a47cdbc59e543f453a1ef150050cd7650fe756254ac1fcac1d2a2f6f2b5a21 + sha256: "879ac3e981bf5f9b3af156e421688b53823b7af17de7af0d2a37894a8e5f6532" url: "https://pub.dev" source: hosted - version: "1.12.6" + version: "2.4.1" graphs: dependency: transitive description: @@ -825,10 +825,10 @@ packages: dependency: "direct main" description: name: http - sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 + sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0" http_multi_server: dependency: transitive description: @@ -857,34 +857,34 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84" + sha256: "26222b01a0c9a2c8fe02fc90b8208bd3325da5ed1f4a2acabf75939031ac0bdd" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.7" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: d6a6e78821086b0b737009b09363018309bbc6de3fd88cc5c26bc2bb44a4957f + sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1" url: "https://pub.dev" source: hosted - version: "0.8.8+2" + version: "0.8.9+3" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7" + sha256: e2423c53a68b579a7c37a1eda967b8ae536c3d98518e5db95ca1fe5719a730a3 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "76ec722aeea419d03aa915c2c96bf5b47214b053899088c9abb4086ceecf97a7" + sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 url: "https://pub.dev" source: hosted - version: "0.8.8+4" + version: "0.8.9+1" image_picker_linux: dependency: transitive description: @@ -905,10 +905,10 @@ packages: dependency: transitive description: name: image_picker_platform_interface - sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 + sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b url: "https://pub.dev" source: hosted - version: "2.9.1" + version: "2.9.3" image_picker_windows: dependency: transitive description: @@ -934,10 +934,10 @@ packages: dependency: transitive description: name: intl_utils - sha256: "1d6d98ce452c586d099a57751d127c0c22727e6f34f5be1f5e7f2bcc69e5062a" + sha256: c2b1f5c72c25512cbeef5ab015c008fc50fe7e04813ba5541c25272300484bf4 url: "https://pub.dev" source: hosted - version: "2.8.6" + version: "2.8.7" io: dependency: transitive description: @@ -950,10 +950,10 @@ packages: dependency: transitive description: name: irondash_engine_context - sha256: "8b8c58f2b6414b0db739b329ca08baf3b66d4fcfc3c315525ddac61639addb90" + sha256: "294a0e21c4358ff17264e6b811c615b664cebb33b49ad2ddb54f8110e7714510" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.5.1" irondash_message_channel: dependency: transitive description: @@ -1075,7 +1075,7 @@ packages: source: hosted version: "0.1.5" logger: - dependency: "direct overridden" + dependency: transitive description: name: logger sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" @@ -1094,10 +1094,10 @@ packages: dependency: transitive description: name: markdown - sha256: acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd + sha256: "1b134d9f8ff2da15cb298efe6cd8b7d2a78958c1b00384ebcbdf13fe340a6c90" url: "https://pub.dev" source: hosted - version: "7.1.1" + version: "7.2.1" matcher: dependency: transitive description: @@ -1126,26 +1126,26 @@ packages: dependency: transitive description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" mockito: dependency: transitive description: name: mockito - sha256: "4b693867cee1853c9d1d7ecc1871f27f39b2ef2c13c0d8d8507dfe5bebd8aaf1" + sha256: "6841eed20a7befac0ce07df8116c8b8233ed1f4486a7647c7fc5a02ae6163917" url: "https://pub.dev" source: hosted - version: "5.4.3" + version: "5.4.4" mocktail: dependency: "direct main" description: name: mocktail - sha256: bac151b31e4ed78bd59ab89aa4c0928f297b1180186d5daf03734519e5f596c1 + sha256: c4b5007d91ca4f67256e720cb1b6d704e79a510183a12fa551021f652577dce6 url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.3" nanoid: dependency: "direct main" description: @@ -1246,26 +1246,26 @@ packages: dependency: "direct main" description: name: path_provider - sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa + sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 + sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" + sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" path_provider_linux: dependency: transitive description: @@ -1278,10 +1278,10 @@ packages: dependency: transitive description: name: path_provider_platform_interface - sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_windows: dependency: transitive description: @@ -1326,18 +1326,18 @@ packages: dependency: "direct dev" description: name: plugin_platform_interface - sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.1.8" pointycastle: dependency: transitive description: name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" url: "https://pub.dev" source: hosted - version: "3.7.3" + version: "3.7.4" pool: dependency: transitive description: @@ -1350,10 +1350,10 @@ packages: dependency: transitive description: name: postgrest - sha256: f190eddc5779842dfa529fa239ec4b1025f6f968c18052ba6fffc0aecac93e6b + sha256: "748ebffffb60b4eaa270955dcf3742a19a2b315344c41ff1b4a0ebcd322b5181" url: "https://pub.dev" source: hosted - version: "1.5.2" + version: "2.1.0" process: dependency: transitive description: @@ -1398,10 +1398,10 @@ packages: dependency: transitive description: name: realtime_client - sha256: "2027358cdbe65d5f1770c3f768aa9adecd394de486c5dbbd2cfe19d5c6dbbc4a" + sha256: "5831636c19802ba936093a35a7c5b745b130e268fa052e84b4b5290139d2ae03" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "2.0.0" recase: dependency: transitive description: @@ -1542,10 +1542,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" + sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" shared_preferences_linux: dependency: transitive description: @@ -1558,10 +1558,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a + sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_web: dependency: transitive description: @@ -1610,30 +1610,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" - sign_in_with_apple: - dependency: transitive - description: - name: sign_in_with_apple - sha256: "0975c23b9f8b30a80e27d5659a75993a093d4cb5f4eb7d23a9ccc586fea634e0" - url: "https://pub.dev" - source: hosted - version: "5.0.0" - sign_in_with_apple_platform_interface: - dependency: transitive - description: - name: sign_in_with_apple_platform_interface - sha256: a5883edee09ed6be19de19e7d9f618a617fe41a6fa03f76d082dfb787e9ea18d - url: "https://pub.dev" - source: hosted - version: "1.0.0" - sign_in_with_apple_web: - dependency: transitive - description: - name: sign_in_with_apple_web - sha256: "44b66528f576e77847c14999d5e881e17e7223b7b0625a185417829e5306f47a" - url: "https://pub.dev" - source: hosted - version: "1.0.1" simple_gesture_detector: dependency: transitive description: @@ -1667,10 +1643,10 @@ packages: dependency: transitive description: name: source_gen - sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" source_helper: dependency: transitive description: @@ -1715,18 +1691,18 @@ packages: dependency: transitive description: name: sqflite - sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" + sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 + sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" url: "https://pub.dev" source: hosted - version: "2.5.0+2" + version: "2.5.3" stack_trace: dependency: transitive description: @@ -1739,10 +1715,10 @@ packages: dependency: transitive description: name: storage_client - sha256: f02d4d8967bec77767dcaf9daf24ca5b8d5a9f1cc093f14dffb77930b52589a3 + sha256: b49ff2e1e6738c0ef445546d6ec77040829947f0c7ef0b115acb125656127c83 url: "https://pub.dev" source: hosted - version: "1.5.4" + version: "2.0.0" stream_channel: dependency: transitive description: @@ -1787,35 +1763,35 @@ packages: dependency: transitive description: name: supabase - sha256: "1434bb9375f88f51802dadf7b99568117c434f6a9af7f8a55e5be94c8b4da7c9" + sha256: f299614f6f44ee26ff1bd293869272fab79a7b087320c3b40572792b32ded06c url: "https://pub.dev" source: hosted - version: "1.11.11" + version: "2.0.6" supabase_flutter: dependency: "direct main" description: path: "packages/supabase_flutter" - ref: "4bd9139" - resolved-ref: "4bd9139826d9c5125b737a43ebe56211dd0a9be5" - url: "https://github.com/LucasXu0/supabase-flutter" + ref: "9b05eea" + resolved-ref: "9b05eeac559a1f2da6289e1d70b3fa89e262fa3c" + url: "https://github.com/supabase/supabase-flutter" source: git - version: "1.10.25" + version: "2.3.1" super_clipboard: dependency: "direct main" description: name: super_clipboard - sha256: "6281b19e4f4af4c4897c7b4117758164a21f63bbeee63da09c04d47823f8b228" + sha256: "77f044320934386e0b7a3911e05312426d7f33deb6e8cdb28886663430b0e5b0" url: "https://pub.dev" source: hosted - version: "0.8.1" + version: "0.8.4" super_native_extensions: dependency: transitive description: name: super_native_extensions - sha256: d6d445a644856430cdca70c233213065c413bc3046a3b1e21858e19087d01645 + sha256: "4699f5b00320290475953c914f823a8b44e10ed8c1e38ce5c8e8426336d11c15" url: "https://pub.dev" source: hosted - version: "0.8.1" + version: "0.8.4" sync_http: dependency: transitive description: @@ -1828,10 +1804,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.0+1" table_calendar: dependency: "direct main" description: @@ -1884,10 +1860,10 @@ packages: dependency: "direct main" description: name: time - sha256: "83427e11d9072e038364a5e4da559e85869b227cf699a541be0da74f14140124" + sha256: ad8e018a6c9db36cb917a031853a1aae49467a93e0d464683e029537d848c221 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" timing: dependency: transitive description: @@ -1940,42 +1916,42 @@ packages: dependency: "direct main" description: name: unsplash_client - sha256: "832011981ef358ef4f816f356375620791d24dc6e1afb33a37f066df9aaea537" + sha256: "9827f4c1036b7a6ac8cb3f404ac179df7441eee69371d9b17f181817fe502fd7" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.0" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86 + sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.4" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def" + sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "6.2.2" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3 + sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "6.2.4" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd" + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" url_launcher_macos: dependency: transitive description: @@ -1988,26 +1964,26 @@ packages: dependency: "direct dev" description: name: url_launcher_platform_interface - sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50" + sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.1" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "138bd45b3a456dcfafc46d1a146787424f8d2edfbf2809c9324361e58f851cf7" + sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.3" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc" + sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" url_protocol: dependency: "direct main" description: @@ -2021,10 +1997,10 @@ packages: dependency: "direct overridden" description: name: uuid - sha256: bb55f38968b9427ce5dcdb8aaaa41049282195e0cfa4cf48593572fa3d1f36bc + sha256: cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8 url: "https://pub.dev" source: hosted - version: "4.3.1" + version: "4.3.3" value_layout_builder: dependency: transitive description: @@ -2037,26 +2013,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43" + sha256: "18f6690295af52d081f6808f2f7c69f0eed6d7e23a71539d75f4aeb8f0062172" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7" + sha256: "531d20465c10dfac7f5cd90b60bbe4dd9921f1ec4ca54c83ebb176dbacb7bb2d" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26 + sha256: "03012b0a33775c5530576b70240308080e1d5050f0faf000118c20e6463bc0ad" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_math: dependency: transitive description: @@ -2101,10 +2077,10 @@ packages: dependency: transitive description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + sha256: "939ab60734a4f8fa95feacb55804fa278de28bdeef38e616dc08e44a84adea23" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.3" webdriver: dependency: transitive description: @@ -2121,46 +2097,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" - webview_flutter: - dependency: transitive - description: - name: webview_flutter - sha256: "42393b4492e629aa3a88618530a4a00de8bb46e50e7b3993fedbfdc5352f0dbf" - url: "https://pub.dev" - source: hosted - version: "4.4.2" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: "8326ee235f87605a2bfc444a4abc897f4abc78d83f054ba7d3d1074ce82b4fbf" - url: "https://pub.dev" - source: hosted - version: "3.12.1" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: "68e86162aa8fc646ae859e1585995c096c95fc2476881fa0c4a8d10f56013a5a" - url: "https://pub.dev" - source: hosted - version: "2.8.0" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: accdaaa49a2aca2dc3c3230907988954cdd23fed0a19525d6c9789d380f4dc76 - url: "https://pub.dev" - source: hosted - version: "3.9.4" win32: dependency: transitive description: name: win32 - sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574 + sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" url: "https://pub.dev" source: hosted - version: "5.1.1" + version: "5.2.0" win32_registry: dependency: transitive description: @@ -2173,18 +2117,18 @@ packages: dependency: "direct main" description: name: window_manager - sha256: dcc865277f26a7dad263a47d0e405d77e21f12cb71f30333a52710a408690bd7 + sha256: b3c895bdf936c77b83c5254bec2e6b3f066710c1f89c38b20b8acc382b525494 url: "https://pub.dev" source: hosted - version: "0.3.7" + version: "0.3.8" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" xml: dependency: transitive description: @@ -2205,10 +2149,10 @@ packages: dependency: transitive description: name: yet_another_json_isolate - sha256: "86fad76026c4241a32831d6c7febd8f9bded5019e2cd36c5b148499808d8307d" + sha256: e727502a2640d65b4b8a8a6cb48af9dd0cbe644ba4b3ee667c7f4afa0c1d6069 url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "2.0.0" sdks: dart: ">=3.2.0 <4.0.0" flutter: ">=3.18.0-0.2.pre" diff --git a/frontend/appflowy_flutter/pubspec.yaml b/frontend/appflowy_flutter/pubspec.yaml index d1cee683e0e4a..f1aeaac4e0723 100644 --- a/frontend/appflowy_flutter/pubspec.yaml +++ b/frontend/appflowy_flutter/pubspec.yaml @@ -48,7 +48,7 @@ dependencies: appflowy_editor_plugins: git: url: https://github.com/LucasXu0/appflowy_editor_plugins - ref: "6c49fea" + ref: "0223cca" appflowy_popover: path: packages/appflowy_popover @@ -106,8 +106,8 @@ dependencies: url_protocol: hive: ^2.2.3 hive_flutter: ^1.1.0 - super_clipboard: 0.8.1 - go_router: ^12.1.1 + super_clipboard: ^0.8.4 + go_router: ^13.1.0 string_validator: ^1.0.0 unsplash_client: ^2.1.1 flutter_emoji_mart: @@ -152,8 +152,8 @@ dependency_overrides: supabase_flutter: git: - url: https://github.com/LucasXu0/supabase-flutter - ref: 4bd9139 + url: https://github.com/supabase/supabase-flutter + ref: 9b05eea path: packages/supabase_flutter url_protocol: @@ -164,11 +164,8 @@ dependency_overrides: appflowy_editor: git: url: https://github.com/AppFlowy-IO/appflowy-editor.git - ref: "31a18c5" + ref: "e80edfc" - file: ^7.0.0 - - logger: ^2.0.0 uuid: ^4.1.0 # The "flutter_lints" package below contains a set of recommended lints to diff --git a/frontend/appflowy_flutter/test/unit_test/settings/shortcuts/settings_shortcut_service_test.dart b/frontend/appflowy_flutter/test/unit_test/settings/shortcuts/settings_shortcut_service_test.dart index d2291f01f8da4..3aea2755f4a8d 100644 --- a/frontend/appflowy_flutter/test/unit_test/settings/shortcuts/settings_shortcut_service_test.dart +++ b/frontend/appflowy_flutter/test/unit_test/settings/shortcuts/settings_shortcut_service_test.dart @@ -1,11 +1,12 @@ import 'dart:convert'; import 'dart:io' show File; + import 'package:appflowy/workspace/application/settings/shortcuts/settings_shortcuts_service.dart'; import 'package:appflowy/workspace/application/settings/shortcuts/shortcuts_model.dart'; import 'package:appflowy_editor/appflowy_editor.dart'; -import 'package:flutter_test/flutter_test.dart'; // ignore: depend_on_referenced_packages import 'package:file/memory.dart'; +import 'package:flutter_test/flutter_test.dart'; void main() { late SettingsShortcutService service; @@ -23,7 +24,7 @@ void main() { "command":"alt+arrow up" }, { - "key":"move the cursor forward one character", + "key":"move the cursor backward one character", "command":"alt+arrow left" }, { @@ -134,7 +135,7 @@ void main() { test('updateCommandShortcuts works properly', () async { //updating one of standard command shortcut event. - const kKey = "move the cursor forward one character"; + const kKey = "move the cursor backward one character"; const oldCommand = "arrow left"; const newCommand = "alt+arrow left"; final currentCommandShortcuts = standardCommandShortcutEvents; diff --git a/frontend/appflowy_flutter/test/widget_test/workspace/settings/settings_customize_shortcuts_view_test.dart b/frontend/appflowy_flutter/test/widget_test/workspace/settings/settings_customize_shortcuts_view_test.dart index 8db8da3bc7d04..8d23dabf3ec6c 100644 --- a/frontend/appflowy_flutter/test/widget_test/workspace/settings/settings_customize_shortcuts_view_test.dart +++ b/frontend/appflowy_flutter/test/widget_test/workspace/settings/settings_customize_shortcuts_view_test.dart @@ -66,21 +66,25 @@ void main() { final dummyShortcuts = [ CommandShortcutEvent( key: 'Copy', + getDescription: () => 'Copy', command: 'ctrl+c', handler: dummyHandler, ), CommandShortcutEvent( key: 'Paste', + getDescription: () => 'Paste', command: 'ctrl+v', handler: dummyHandler, ), CommandShortcutEvent( key: 'Undo', + getDescription: () => 'Undo', command: 'ctrl+z', handler: dummyHandler, ), CommandShortcutEvent( key: 'Redo', + getDescription: () => 'Redo', command: 'ctrl+y', handler: dummyHandler, ), diff --git a/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_tile_test.dart b/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_tile_test.dart index e3003949b6017..9f0e28effcc58 100644 --- a/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_tile_test.dart +++ b/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_tile_test.dart @@ -10,6 +10,7 @@ void main() { final shortcut = CommandShortcutEvent( key: 'Copy', + getDescription: () => 'Copy', command: 'ctrl+c', handler: dummyHandler, ); diff --git a/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_view_test.dart b/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_view_test.dart index a9682dd862ca1..ed1097a64b5f0 100644 --- a/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_view_test.dart +++ b/frontend/appflowy_flutter/test/widget_test/workspace/settings/shortcuts_list_view_test.dart @@ -10,21 +10,25 @@ void main() { final dummyShortcuts = [ CommandShortcutEvent( key: 'Copy', + getDescription: () => 'Copy', command: 'ctrl+c', handler: dummyHandler, ), CommandShortcutEvent( key: 'Paste', + getDescription: () => 'Paste', command: 'ctrl+v', handler: dummyHandler, ), CommandShortcutEvent( key: 'Undo', + getDescription: () => 'Undo', command: 'ctrl+z', handler: dummyHandler, ), CommandShortcutEvent( key: 'Redo', + getDescription: () => 'Redo', command: 'ctrl+y', handler: dummyHandler, ), diff --git a/frontend/resources/translations/en.json b/frontend/resources/translations/en.json index 7d6a1a158bf22..a060b98c18b83 100644 --- a/frontend/resources/translations/en.json +++ b/frontend/resources/translations/en.json @@ -787,7 +787,9 @@ "toContinue": "to continue", "newDatabase": "New Database", "linkToDatabase": "Link to Database" - } + }, + "date": "Date", + "emoji": "Emoji" }, "textBlock": { "placeholder": "Type '/' for commands" diff --git a/frontend/scripts/makefile/mobile.toml b/frontend/scripts/makefile/mobile.toml index 285290b5c4390..62214d7541f7a 100644 --- a/frontend/scripts/makefile/mobile.toml +++ b/frontend/scripts/makefile/mobile.toml @@ -56,7 +56,7 @@ script = [ """ cd rust-lib/ rustup show - if [ "${BUILD_FLAG}" == "debug" ]; then + if [ "${BUILD_FLAG}" = "debug" ]; then echo "🚀 🚀 🚀 Building for debug" cargo ndk -t arm64-v8a -t x86_64 -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi else