fix tab state issues
This commit is contained in:
@@ -144,7 +144,7 @@ class TabRepository extends _$TabRepository {
|
||||
|
||||
final unassignedTabs = await ref
|
||||
.read(containerRepositoryProvider.notifier)
|
||||
.getContainerTabIds(currentContainerId);
|
||||
.getContainerTabIds(null);
|
||||
|
||||
if (unassignedTabs.isNotEmpty) {
|
||||
return _tabsService.selectTab(tabId: unassignedTabs.first);
|
||||
|
||||
@@ -6,7 +6,7 @@ part of 'tab.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$tabRepositoryHash() => r'a798385b50c101e41b9789e92181cbd5b6188246';
|
||||
String _$tabRepositoryHash() => r'10768bd2c880edd40f82ed49532d9e2e2043e61f';
|
||||
|
||||
/// See also [TabRepository].
|
||||
@ProviderFor(TabRepository)
|
||||
|
||||
+2
-7
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:lensai/features/geckoview/domain/entities/states/tab.dart';
|
||||
import 'package:lensai/features/geckoview/features/browser/presentation/widgets/tab_icon.dart';
|
||||
import 'package:skeletonizer/skeletonizer.dart';
|
||||
import 'package:text_scroll/text_scroll.dart';
|
||||
|
||||
@@ -45,13 +46,7 @@ class AppBarTitle extends StatelessWidget {
|
||||
onLongPress: onLongPress,
|
||||
child: Row(
|
||||
children: [
|
||||
Skeletonizer(
|
||||
enabled: tab.icon == null,
|
||||
child: Skeleton.replace(
|
||||
replacement: const Bone.icon(size: 16),
|
||||
child: RawImage(image: tab.icon?.value, height: 16, width: 16),
|
||||
),
|
||||
),
|
||||
TabIcon(state: tab),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(
|
||||
child: Column(
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:lensai/domain/services/generic_website.dart';
|
||||
import 'package:lensai/features/geckoview/domain/entities/states/tab.dart';
|
||||
import 'package:lensai/presentation/hooks/cached_future.dart';
|
||||
import 'package:skeletonizer/skeletonizer.dart';
|
||||
|
||||
class TabIcon extends HookConsumerWidget {
|
||||
final TabState state;
|
||||
|
||||
final double iconSize;
|
||||
|
||||
const TabIcon({super.key, required this.state, this.iconSize = 16});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final icon = useCachedFuture(() async {
|
||||
if (state.icon != null) {
|
||||
return state.icon!.value;
|
||||
}
|
||||
|
||||
final icon = await ref
|
||||
.read(genericWebsiteServiceProvider.notifier)
|
||||
.getCachedIcon(state.url);
|
||||
|
||||
return icon?.image.value;
|
||||
});
|
||||
|
||||
return Skeletonizer(
|
||||
enabled:
|
||||
icon.connectionState != ConnectionState.done && icon.data == null,
|
||||
child: Skeleton.replace(
|
||||
replacement: Bone.icon(size: iconSize),
|
||||
child: RawImage(image: icon.data, height: iconSize, width: iconSize),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:lensai/features/geckoview/domain/entities/states/tab.dart';
|
||||
import 'package:lensai/features/geckoview/domain/providers/tab_state.dart';
|
||||
import 'package:lensai/features/geckoview/domain/repositories/tab.dart';
|
||||
import 'package:lensai/features/geckoview/features/browser/presentation/widgets/tab_icon.dart';
|
||||
|
||||
class TabPreview extends StatelessWidget {
|
||||
final TabState tab;
|
||||
@@ -66,7 +67,7 @@ class TabPreview extends StatelessWidget {
|
||||
Row(
|
||||
children: [
|
||||
const SizedBox(width: 6.0),
|
||||
RawImage(image: tab.icon?.value, height: 16, width: 16),
|
||||
TabIcon(state: tab),
|
||||
const SizedBox(width: 6.0),
|
||||
Expanded(
|
||||
child: Text(
|
||||
|
||||
Reference in New Issue
Block a user