fix tree view issues and improve providers
This commit is contained in:
@@ -85,7 +85,9 @@ EquatableValue<List<String>> availableTabIds(
|
|||||||
ContainerFilter containerFilter,
|
ContainerFilter containerFilter,
|
||||||
) {
|
) {
|
||||||
final containerTabs = ref.watch(
|
final containerTabs = ref.watch(
|
||||||
containerTabIdsProvider(containerFilter).select((value) => value.value),
|
watchContainerTabIdsProvider(
|
||||||
|
containerFilter,
|
||||||
|
).select((value) => value.value),
|
||||||
);
|
);
|
||||||
final tabList = ref.watch(tabListProvider);
|
final tabList = ref.watch(tabListProvider);
|
||||||
|
|
||||||
@@ -125,7 +127,7 @@ EquatableValue<List<TabEntity>> suggestedTabEntities(
|
|||||||
}
|
}
|
||||||
|
|
||||||
final excludedTabIds = ref.watch(
|
final excludedTabIds = ref.watch(
|
||||||
containerTabIdsProvider(
|
watchContainerTabIdsProvider(
|
||||||
// ignore: provider_parameters
|
// ignore: provider_parameters
|
||||||
ContainerFilterById(containerId: containerId),
|
ContainerFilterById(containerId: containerId),
|
||||||
).select((value) => EquatableValue(value.value)),
|
).select((value) => EquatableValue(value.value)),
|
||||||
@@ -187,7 +189,7 @@ EquatableValue<List<TabEntity>> seamlessFilteredTabEntities(
|
|||||||
if (tabSearchResults == null) {
|
if (tabSearchResults == null) {
|
||||||
if (groupTrees) {
|
if (groupTrees) {
|
||||||
final trees = ref.watch(
|
final trees = ref.watch(
|
||||||
tabTreesProvider.select(
|
watchTabTreesProvider.select(
|
||||||
(value) => EquatableValue(
|
(value) => EquatableValue(
|
||||||
value.value
|
value.value
|
||||||
?.map(
|
?.map(
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ final class AvailableTabIdsProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$availableTabIdsHash() => r'6926ca03f97b12ebf9a46a48ed3da1b2cd559a74';
|
String _$availableTabIdsHash() => r'aa166b471d45913df5166a3126abeb7c0d791412';
|
||||||
|
|
||||||
final class AvailableTabIdsFamily extends $Family
|
final class AvailableTabIdsFamily extends $Family
|
||||||
with
|
with
|
||||||
@@ -448,7 +448,7 @@ final class SuggestedTabEntitiesProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
String _$suggestedTabEntitiesHash() =>
|
String _$suggestedTabEntitiesHash() =>
|
||||||
r'534e78a9d1ddc5bace24dc0d9e5efee1292107c5';
|
r'6fb58bf4b7377f826377c88110c8e4aca9f6d6f9';
|
||||||
|
|
||||||
final class SuggestedTabEntitiesFamily extends $Family
|
final class SuggestedTabEntitiesFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<EquatableValue<List<TabEntity>>, String?> {
|
with $FunctionalFamilyOverride<EquatableValue<List<TabEntity>>, String?> {
|
||||||
@@ -552,7 +552,7 @@ final class SeamlessFilteredTabEntitiesProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
String _$seamlessFilteredTabEntitiesHash() =>
|
String _$seamlessFilteredTabEntitiesHash() =>
|
||||||
r'18b8ec876116eaa6e60fa321faba18a3bd7dd004';
|
r'eb6573514f55b598fbc1a91370079b4b8372c55e';
|
||||||
|
|
||||||
final class SeamlessFilteredTabEntitiesFamily extends $Family
|
final class SeamlessFilteredTabEntitiesFamily extends $Family
|
||||||
with
|
with
|
||||||
|
|||||||
@@ -48,13 +48,13 @@ class TabTreeDialog extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final selectedTabId = ref.watch(selectedTabProvider);
|
final selectedTabId = ref.watch(selectedTabProvider);
|
||||||
final tabs = ref.watch(tabDescendantsProvider(tabId));
|
final tabs = ref.watch(watchTabDescendantsProvider(tabId));
|
||||||
|
|
||||||
final graph = useMemoized(() {
|
final graph = useMemoized(() {
|
||||||
final graph = Graph()..isTree = true;
|
final graph = Graph()..isTree = true;
|
||||||
|
|
||||||
if (tabs.hasValue) {
|
if (tabs.hasValue) {
|
||||||
for (final MapEntry(:key, :value) in tabs.value!.entries) {
|
for (final MapEntry(:key, :value) in tabs.requireValue.entries) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
final current = Node.Id(key);
|
final current = Node.Id(key);
|
||||||
final parent = Node.Id(value);
|
final parent = Node.Id(value);
|
||||||
@@ -84,12 +84,7 @@ class TabTreeDialog extends HookConsumerWidget {
|
|||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: const Color(0x44000000),
|
backgroundColor: const Color(0x44000000),
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
leading: IconButton(
|
leading: const CloseButton(),
|
||||||
onPressed: () {
|
|
||||||
context.pop();
|
|
||||||
},
|
|
||||||
icon: const Icon(Icons.close),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
floatingActionButton: FloatingActionButton(
|
floatingActionButton: FloatingActionButton(
|
||||||
child: const Icon(MdiIcons.target),
|
child: const Icon(MdiIcons.target),
|
||||||
@@ -145,6 +140,11 @@ class TabTreeDialog extends HookConsumerWidget {
|
|||||||
|
|
||||||
BrowserRoute().go(context);
|
BrowserRoute().go(context);
|
||||||
},
|
},
|
||||||
|
onBeforeDelete: () {
|
||||||
|
if (graph.nodes.length <= 2) {
|
||||||
|
context.pop();
|
||||||
|
}
|
||||||
|
},
|
||||||
sourceSearchQuery: null,
|
sourceSearchQuery: null,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import 'package:weblibre/features/geckoview/features/browser/presentation/widget
|
|||||||
import 'package:weblibre/features/geckoview/features/find_in_page/domain/entities/find_in_page_state.dart';
|
import 'package:weblibre/features/geckoview/features/find_in_page/domain/entities/find_in_page_state.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/find_in_page/presentation/controllers/find_in_page.dart';
|
import 'package:weblibre/features/geckoview/features/find_in_page/presentation/controllers/find_in_page.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_entity.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_entity.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart';
|
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart';
|
||||||
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
||||||
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
||||||
@@ -266,6 +265,7 @@ class SingleTabPreview extends HookConsumerWidget {
|
|||||||
final double deleteThreshold;
|
final double deleteThreshold;
|
||||||
|
|
||||||
final void Function() onClose;
|
final void Function() onClose;
|
||||||
|
final void Function()? onBeforeDelete;
|
||||||
|
|
||||||
const SingleTabPreview({
|
const SingleTabPreview({
|
||||||
required this.tabId,
|
required this.tabId,
|
||||||
@@ -273,6 +273,7 @@ class SingleTabPreview extends HookConsumerWidget {
|
|||||||
required this.onClose,
|
required this.onClose,
|
||||||
required this.sourceSearchQuery,
|
required this.sourceSearchQuery,
|
||||||
this.deleteThreshold = 100,
|
this.deleteThreshold = 100,
|
||||||
|
this.onBeforeDelete,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -364,6 +365,8 @@ class SingleTabPreview extends HookConsumerWidget {
|
|||||||
// );
|
// );
|
||||||
// },
|
// },
|
||||||
onDelete: () async {
|
onDelete: () async {
|
||||||
|
onBeforeDelete?.call();
|
||||||
|
|
||||||
await ref.read(tabRepositoryProvider.notifier).closeTab(tabId);
|
await ref.read(tabRepositoryProvider.notifier).closeTab(tabId);
|
||||||
|
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
@@ -495,6 +498,8 @@ class TabTreePreview extends HookConsumerWidget {
|
|||||||
await ref
|
await ref
|
||||||
.read(tabRepositoryProvider.notifier)
|
.read(tabRepositoryProvider.notifier)
|
||||||
.selectTab(entity.tabId);
|
.selectTab(entity.tabId);
|
||||||
|
} else {
|
||||||
|
onClose();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// onDeleteAll: (host) async {
|
// onDeleteAll: (host) async {
|
||||||
@@ -516,9 +521,9 @@ class TabTreePreview extends HookConsumerWidget {
|
|||||||
// );
|
// );
|
||||||
// },
|
// },
|
||||||
onDelete: () async {
|
onDelete: () async {
|
||||||
final tabs = await ref.read(
|
final tabs = await ref
|
||||||
tabDescendantsProvider(entity.rootId).future,
|
.read(tabDataRepositoryProvider.notifier)
|
||||||
);
|
.getTabDescendants(entity.rootId);
|
||||||
|
|
||||||
await ref
|
await ref
|
||||||
.read(tabRepositoryProvider.notifier)
|
.read(tabRepositoryProvider.notifier)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import 'package:weblibre/features/search/util/tokenized_filter.dart';
|
|||||||
part 'providers.g.dart';
|
part 'providers.g.dart';
|
||||||
|
|
||||||
@Riverpod(keepAlive: true)
|
@Riverpod(keepAlive: true)
|
||||||
Stream<List<ContainerDataWithCount>> containersWithCount(Ref ref) {
|
Stream<List<ContainerDataWithCount>> watchContainersWithCount(Ref ref) {
|
||||||
final db = ref.watch(tabDatabaseProvider);
|
final db = ref.watch(tabDatabaseProvider);
|
||||||
return db.definitionsDrift.containersWithCount().watch();
|
return db.definitionsDrift.containersWithCount().watch();
|
||||||
}
|
}
|
||||||
@@ -40,7 +40,7 @@ AsyncValue<List<ContainerDataWithCount>> matchSortedContainersWithCount(
|
|||||||
String? searchText,
|
String? searchText,
|
||||||
) {
|
) {
|
||||||
return ref.watch(
|
return ref.watch(
|
||||||
containersWithCountProvider.select((value) {
|
watchContainersWithCountProvider.select((value) {
|
||||||
if (searchText.isEmpty) {
|
if (searchText.isEmpty) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@@ -57,7 +57,10 @@ AsyncValue<List<ContainerDataWithCount>> matchSortedContainersWithCount(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Riverpod()
|
@Riverpod()
|
||||||
Stream<List<String>> containerTabIds(Ref ref, ContainerFilter containerFilter) {
|
Stream<List<String>> watchContainerTabIds(
|
||||||
|
Ref ref,
|
||||||
|
ContainerFilter containerFilter,
|
||||||
|
) {
|
||||||
final db = ref.watch(tabDatabaseProvider);
|
final db = ref.watch(tabDatabaseProvider);
|
||||||
|
|
||||||
switch (containerFilter) {
|
switch (containerFilter) {
|
||||||
@@ -71,18 +74,20 @@ Stream<List<String>> containerTabIds(Ref ref, ContainerFilter containerFilter) {
|
|||||||
@Riverpod()
|
@Riverpod()
|
||||||
Future<int> containerTabCount(Ref ref, ContainerFilter containerFilter) {
|
Future<int> containerTabCount(Ref ref, ContainerFilter containerFilter) {
|
||||||
return ref.watch(
|
return ref.watch(
|
||||||
containerTabIdsProvider(containerFilter).selectAsync((tabs) => tabs.length),
|
watchContainerTabIdsProvider(
|
||||||
|
containerFilter,
|
||||||
|
).selectAsync((tabs) => tabs.length),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Riverpod()
|
@Riverpod()
|
||||||
Stream<List<TabTreesResult>> tabTrees(Ref ref) {
|
Stream<List<TabTreesResult>> watchTabTrees(Ref ref) {
|
||||||
final db = ref.watch(tabDatabaseProvider);
|
final db = ref.watch(tabDatabaseProvider);
|
||||||
return db.definitionsDrift.tabTrees().watch();
|
return db.definitionsDrift.tabTrees().watch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Riverpod()
|
@Riverpod()
|
||||||
Stream<Map<String, String?>> tabDescendants(Ref ref, String tabId) {
|
Stream<Map<String, String?>> watchTabDescendants(Ref ref, String tabId) {
|
||||||
final db = ref.watch(tabDatabaseProvider);
|
final db = ref.watch(tabDatabaseProvider);
|
||||||
return db.definitionsDrift.unorderedTabDescendants(tabId: tabId).watch().map((
|
return db.definitionsDrift.unorderedTabDescendants(tabId: tabId).watch().map((
|
||||||
results,
|
results,
|
||||||
@@ -94,13 +99,13 @@ Stream<Map<String, String?>> tabDescendants(Ref ref, String tabId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Riverpod()
|
@Riverpod()
|
||||||
Stream<List<TabData>> containerTabsData(Ref ref, String? containerId) {
|
Stream<List<TabData>> watchContainerTabsData(Ref ref, String? containerId) {
|
||||||
final db = ref.watch(tabDatabaseProvider);
|
final db = ref.watch(tabDatabaseProvider);
|
||||||
return db.containerDao.getContainerTabsData(containerId).watch();
|
return db.containerDao.getContainerTabsData(containerId).watch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Riverpod()
|
@Riverpod()
|
||||||
Stream<ContainerData?> containerData(Ref ref, String containerId) {
|
Stream<ContainerData?> watchContainerData(Ref ref, String containerId) {
|
||||||
final db = ref.watch(tabDatabaseProvider);
|
final db = ref.watch(tabDatabaseProvider);
|
||||||
return db.containerDao.getContainerData(containerId).watchSingleOrNull();
|
return db.containerDao.getContainerData(containerId).watchSingleOrNull();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ part of 'providers.dart';
|
|||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
// ignore_for_file: type=lint, type=warning
|
// ignore_for_file: type=lint, type=warning
|
||||||
|
|
||||||
@ProviderFor(containersWithCount)
|
@ProviderFor(watchContainersWithCount)
|
||||||
const containersWithCountProvider = ContainersWithCountProvider._();
|
const watchContainersWithCountProvider = WatchContainersWithCountProvider._();
|
||||||
|
|
||||||
final class ContainersWithCountProvider
|
final class WatchContainersWithCountProvider
|
||||||
extends
|
extends
|
||||||
$FunctionalProvider<
|
$FunctionalProvider<
|
||||||
AsyncValue<List<ContainerDataWithCount>>,
|
AsyncValue<List<ContainerDataWithCount>>,
|
||||||
@@ -22,19 +22,19 @@ final class ContainersWithCountProvider
|
|||||||
with
|
with
|
||||||
$FutureModifier<List<ContainerDataWithCount>>,
|
$FutureModifier<List<ContainerDataWithCount>>,
|
||||||
$StreamProvider<List<ContainerDataWithCount>> {
|
$StreamProvider<List<ContainerDataWithCount>> {
|
||||||
const ContainersWithCountProvider._()
|
const WatchContainersWithCountProvider._()
|
||||||
: super(
|
: super(
|
||||||
from: null,
|
from: null,
|
||||||
argument: null,
|
argument: null,
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'containersWithCountProvider',
|
name: r'watchContainersWithCountProvider',
|
||||||
isAutoDispose: false,
|
isAutoDispose: false,
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String debugGetCreateSourceHash() => _$containersWithCountHash();
|
String debugGetCreateSourceHash() => _$watchContainersWithCountHash();
|
||||||
|
|
||||||
@$internal
|
@$internal
|
||||||
@override
|
@override
|
||||||
@@ -44,12 +44,12 @@ final class ContainersWithCountProvider
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Stream<List<ContainerDataWithCount>> create(Ref ref) {
|
Stream<List<ContainerDataWithCount>> create(Ref ref) {
|
||||||
return containersWithCount(ref);
|
return watchContainersWithCount(ref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$containersWithCountHash() =>
|
String _$watchContainersWithCountHash() =>
|
||||||
r'757bb0102afedc07ef0f80a420b4c87cbdbed3e1';
|
r'50d8e9b39cb589b0b5f50d79cbe20b8d10d7a504';
|
||||||
|
|
||||||
@ProviderFor(matchSortedContainersWithCount)
|
@ProviderFor(matchSortedContainersWithCount)
|
||||||
const matchSortedContainersWithCountProvider =
|
const matchSortedContainersWithCountProvider =
|
||||||
@@ -118,7 +118,7 @@ final class MatchSortedContainersWithCountProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
String _$matchSortedContainersWithCountHash() =>
|
String _$matchSortedContainersWithCountHash() =>
|
||||||
r'bc2077602c3c1d86c5b916e4ad920053310993e4';
|
r'e66ca1d96a735155f582975ae05a90503e615882';
|
||||||
|
|
||||||
final class MatchSortedContainersWithCountFamily extends $Family
|
final class MatchSortedContainersWithCountFamily extends $Family
|
||||||
with
|
with
|
||||||
@@ -145,10 +145,10 @@ final class MatchSortedContainersWithCountFamily extends $Family
|
|||||||
String toString() => r'matchSortedContainersWithCountProvider';
|
String toString() => r'matchSortedContainersWithCountProvider';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ProviderFor(containerTabIds)
|
@ProviderFor(watchContainerTabIds)
|
||||||
const containerTabIdsProvider = ContainerTabIdsFamily._();
|
const watchContainerTabIdsProvider = WatchContainerTabIdsFamily._();
|
||||||
|
|
||||||
final class ContainerTabIdsProvider
|
final class WatchContainerTabIdsProvider
|
||||||
extends
|
extends
|
||||||
$FunctionalProvider<
|
$FunctionalProvider<
|
||||||
AsyncValue<List<String>>,
|
AsyncValue<List<String>>,
|
||||||
@@ -156,23 +156,23 @@ final class ContainerTabIdsProvider
|
|||||||
Stream<List<String>>
|
Stream<List<String>>
|
||||||
>
|
>
|
||||||
with $FutureModifier<List<String>>, $StreamProvider<List<String>> {
|
with $FutureModifier<List<String>>, $StreamProvider<List<String>> {
|
||||||
const ContainerTabIdsProvider._({
|
const WatchContainerTabIdsProvider._({
|
||||||
required ContainerTabIdsFamily super.from,
|
required WatchContainerTabIdsFamily super.from,
|
||||||
required ContainerFilter super.argument,
|
required ContainerFilter super.argument,
|
||||||
}) : super(
|
}) : super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'containerTabIdsProvider',
|
name: r'watchContainerTabIdsProvider',
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String debugGetCreateSourceHash() => _$containerTabIdsHash();
|
String debugGetCreateSourceHash() => _$watchContainerTabIdsHash();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return r'containerTabIdsProvider'
|
return r'watchContainerTabIdsProvider'
|
||||||
''
|
''
|
||||||
'($argument)';
|
'($argument)';
|
||||||
}
|
}
|
||||||
@@ -186,12 +186,12 @@ final class ContainerTabIdsProvider
|
|||||||
@override
|
@override
|
||||||
Stream<List<String>> create(Ref ref) {
|
Stream<List<String>> create(Ref ref) {
|
||||||
final argument = this.argument as ContainerFilter;
|
final argument = this.argument as ContainerFilter;
|
||||||
return containerTabIds(ref, argument);
|
return watchContainerTabIds(ref, argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) {
|
bool operator ==(Object other) {
|
||||||
return other is ContainerTabIdsProvider && other.argument == argument;
|
return other is WatchContainerTabIdsProvider && other.argument == argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -200,24 +200,25 @@ final class ContainerTabIdsProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$containerTabIdsHash() => r'61716a2ae74ffa590c1498d259382e69e24ad7f1';
|
String _$watchContainerTabIdsHash() =>
|
||||||
|
r'25f73fe16fad7ec0121b2bee99ecbd8b6bf47791';
|
||||||
|
|
||||||
final class ContainerTabIdsFamily extends $Family
|
final class WatchContainerTabIdsFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<Stream<List<String>>, ContainerFilter> {
|
with $FunctionalFamilyOverride<Stream<List<String>>, ContainerFilter> {
|
||||||
const ContainerTabIdsFamily._()
|
const WatchContainerTabIdsFamily._()
|
||||||
: super(
|
: super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'containerTabIdsProvider',
|
name: r'watchContainerTabIdsProvider',
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
ContainerTabIdsProvider call(ContainerFilter containerFilter) =>
|
WatchContainerTabIdsProvider call(ContainerFilter containerFilter) =>
|
||||||
ContainerTabIdsProvider._(argument: containerFilter, from: this);
|
WatchContainerTabIdsProvider._(argument: containerFilter, from: this);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => r'containerTabIdsProvider';
|
String toString() => r'watchContainerTabIdsProvider';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ProviderFor(containerTabCount)
|
@ProviderFor(containerTabCount)
|
||||||
@@ -269,7 +270,7 @@ final class ContainerTabCountProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$containerTabCountHash() => r'586e83429b527b546d43232a58453635ab860d69';
|
String _$containerTabCountHash() => r'df4008a9c589936c8a0699b082ab23087ae9b85f';
|
||||||
|
|
||||||
final class ContainerTabCountFamily extends $Family
|
final class ContainerTabCountFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<FutureOr<int>, ContainerFilter> {
|
with $FunctionalFamilyOverride<FutureOr<int>, ContainerFilter> {
|
||||||
@@ -289,10 +290,10 @@ final class ContainerTabCountFamily extends $Family
|
|||||||
String toString() => r'containerTabCountProvider';
|
String toString() => r'containerTabCountProvider';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ProviderFor(tabTrees)
|
@ProviderFor(watchTabTrees)
|
||||||
const tabTreesProvider = TabTreesProvider._();
|
const watchTabTreesProvider = WatchTabTreesProvider._();
|
||||||
|
|
||||||
final class TabTreesProvider
|
final class WatchTabTreesProvider
|
||||||
extends
|
extends
|
||||||
$FunctionalProvider<
|
$FunctionalProvider<
|
||||||
AsyncValue<List<TabTreesResult>>,
|
AsyncValue<List<TabTreesResult>>,
|
||||||
@@ -302,19 +303,19 @@ final class TabTreesProvider
|
|||||||
with
|
with
|
||||||
$FutureModifier<List<TabTreesResult>>,
|
$FutureModifier<List<TabTreesResult>>,
|
||||||
$StreamProvider<List<TabTreesResult>> {
|
$StreamProvider<List<TabTreesResult>> {
|
||||||
const TabTreesProvider._()
|
const WatchTabTreesProvider._()
|
||||||
: super(
|
: super(
|
||||||
from: null,
|
from: null,
|
||||||
argument: null,
|
argument: null,
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'tabTreesProvider',
|
name: r'watchTabTreesProvider',
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String debugGetCreateSourceHash() => _$tabTreesHash();
|
String debugGetCreateSourceHash() => _$watchTabTreesHash();
|
||||||
|
|
||||||
@$internal
|
@$internal
|
||||||
@override
|
@override
|
||||||
@@ -324,16 +325,16 @@ final class TabTreesProvider
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Stream<List<TabTreesResult>> create(Ref ref) {
|
Stream<List<TabTreesResult>> create(Ref ref) {
|
||||||
return tabTrees(ref);
|
return watchTabTrees(ref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$tabTreesHash() => r'd9256293a97d5451c2ab881a30ae99c9e2178999';
|
String _$watchTabTreesHash() => r'a2be591acb6818ea8675a12d90e6c4684a0448a8';
|
||||||
|
|
||||||
@ProviderFor(tabDescendants)
|
@ProviderFor(watchTabDescendants)
|
||||||
const tabDescendantsProvider = TabDescendantsFamily._();
|
const watchTabDescendantsProvider = WatchTabDescendantsFamily._();
|
||||||
|
|
||||||
final class TabDescendantsProvider
|
final class WatchTabDescendantsProvider
|
||||||
extends
|
extends
|
||||||
$FunctionalProvider<
|
$FunctionalProvider<
|
||||||
AsyncValue<Map<String, String?>>,
|
AsyncValue<Map<String, String?>>,
|
||||||
@@ -343,23 +344,23 @@ final class TabDescendantsProvider
|
|||||||
with
|
with
|
||||||
$FutureModifier<Map<String, String?>>,
|
$FutureModifier<Map<String, String?>>,
|
||||||
$StreamProvider<Map<String, String?>> {
|
$StreamProvider<Map<String, String?>> {
|
||||||
const TabDescendantsProvider._({
|
const WatchTabDescendantsProvider._({
|
||||||
required TabDescendantsFamily super.from,
|
required WatchTabDescendantsFamily super.from,
|
||||||
required String super.argument,
|
required String super.argument,
|
||||||
}) : super(
|
}) : super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'tabDescendantsProvider',
|
name: r'watchTabDescendantsProvider',
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String debugGetCreateSourceHash() => _$tabDescendantsHash();
|
String debugGetCreateSourceHash() => _$watchTabDescendantsHash();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return r'tabDescendantsProvider'
|
return r'watchTabDescendantsProvider'
|
||||||
''
|
''
|
||||||
'($argument)';
|
'($argument)';
|
||||||
}
|
}
|
||||||
@@ -373,12 +374,12 @@ final class TabDescendantsProvider
|
|||||||
@override
|
@override
|
||||||
Stream<Map<String, String?>> create(Ref ref) {
|
Stream<Map<String, String?>> create(Ref ref) {
|
||||||
final argument = this.argument as String;
|
final argument = this.argument as String;
|
||||||
return tabDescendants(ref, argument);
|
return watchTabDescendants(ref, argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) {
|
bool operator ==(Object other) {
|
||||||
return other is TabDescendantsProvider && other.argument == argument;
|
return other is WatchTabDescendantsProvider && other.argument == argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -387,30 +388,31 @@ final class TabDescendantsProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$tabDescendantsHash() => r'c2c3fe18e9b47c64df9ae6c1cfde683f3231d53c';
|
String _$watchTabDescendantsHash() =>
|
||||||
|
r'8b20353888a851191d835784e24d7d4a6e898b72';
|
||||||
|
|
||||||
final class TabDescendantsFamily extends $Family
|
final class WatchTabDescendantsFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<Stream<Map<String, String?>>, String> {
|
with $FunctionalFamilyOverride<Stream<Map<String, String?>>, String> {
|
||||||
const TabDescendantsFamily._()
|
const WatchTabDescendantsFamily._()
|
||||||
: super(
|
: super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'tabDescendantsProvider',
|
name: r'watchTabDescendantsProvider',
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
TabDescendantsProvider call(String tabId) =>
|
WatchTabDescendantsProvider call(String tabId) =>
|
||||||
TabDescendantsProvider._(argument: tabId, from: this);
|
WatchTabDescendantsProvider._(argument: tabId, from: this);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => r'tabDescendantsProvider';
|
String toString() => r'watchTabDescendantsProvider';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ProviderFor(containerTabsData)
|
@ProviderFor(watchContainerTabsData)
|
||||||
const containerTabsDataProvider = ContainerTabsDataFamily._();
|
const watchContainerTabsDataProvider = WatchContainerTabsDataFamily._();
|
||||||
|
|
||||||
final class ContainerTabsDataProvider
|
final class WatchContainerTabsDataProvider
|
||||||
extends
|
extends
|
||||||
$FunctionalProvider<
|
$FunctionalProvider<
|
||||||
AsyncValue<List<TabData>>,
|
AsyncValue<List<TabData>>,
|
||||||
@@ -418,23 +420,23 @@ final class ContainerTabsDataProvider
|
|||||||
Stream<List<TabData>>
|
Stream<List<TabData>>
|
||||||
>
|
>
|
||||||
with $FutureModifier<List<TabData>>, $StreamProvider<List<TabData>> {
|
with $FutureModifier<List<TabData>>, $StreamProvider<List<TabData>> {
|
||||||
const ContainerTabsDataProvider._({
|
const WatchContainerTabsDataProvider._({
|
||||||
required ContainerTabsDataFamily super.from,
|
required WatchContainerTabsDataFamily super.from,
|
||||||
required String? super.argument,
|
required String? super.argument,
|
||||||
}) : super(
|
}) : super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'containerTabsDataProvider',
|
name: r'watchContainerTabsDataProvider',
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String debugGetCreateSourceHash() => _$containerTabsDataHash();
|
String debugGetCreateSourceHash() => _$watchContainerTabsDataHash();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return r'containerTabsDataProvider'
|
return r'watchContainerTabsDataProvider'
|
||||||
''
|
''
|
||||||
'($argument)';
|
'($argument)';
|
||||||
}
|
}
|
||||||
@@ -448,12 +450,13 @@ final class ContainerTabsDataProvider
|
|||||||
@override
|
@override
|
||||||
Stream<List<TabData>> create(Ref ref) {
|
Stream<List<TabData>> create(Ref ref) {
|
||||||
final argument = this.argument as String?;
|
final argument = this.argument as String?;
|
||||||
return containerTabsData(ref, argument);
|
return watchContainerTabsData(ref, argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) {
|
bool operator ==(Object other) {
|
||||||
return other is ContainerTabsDataProvider && other.argument == argument;
|
return other is WatchContainerTabsDataProvider &&
|
||||||
|
other.argument == argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -462,30 +465,31 @@ final class ContainerTabsDataProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$containerTabsDataHash() => r'2961c89fc9e16c8e6005342356ecf677fb2ff63c';
|
String _$watchContainerTabsDataHash() =>
|
||||||
|
r'4edbb3029f4ffb6181396d81d8076e0395ec2481';
|
||||||
|
|
||||||
final class ContainerTabsDataFamily extends $Family
|
final class WatchContainerTabsDataFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<Stream<List<TabData>>, String?> {
|
with $FunctionalFamilyOverride<Stream<List<TabData>>, String?> {
|
||||||
const ContainerTabsDataFamily._()
|
const WatchContainerTabsDataFamily._()
|
||||||
: super(
|
: super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'containerTabsDataProvider',
|
name: r'watchContainerTabsDataProvider',
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
ContainerTabsDataProvider call(String? containerId) =>
|
WatchContainerTabsDataProvider call(String? containerId) =>
|
||||||
ContainerTabsDataProvider._(argument: containerId, from: this);
|
WatchContainerTabsDataProvider._(argument: containerId, from: this);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => r'containerTabsDataProvider';
|
String toString() => r'watchContainerTabsDataProvider';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ProviderFor(containerData)
|
@ProviderFor(watchContainerData)
|
||||||
const containerDataProvider = ContainerDataFamily._();
|
const watchContainerDataProvider = WatchContainerDataFamily._();
|
||||||
|
|
||||||
final class ContainerDataProvider
|
final class WatchContainerDataProvider
|
||||||
extends
|
extends
|
||||||
$FunctionalProvider<
|
$FunctionalProvider<
|
||||||
AsyncValue<ContainerData?>,
|
AsyncValue<ContainerData?>,
|
||||||
@@ -493,23 +497,23 @@ final class ContainerDataProvider
|
|||||||
Stream<ContainerData?>
|
Stream<ContainerData?>
|
||||||
>
|
>
|
||||||
with $FutureModifier<ContainerData?>, $StreamProvider<ContainerData?> {
|
with $FutureModifier<ContainerData?>, $StreamProvider<ContainerData?> {
|
||||||
const ContainerDataProvider._({
|
const WatchContainerDataProvider._({
|
||||||
required ContainerDataFamily super.from,
|
required WatchContainerDataFamily super.from,
|
||||||
required String super.argument,
|
required String super.argument,
|
||||||
}) : super(
|
}) : super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'containerDataProvider',
|
name: r'watchContainerDataProvider',
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String debugGetCreateSourceHash() => _$containerDataHash();
|
String debugGetCreateSourceHash() => _$watchContainerDataHash();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return r'containerDataProvider'
|
return r'watchContainerDataProvider'
|
||||||
''
|
''
|
||||||
'($argument)';
|
'($argument)';
|
||||||
}
|
}
|
||||||
@@ -523,12 +527,12 @@ final class ContainerDataProvider
|
|||||||
@override
|
@override
|
||||||
Stream<ContainerData?> create(Ref ref) {
|
Stream<ContainerData?> create(Ref ref) {
|
||||||
final argument = this.argument as String;
|
final argument = this.argument as String;
|
||||||
return containerData(ref, argument);
|
return watchContainerData(ref, argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) {
|
bool operator ==(Object other) {
|
||||||
return other is ContainerDataProvider && other.argument == argument;
|
return other is WatchContainerDataProvider && other.argument == argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -537,24 +541,25 @@ final class ContainerDataProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$containerDataHash() => r'6adbec128876069189954832af35109b0779148c';
|
String _$watchContainerDataHash() =>
|
||||||
|
r'abd0e964a6444ed9be5da649a0f6a77bbbb54042';
|
||||||
|
|
||||||
final class ContainerDataFamily extends $Family
|
final class WatchContainerDataFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<Stream<ContainerData?>, String> {
|
with $FunctionalFamilyOverride<Stream<ContainerData?>, String> {
|
||||||
const ContainerDataFamily._()
|
const WatchContainerDataFamily._()
|
||||||
: super(
|
: super(
|
||||||
retry: null,
|
retry: null,
|
||||||
name: r'containerDataProvider',
|
name: r'watchContainerDataProvider',
|
||||||
dependencies: null,
|
dependencies: null,
|
||||||
$allTransitiveDependencies: null,
|
$allTransitiveDependencies: null,
|
||||||
isAutoDispose: true,
|
isAutoDispose: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
ContainerDataProvider call(String containerId) =>
|
WatchContainerDataProvider call(String containerId) =>
|
||||||
ContainerDataProvider._(argument: containerId, from: this);
|
WatchContainerDataProvider._(argument: containerId, from: this);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => r'containerDataProvider';
|
String toString() => r'watchContainerDataProvider';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ProviderFor(watchContainerTabId)
|
@ProviderFor(watchContainerTabId)
|
||||||
@@ -626,3 +631,45 @@ final class WatchContainerTabIdFamily extends $Family
|
|||||||
@override
|
@override
|
||||||
String toString() => r'watchContainerTabIdProvider';
|
String toString() => r'watchContainerTabIdProvider';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ProviderFor(watchAllAssignedSites)
|
||||||
|
const watchAllAssignedSitesProvider = WatchAllAssignedSitesProvider._();
|
||||||
|
|
||||||
|
final class WatchAllAssignedSitesProvider
|
||||||
|
extends
|
||||||
|
$FunctionalProvider<
|
||||||
|
AsyncValue<List<SiteAssignment>>,
|
||||||
|
List<SiteAssignment>,
|
||||||
|
Stream<List<SiteAssignment>>
|
||||||
|
>
|
||||||
|
with
|
||||||
|
$FutureModifier<List<SiteAssignment>>,
|
||||||
|
$StreamProvider<List<SiteAssignment>> {
|
||||||
|
const WatchAllAssignedSitesProvider._()
|
||||||
|
: super(
|
||||||
|
from: null,
|
||||||
|
argument: null,
|
||||||
|
retry: null,
|
||||||
|
name: r'watchAllAssignedSitesProvider',
|
||||||
|
isAutoDispose: true,
|
||||||
|
dependencies: null,
|
||||||
|
$allTransitiveDependencies: null,
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String debugGetCreateSourceHash() => _$watchAllAssignedSitesHash();
|
||||||
|
|
||||||
|
@$internal
|
||||||
|
@override
|
||||||
|
$StreamProviderElement<List<SiteAssignment>> $createElement(
|
||||||
|
$ProviderPointer pointer,
|
||||||
|
) => $StreamProviderElement(pointer);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Stream<List<SiteAssignment>> create(Ref ref) {
|
||||||
|
return watchAllAssignedSites(ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String _$watchAllAssignedSitesHash() =>
|
||||||
|
r'd755451be0ad7e03db36ba39c64f6f0b5c1d9ba3';
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ class SelectedContainer extends _$SelectedContainer {
|
|||||||
String? build() {
|
String? build() {
|
||||||
ref.listen(
|
ref.listen(
|
||||||
fireImmediately: true,
|
fireImmediately: true,
|
||||||
containersWithCountProvider,
|
watchContainersWithCountProvider,
|
||||||
(previous, next) {
|
(previous, next) {
|
||||||
if (stateOrNull != null && next.value != null) {
|
if (stateOrNull != null && next.value != null) {
|
||||||
if (!next.value!.any((container) => container.id == state)) {
|
if (!next.value!.any((container) => container.id == state)) {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ final class SelectedContainerProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$selectedContainerHash() => r'4754aa8ad9b43b022821a41771eb5af5e33b1cb6';
|
String _$selectedContainerHash() => r'fd41c7d7ff0cfaff2829fd93e2afd41d883b8317';
|
||||||
|
|
||||||
abstract class _$SelectedContainer extends $Notifier<String?> {
|
abstract class _$SelectedContainer extends $Notifier<String?> {
|
||||||
String? build();
|
String? build();
|
||||||
|
|||||||
@@ -299,7 +299,7 @@ class GeckoInferenceRepository extends _$GeckoInferenceRepository {
|
|||||||
@Riverpod()
|
@Riverpod()
|
||||||
Future<String?> containerTopic(Ref ref, String containerId) async {
|
Future<String?> containerTopic(Ref ref, String containerId) async {
|
||||||
final titles = await ref.watch(
|
final titles = await ref.watch(
|
||||||
containerTabsDataProvider(containerId).selectAsync(
|
watchContainerTabsDataProvider(containerId).selectAsync(
|
||||||
(tabData) =>
|
(tabData) =>
|
||||||
EquatableValue(tabData.map((tab) => tab.title).nonNulls.toSet()),
|
EquatableValue(tabData.map((tab) => tab.title).nonNulls.toSet()),
|
||||||
),
|
),
|
||||||
@@ -360,7 +360,7 @@ Future<String?> topicSuggestion(
|
|||||||
@Riverpod()
|
@Riverpod()
|
||||||
Future<List<SuggestedContainer>?> suggestClusters(Ref ref) async {
|
Future<List<SuggestedContainer>?> suggestClusters(Ref ref) async {
|
||||||
final unassignedTitles = await ref.watch(
|
final unassignedTitles = await ref.watch(
|
||||||
containerTabsDataProvider(null).selectAsync(
|
watchContainerTabsDataProvider(null).selectAsync(
|
||||||
(tabData) => EquatableValue(
|
(tabData) => EquatableValue(
|
||||||
Map.fromEntries(
|
Map.fromEntries(
|
||||||
tabData
|
tabData
|
||||||
@@ -389,12 +389,14 @@ Future<List<String>?> containerTabSuggestions(
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final container = await ref.watch(containerDataProvider(containerId).future);
|
final container = await ref.watch(
|
||||||
|
watchContainerDataProvider(containerId).future,
|
||||||
|
);
|
||||||
|
|
||||||
if (!ref.mounted) return null;
|
if (!ref.mounted) return null;
|
||||||
|
|
||||||
final assignedTitles = await ref.watch(
|
final assignedTitles = await ref.watch(
|
||||||
containerTabsDataProvider(containerId).selectAsync(
|
watchContainerTabsDataProvider(containerId).selectAsync(
|
||||||
(tabData) => EquatableValue(
|
(tabData) => EquatableValue(
|
||||||
tabData
|
tabData
|
||||||
.where((tab) => tab.title.isNotEmpty)
|
.where((tab) => tab.title.isNotEmpty)
|
||||||
@@ -407,7 +409,7 @@ Future<List<String>?> containerTabSuggestions(
|
|||||||
if (!ref.mounted) return null;
|
if (!ref.mounted) return null;
|
||||||
|
|
||||||
final unassignedTitles = await ref.watch(
|
final unassignedTitles = await ref.watch(
|
||||||
containerTabsDataProvider(null).selectAsync(
|
watchContainerTabsDataProvider(null).selectAsync(
|
||||||
(tabData) => EquatableValue(
|
(tabData) => EquatableValue(
|
||||||
tabData
|
tabData
|
||||||
.where((tab) => tab.title.isNotEmpty)
|
.where((tab) => tab.title.isNotEmpty)
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ final class ContainerTopicProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$containerTopicHash() => r'c6e4cc316d3f05d0316909ec0bb58a95ad2fd57c';
|
String _$containerTopicHash() => r'2d04d50890c4ab0ddb70f3c1a2f45fd9ca56412d';
|
||||||
|
|
||||||
final class ContainerTopicFamily extends $Family
|
final class ContainerTopicFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<FutureOr<String?>, String> {
|
with $FunctionalFamilyOverride<FutureOr<String?>, String> {
|
||||||
@@ -331,7 +331,7 @@ final class SuggestClustersProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$suggestClustersHash() => r'694b401ddd6ce68084f79883e67fda4b44607ef0';
|
String _$suggestClustersHash() => r'3fa169a2696954589078c7567b6245c708303232';
|
||||||
|
|
||||||
@ProviderFor(containerTabSuggestions)
|
@ProviderFor(containerTabSuggestions)
|
||||||
const containerTabSuggestionsProvider = ContainerTabSuggestionsFamily._();
|
const containerTabSuggestionsProvider = ContainerTabSuggestionsFamily._();
|
||||||
@@ -390,7 +390,7 @@ final class ContainerTabSuggestionsProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
String _$containerTabSuggestionsHash() =>
|
String _$containerTabSuggestionsHash() =>
|
||||||
r'1b681736215826886241aea834f99ebfb9761197';
|
r'958c7432aa5c2a2828fcccd0127e0110d0a008cf';
|
||||||
|
|
||||||
final class ContainerTabSuggestionsFamily extends $Family
|
final class ContainerTabSuggestionsFamily extends $Family
|
||||||
with $FunctionalFamilyOverride<FutureOr<List<String>?>, String?> {
|
with $FunctionalFamilyOverride<FutureOr<List<String>?>, String?> {
|
||||||
|
|||||||
@@ -30,8 +30,9 @@ part 'tab.g.dart';
|
|||||||
class TabDataRepository extends _$TabDataRepository {
|
class TabDataRepository extends _$TabDataRepository {
|
||||||
Future<void> assignContainer(
|
Future<void> assignContainer(
|
||||||
String tabId,
|
String tabId,
|
||||||
ContainerData targetContainer,
|
ContainerData targetContainer, {
|
||||||
) async {
|
bool closeOldTab = true,
|
||||||
|
}) async {
|
||||||
final currentContainerId = await getContainerTabId(tabId);
|
final currentContainerId = await getContainerTabId(tabId);
|
||||||
|
|
||||||
final currentContainerData = await currentContainerId.mapNotNull(
|
final currentContainerData = await currentContainerId.mapNotNull(
|
||||||
@@ -51,7 +52,9 @@ class TabDataRepository extends _$TabDataRepository {
|
|||||||
.read(tabRepositoryProvider.notifier)
|
.read(tabRepositoryProvider.notifier)
|
||||||
.duplicateTab(selectTabId: tabId, containerId: targetContainer.id);
|
.duplicateTab(selectTabId: tabId, containerId: targetContainer.id);
|
||||||
|
|
||||||
await ref.read(tabRepositoryProvider.notifier).closeTab(tabId);
|
if (closeOldTab) {
|
||||||
|
await ref.read(tabRepositoryProvider.notifier).closeTab(tabId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,6 +113,18 @@ class TabDataRepository extends _$TabDataRepository {
|
|||||||
.getSingleOrNull();
|
.getSingleOrNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<Map<String, String?>> getTabDescendants(String tabId) async {
|
||||||
|
final results = await ref
|
||||||
|
.read(tabDatabaseProvider)
|
||||||
|
.definitionsDrift
|
||||||
|
.unorderedTabDescendants(tabId: tabId)
|
||||||
|
.get();
|
||||||
|
|
||||||
|
return Map.fromEntries(
|
||||||
|
results.map((pair) => MapEntry(pair.id, pair.parentId)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void build() {}
|
void build() {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ final class TabDataRepositoryProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$tabDataRepositoryHash() => r'cc25e0e23a0c0cff5670e59bb0f20496e21a2824';
|
String _$tabDataRepositoryHash() => r'8f8a1dff5e5be5cbe59562c86b2e57c229b97f8a';
|
||||||
|
|
||||||
abstract class _$TabDataRepository extends $Notifier<void> {
|
abstract class _$TabDataRepository extends $Notifier<void> {
|
||||||
void build();
|
void build();
|
||||||
|
|||||||
Reference in New Issue
Block a user