diff --git a/app/lib/features/geckoview/features/browser/domain/providers.g.dart b/app/lib/features/geckoview/features/browser/domain/providers.g.dart index ebba51df..31306edf 100644 --- a/app/lib/features/geckoview/features/browser/domain/providers.g.dart +++ b/app/lib/features/geckoview/features/browser/domain/providers.g.dart @@ -706,7 +706,7 @@ final class FilteredTabPreviewsProvider } String _$filteredTabPreviewsHash() => - r'f2958369b4270f4c8165526c0ffad22f41ec0491'; + r'9fbf6774433e62ce9b63ef66f6db3446e6182109'; final class FilteredTabPreviewsFamily extends $Family with diff --git a/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart b/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart index 6bafcbb7..1e2ae26a 100644 --- a/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart +++ b/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart @@ -164,14 +164,18 @@ Stream selectedContainerData(Ref ref) { } @Riverpod() -AsyncValue selectedContainerTabCount(Ref ref) { +Future selectedContainerTabCount(Ref ref) async { final selectedContainer = ref.watch(selectedContainerProvider); - final tabCount = ref.watch( - containerTabCountProvider( + + if (selectedContainer == null) { + return 0; + } + + // Use selectAsync to avoid UnmountedRefException when container changes + return ref.watch( + watchContainerTabIdsProvider( // ignore: provider_parameters ContainerFilterById(containerId: selectedContainer), - ), + ).selectAsync((tabs) => tabs.length), ); - - return tabCount; } diff --git a/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.g.dart b/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.g.dart index 623345e8..f3350b5c 100644 --- a/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.g.dart +++ b/app/lib/features/geckoview/features/tabs/domain/providers/selected_container.g.dart @@ -106,9 +106,8 @@ String _$selectedContainerDataHash() => const selectedContainerTabCountProvider = SelectedContainerTabCountProvider._(); final class SelectedContainerTabCountProvider - extends - $FunctionalProvider, AsyncValue, AsyncValue> - with $Provider> { + extends $FunctionalProvider, int, FutureOr> + with $FutureModifier, $FutureProvider { const SelectedContainerTabCountProvider._() : super( from: null, @@ -125,22 +124,14 @@ final class SelectedContainerTabCountProvider @$internal @override - $ProviderElement> $createElement($ProviderPointer pointer) => - $ProviderElement(pointer); + $FutureProviderElement $createElement($ProviderPointer pointer) => + $FutureProviderElement(pointer); @override - AsyncValue create(Ref ref) { + FutureOr create(Ref ref) { return selectedContainerTabCount(ref); } - - /// {@macro riverpod.override_with_value} - Override overrideWithValue(AsyncValue value) { - return $ProviderOverride( - origin: this, - providerOverride: $SyncValueProvider>(value), - ); - } } String _$selectedContainerTabCountHash() => - r'0fd457793f7870050f81c54d2fbcc81aca60f394'; + r'36efadeaa356e34cfdb6c07dbba73eed6d2ad6ca';