fix tab state issues
This commit is contained in:
@@ -144,7 +144,7 @@ class TabRepository extends _$TabRepository {
|
|||||||
|
|
||||||
final unassignedTabs = await ref
|
final unassignedTabs = await ref
|
||||||
.read(containerRepositoryProvider.notifier)
|
.read(containerRepositoryProvider.notifier)
|
||||||
.getContainerTabIds(currentContainerId);
|
.getContainerTabIds(null);
|
||||||
|
|
||||||
if (unassignedTabs.isNotEmpty) {
|
if (unassignedTabs.isNotEmpty) {
|
||||||
return _tabsService.selectTab(tabId: unassignedTabs.first);
|
return _tabsService.selectTab(tabId: unassignedTabs.first);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ part of 'tab.dart';
|
|||||||
// RiverpodGenerator
|
// RiverpodGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$tabRepositoryHash() => r'a798385b50c101e41b9789e92181cbd5b6188246';
|
String _$tabRepositoryHash() => r'10768bd2c880edd40f82ed49532d9e2e2043e61f';
|
||||||
|
|
||||||
/// See also [TabRepository].
|
/// See also [TabRepository].
|
||||||
@ProviderFor(TabRepository)
|
@ProviderFor(TabRepository)
|
||||||
|
|||||||
+2
-7
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.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/domain/entities/states/tab.dart';
|
||||||
|
import 'package:lensai/features/geckoview/features/browser/presentation/widgets/tab_icon.dart';
|
||||||
import 'package:skeletonizer/skeletonizer.dart';
|
import 'package:skeletonizer/skeletonizer.dart';
|
||||||
import 'package:text_scroll/text_scroll.dart';
|
import 'package:text_scroll/text_scroll.dart';
|
||||||
|
|
||||||
@@ -45,13 +46,7 @@ class AppBarTitle extends StatelessWidget {
|
|||||||
onLongPress: onLongPress,
|
onLongPress: onLongPress,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Skeletonizer(
|
TabIcon(state: tab),
|
||||||
enabled: tab.icon == null,
|
|
||||||
child: Skeleton.replace(
|
|
||||||
replacement: const Bone.icon(size: 16),
|
|
||||||
child: RawImage(image: tab.icon?.value, height: 16, width: 16),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
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/entities/states/tab.dart';
|
||||||
import 'package:lensai/features/geckoview/domain/providers/tab_state.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/domain/repositories/tab.dart';
|
||||||
|
import 'package:lensai/features/geckoview/features/browser/presentation/widgets/tab_icon.dart';
|
||||||
|
|
||||||
class TabPreview extends StatelessWidget {
|
class TabPreview extends StatelessWidget {
|
||||||
final TabState tab;
|
final TabState tab;
|
||||||
@@ -66,7 +67,7 @@ class TabPreview extends StatelessWidget {
|
|||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(width: 6.0),
|
const SizedBox(width: 6.0),
|
||||||
RawImage(image: tab.icon?.value, height: 16, width: 16),
|
TabIcon(state: tab),
|
||||||
const SizedBox(width: 6.0),
|
const SizedBox(width: 6.0),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|||||||
Reference in New Issue
Block a user