From 115ae27ab1e41245d5821a267350c5fe8540046a Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Mon, 29 Jul 2024 14:30:11 +0800 Subject: [PATCH] fix: missing system font display (#5825) * fix: missing system font display * fix: integration test * fix: cloud integration test --- .../shared/editor_test_operations.dart | 15 +- .../integration_test/shared/settings.dart | 10 +- .../mobile_toolbar_v3/aa_menu/_font_item.dart | 2 +- .../settings/pages/settings_account_view.dart | 141 +++++++++--------- 4 files changed, 92 insertions(+), 76 deletions(-) diff --git a/frontend/appflowy_flutter/integration_test/shared/editor_test_operations.dart b/frontend/appflowy_flutter/integration_test/shared/editor_test_operations.dart index d942614402..0442967f15 100644 --- a/frontend/appflowy_flutter/integration_test/shared/editor_test_operations.dart +++ b/frontend/appflowy_flutter/integration_test/shared/editor_test_operations.dart @@ -1,9 +1,6 @@ import 'dart:async'; import 'dart:ui'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; - import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/plugins/base/emoji/emoji_picker.dart'; import 'package:appflowy/plugins/base/emoji/emoji_skin_tone.dart'; @@ -17,6 +14,8 @@ import 'package:appflowy/plugins/document/presentation/editor_plugins/image/uplo import 'package:appflowy/plugins/inline_actions/widgets/inline_actions_handler.dart'; import 'package:appflowy_editor/appflowy_editor.dart' hide Log; import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_emoji_mart/flutter_emoji_mart.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -172,7 +171,17 @@ class EditorOperations { /// /// Must call [showSlashMenu] first. Future tapSlashMenuItemWithName(String name) async { + final slashMenu = find + .ancestor( + of: find.byType(SelectionMenuItemWidget), + matching: find.byWidgetPredicate( + (widget) => widget is Scrollable, + ), + ) + .first; final slashMenuItem = find.text(name, findRichText: true); + await tester.scrollUntilVisible(slashMenuItem, 200, scrollable: slashMenu); + // await tester.ensureVisible(slashMenuItem); await tester.tapButton(slashMenuItem); } diff --git a/frontend/appflowy_flutter/integration_test/shared/settings.dart b/frontend/appflowy_flutter/integration_test/shared/settings.dart index 34684aab1a..9dec3209a4 100644 --- a/frontend/appflowy_flutter/integration_test/shared/settings.dart +++ b/frontend/appflowy_flutter/integration_test/shared/settings.dart @@ -12,17 +12,23 @@ import 'package:flowy_infra_ui/style_widget/text_field.dart'; import 'package:flutter_test/flutter_test.dart'; import '../desktop/board/board_hide_groups_test.dart'; - import 'base.dart'; import 'common_operations.dart'; extension AppFlowySettings on WidgetTester { /// Open settings page Future openSettings() async { + final settingsDialog = find.byType(SettingsDialog); + // tap empty area to close the settings page + while (settingsDialog.evaluate().isNotEmpty) { + await tapAt(Offset.zero); + await pumpAndSettle(); + } + final settingsButton = find.byType(UserSettingButton); expect(settingsButton, findsOneWidget); await tapButton(settingsButton); - final settingsDialog = find.byType(SettingsDialog); + expect(settingsDialog, findsOneWidget); return; } diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mobile_toolbar_v3/aa_menu/_font_item.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mobile_toolbar_v3/aa_menu/_font_item.dart index b1004a3eae..96431996f5 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mobile_toolbar_v3/aa_menu/_font_item.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mobile_toolbar_v3/aa_menu/_font_item.dart @@ -75,7 +75,7 @@ class FontFamilyItem extends StatelessWidget { } }); }, - text: (fontFamily ?? systemFonFamily).parseFontFamilyName(), + text: (fontFamily ?? systemFonFamily).fontFamilyDisplayName, fontFamily: fontFamily ?? systemFonFamily, backgroundColor: theme.toolbarMenuItemBackgroundColor, isSelected: false, diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/pages/settings_account_view.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/pages/settings_account_view.dart index c914dec286..3e9c445068 100644 --- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/pages/settings_account_view.dart +++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/pages/settings_account_view.dart @@ -1,6 +1,3 @@ -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; - import 'package:appflowy/env/cloud_env.dart'; import 'package:appflowy/generated/flowy_svgs.g.dart'; import 'package:appflowy/generated/locale_keys.g.dart'; @@ -22,6 +19,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/hover.dart'; import 'package:flowy_infra_ui/widget/flowy_tooltip.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class SettingsAccountView extends StatefulWidget { @@ -244,80 +243,82 @@ class SignInOutButton extends StatelessWidget { child: Scaffold( body: Padding( padding: const EdgeInsets.all(24), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - GestureDetector( - onTap: Navigator.of(context).pop, - child: MouseRegion( - cursor: SystemMouseCursors.click, - child: Row( - children: [ - const FlowySvg( - FlowySvgs.arrow_back_m, - size: Size.square(24), - ), - const HSpace(8), - FlowyText.semibold( - LocaleKeys.button_back.tr(), - fontSize: 16, - ), - ], - ), - ), - ), - const Spacer(), - GestureDetector( - onTap: Navigator.of(context).pop, - child: MouseRegion( - cursor: SystemMouseCursors.click, - child: FlowySvg( - FlowySvgs.m_close_m, - size: const Size.square(20), - color: Theme.of(context).colorScheme.outline, - ), - ), - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Flexible( - child: FlowyText.medium( - LocaleKeys.settings_accountPage_login_loginLabel - .tr(), - fontSize: 22, - color: Theme.of(context).colorScheme.tertiary, - maxLines: null, - ), - ), - ], - ), - const VSpace(16), - const SignInWithMagicLinkButtons(), - if (isAuthEnabled) ...[ - const VSpace(20), + child: SingleChildScrollView( + child: Column( + children: [ Row( + mainAxisAlignment: MainAxisAlignment.end, children: [ - const Flexible(child: Divider(thickness: 1)), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - ), - child: FlowyText.regular( - LocaleKeys.signIn_or.tr(), + GestureDetector( + onTap: Navigator.of(context).pop, + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: Row( + children: [ + const FlowySvg( + FlowySvgs.arrow_back_m, + size: Size.square(24), + ), + const HSpace(8), + FlowyText.semibold( + LocaleKeys.button_back.tr(), + fontSize: 16, + ), + ], + ), + ), + ), + const Spacer(), + GestureDetector( + onTap: Navigator.of(context).pop, + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: FlowySvg( + FlowySvgs.m_close_m, + size: const Size.square(20), + color: Theme.of(context).colorScheme.outline, + ), ), ), - const Flexible(child: Divider(thickness: 1)), ], ), - const VSpace(10), - SettingThirdPartyLogin(didLogin: onAction), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Flexible( + child: FlowyText.medium( + LocaleKeys.settings_accountPage_login_loginLabel + .tr(), + fontSize: 22, + color: Theme.of(context).colorScheme.tertiary, + maxLines: null, + ), + ), + ], + ), + const VSpace(16), + const SignInWithMagicLinkButtons(), + if (isAuthEnabled) ...[ + const VSpace(20), + Row( + children: [ + const Flexible(child: Divider(thickness: 1)), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + ), + child: FlowyText.regular( + LocaleKeys.signIn_or.tr(), + ), + ), + const Flexible(child: Divider(thickness: 1)), + ], + ), + const VSpace(10), + SettingThirdPartyLogin(didLogin: onAction), + ], ], - ], + ), ), ), ),