diff --git a/app/lib/features/geckoview/domain/entities/states/tab.dart b/app/lib/features/geckoview/domain/entities/states/tab.dart index 2dd48ce4..f8db3a22 100644 --- a/app/lib/features/geckoview/domain/entities/states/tab.dart +++ b/app/lib/features/geckoview/domain/entities/states/tab.dart @@ -42,6 +42,8 @@ class TabState extends WebPageInfo { @override String get title => super.title!; + String get titleOrAuthority => (title.isNotEmpty) ? title : url.authority; + final EquatableImage? icon; @override diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart index da4c6a74..a4267ba3 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_menu.dart @@ -151,7 +151,7 @@ class TabMenu extends HookConsumerWidget { await BookmarkEntryAddRoute( bookmarkInfo: jsonEncode( BookmarkInfo( - title: tabState.title, + title: tabState.titleOrAuthority, url: tabState.url.toString(), ).encode(), ), diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart index 53c00a12..3c7ff3ca 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart @@ -152,7 +152,7 @@ class TabPreview extends HookConsumerWidget { padding: const EdgeInsets.only(left: 6.0, top: 2.0), child: Text( overflow: TextOverflow.ellipsis, - tabState.title, + tabState.titleOrAuthority, maxLines: 2, style: tabState.isPrivate ? const TextStyle(color: Colors.white) @@ -167,15 +167,13 @@ class TabPreview extends HookConsumerWidget { return child!; }, menuChildren: [ - ?onDeleteAll.mapNotNull( - (value) => MenuItemButton( - onPressed: () { - value(tabState.url.host); - }, + MenuItemButton( + onPressed: () { + onDeleteAll?.call(tabState.url.host); + }, - leadingIcon: const Icon(MdiIcons.closeBoxMultiple), - child: Text('Close all from ${tabState.url.host}'), - ), + leadingIcon: const Icon(MdiIcons.closeBoxMultiple), + child: Text('Close all from ${tabState.url.host}'), ), ], child: IconButton( @@ -184,13 +182,15 @@ class TabPreview extends HookConsumerWidget { vertical: -4.0, ), onPressed: onDelete, - onLongPress: () { - if (extendedDeleteMenuController.isOpen) { - extendedDeleteMenuController.close(); - } else { - extendedDeleteMenuController.open(); - } - }, + onLongPress: onDeleteAll != null + ? () { + if (extendedDeleteMenuController.isOpen) { + extendedDeleteMenuController.close(); + } else { + extendedDeleteMenuController.open(); + } + } + : null, icon: const Icon(Icons.close), ), ), diff --git a/app/lib/presentation/widgets/website_title_tile.dart b/app/lib/presentation/widgets/website_title_tile.dart index c659b9e0..5825d1d4 100644 --- a/app/lib/presentation/widgets/website_title_tile.dart +++ b/app/lib/presentation/widgets/website_title_tile.dart @@ -55,7 +55,7 @@ class WebsiteTitleTile extends HookConsumerWidget { ), contentPadding: EdgeInsets.zero, title: Text( - info.title.whenNotEmpty ?? 'Untitled', + info.title.whenNotEmpty ?? info.url.authority, maxLines: 6, overflow: TextOverflow.ellipsis, ), @@ -77,7 +77,7 @@ class WebsiteTitleTile extends HookConsumerWidget { width: 24, ), contentPadding: EdgeInsets.zero, - title: Text(initialTabState.title.whenNotEmpty ?? 'Untitled'), + title: Text(initialTabState.titleOrAuthority), subtitle: UriBreadcrumb(uri: initialTabState.url), ), ),