fix lints
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
@@ -30,7 +31,7 @@ import 'package:weblibre/features/bangs/domain/providers/bangs.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/repositories/tab.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/domain/repositories/find_in_page.dart';
|
||||
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||
|
||||
part 'providers.g.dart';
|
||||
@@ -46,11 +47,17 @@ GeckoSelectionActionService selectionActionService(Ref ref) {
|
||||
final router = await ref.read(routerProvider.future);
|
||||
if (ref.mounted) {
|
||||
final settings = ref.read(generalSettingsWithDefaultsProvider);
|
||||
final selectedTabState = ref.read(
|
||||
tabStatesProvider,
|
||||
)[ref.read(selectedTabProvider)];
|
||||
|
||||
final isPrivate = selectedTabState?.isPrivate.mapNotNull(
|
||||
(isCurrentPrivate) =>
|
||||
isCurrentPrivate ? TabType.private : TabType.regular,
|
||||
);
|
||||
|
||||
final route = SearchRoute(
|
||||
tabType:
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
ref.read(selectedTabTypeProvider) ??
|
||||
settings.defaultCreateTabType,
|
||||
tabType: isPrivate ?? settings.defaultCreateTabType,
|
||||
searchText: text,
|
||||
);
|
||||
|
||||
@@ -65,8 +72,10 @@ GeckoSelectionActionService selectionActionService(Ref ref) {
|
||||
);
|
||||
|
||||
if (ref.mounted && defaultSearchBang != null) {
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
final currentTab = ref.read(selectedTabStateProvider);
|
||||
final currentTab = ref.read(
|
||||
tabStatesProvider,
|
||||
)[ref.read(selectedTabProvider)];
|
||||
|
||||
final isPrivate =
|
||||
currentTab?.isPrivate ??
|
||||
ref
|
||||
@@ -91,10 +100,9 @@ GeckoSelectionActionService selectionActionService(Ref ref) {
|
||||
if (ref.mounted) {
|
||||
final tabId = ref.read(selectedTabProvider);
|
||||
if (tabId != null) {
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
await ref
|
||||
.read(findInPageControllerProvider(tabId).notifier)
|
||||
.findAll(text: text);
|
||||
.read(findInPageRepositoryProvider(tabId).notifier)
|
||||
.findAll(text);
|
||||
}
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -55,7 +55,7 @@ final class SelectionActionServiceProvider
|
||||
}
|
||||
|
||||
String _$selectionActionServiceHash() =>
|
||||
r'6250d2121375b2a41c2f0450512fc836c996f461';
|
||||
r'75fa0fa770e74e49554d4098102fde9f9e531c4f';
|
||||
|
||||
@ProviderFor(eventService)
|
||||
final eventServiceProvider = EventServiceProvider._();
|
||||
|
||||
@@ -95,7 +95,6 @@ class TabRepository extends _$TabRepository {
|
||||
final assingedContainer =
|
||||
container ??
|
||||
Value<ContainerData?>(
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
await ref.read(selectedContainerProvider.notifier).fetchData(),
|
||||
);
|
||||
|
||||
@@ -295,8 +294,7 @@ class TabRepository extends _$TabRepository {
|
||||
}
|
||||
|
||||
Future<void> _selectNextTab(String tabId) async {
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
final tabState = ref.read(tabStateProvider(tabId));
|
||||
final tabState = ref.read(tabStatesProvider)[tabId];
|
||||
|
||||
final currentContainerId = await ref
|
||||
.read(tabDataRepositoryProvider.notifier)
|
||||
@@ -382,13 +380,12 @@ class TabRepository extends _$TabRepository {
|
||||
|
||||
if (!ref.mounted) return;
|
||||
|
||||
final nextContainerTabs = await nextAvailableContainer
|
||||
.mapNotNull(
|
||||
(container) => ref
|
||||
.read(containerRepositoryProvider.notifier)
|
||||
.getContainerTabIds(container.id)
|
||||
.then((tabs) => tabs.where((tab) => tab != tabId).toList()),
|
||||
);
|
||||
final nextContainerTabs = await nextAvailableContainer.mapNotNull(
|
||||
(container) => ref
|
||||
.read(containerRepositoryProvider.notifier)
|
||||
.getContainerTabIds(container.id)
|
||||
.then((tabs) => tabs.where((tab) => tab != tabId).toList()),
|
||||
);
|
||||
|
||||
if (nextContainerTabs.isNotEmpty) {
|
||||
return _tabsService.selectTab(tabId: nextContainerTabs!.first);
|
||||
@@ -446,8 +443,7 @@ class TabRepository extends _$TabRepository {
|
||||
final containerSiteAssignementSub = eventSerivce.siteAssignementEvent.listen(
|
||||
(event) async {
|
||||
if (event.tabId != null) {
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
final tabState = ref.read(tabStateProvider(event.tabId));
|
||||
final tabState = ref.read(tabStatesProvider)[event.tabId];
|
||||
if (tabState != null) {
|
||||
final uri = Uri.parse(event.url);
|
||||
final originUri = event.originUrl.mapNotNull(Uri.parse);
|
||||
|
||||
@@ -41,7 +41,7 @@ final class TabRepositoryProvider
|
||||
}
|
||||
}
|
||||
|
||||
String _$tabRepositoryHash() => r'b300b88bc7817b533be46d8d0d933786b10212fb';
|
||||
String _$tabRepositoryHash() => r'0a676c0513917e8853677ebd592954bde0f15f57';
|
||||
|
||||
abstract class _$TabRepository extends $Notifier<void> {
|
||||
void build();
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ class BookmarkEntryEditScreen extends HookConsumerWidget {
|
||||
final BookmarkEntry? exisitingEntry;
|
||||
|
||||
const BookmarkEntryEditScreen({
|
||||
super.key,
|
||||
required this.exisitingEntry,
|
||||
required this.initialInfo,
|
||||
});
|
||||
|
||||
+5
-1
@@ -32,7 +32,11 @@ class BookmarkFolderEditScreen extends HookConsumerWidget {
|
||||
final String? parentGuid;
|
||||
final BookmarkFolder? folder;
|
||||
|
||||
const BookmarkFolderEditScreen({required this.folder, this.parentGuid});
|
||||
const BookmarkFolderEditScreen({
|
||||
super.key,
|
||||
required this.folder,
|
||||
this.parentGuid,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
||||
@@ -175,7 +175,7 @@ EquatableValue<List<TabStateWirthContainer>> fifoTabStates(Ref ref) {
|
||||
]);
|
||||
}
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
@Riverpod()
|
||||
EquatableValue<List<TabStateWirthContainer>>
|
||||
selectedContainerTabStatesWithContainer(Ref ref) {
|
||||
final filter = ref.watch(
|
||||
|
||||
@@ -452,7 +452,7 @@ final class SelectedContainerTabStatesWithContainerProvider
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'selectedContainerTabStatesWithContainerProvider',
|
||||
isAutoDispose: false,
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
@@ -487,7 +487,7 @@ final class SelectedContainerTabStatesWithContainerProvider
|
||||
}
|
||||
|
||||
String _$selectedContainerTabStatesWithContainerHash() =>
|
||||
r'd22d16eba89040fbcf7932e5334155f00312957f';
|
||||
r'2fd5e12595b3aced1e235c9626073c34655d57fa';
|
||||
|
||||
@ProviderFor(suggestedTabEntities)
|
||||
final suggestedTabEntitiesProvider = SuggestedTabEntitiesFamily._();
|
||||
|
||||
-6
@@ -221,7 +221,6 @@ class EngineSettingsReplicationService
|
||||
);
|
||||
}
|
||||
if (previous.value?.enablePdfJs != settings.enablePdfJs) {
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
await ref
|
||||
.read(preferenceFixatorProvider.notifier)
|
||||
.register('pdfjs.disabled', !settings.enablePdfJs);
|
||||
@@ -230,7 +229,6 @@ class EngineSettingsReplicationService
|
||||
previous.value?.locales,
|
||||
settings.locales,
|
||||
)) {
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
await ref
|
||||
.read(preferenceFixatorProvider.notifier)
|
||||
.register(
|
||||
@@ -240,13 +238,9 @@ class EngineSettingsReplicationService
|
||||
}
|
||||
} else {
|
||||
await _service.setDefaultSettings(settings);
|
||||
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
await ref
|
||||
.read(preferenceFixatorProvider.notifier)
|
||||
.register('pdfjs.disabled', !settings.enablePdfJs);
|
||||
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
await ref
|
||||
.read(preferenceFixatorProvider.notifier)
|
||||
.register('intl.accept_languages', settings.locales.join(','));
|
||||
|
||||
-1
@@ -135,7 +135,6 @@ class ProxySettingsReplication extends _$ProxySettingsReplication {
|
||||
},
|
||||
);
|
||||
|
||||
// ignore: only_use_keep_alive_inside_keep_alive
|
||||
ref.listen(watchAllAssignedSitesProvider, (previous, next) async {
|
||||
if (next.hasValue) {
|
||||
await ref
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ import 'package:weblibre/utils/form_validators.dart';
|
||||
class OpenSharedContent extends HookConsumerWidget {
|
||||
final Uri sharedUrl;
|
||||
|
||||
const OpenSharedContent({required this.sharedUrl});
|
||||
const OpenSharedContent({super.key, required this.sharedUrl});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
||||
@@ -30,7 +30,7 @@ import 'package:weblibre/features/user/domain/repositories/general_settings.dart
|
||||
import 'package:weblibre/presentation/hooks/scroll_visibility.dart';
|
||||
|
||||
class TabViewScreen extends HookConsumerWidget {
|
||||
const TabViewScreen();
|
||||
const TabViewScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
||||
+5
-5
@@ -68,7 +68,7 @@ class BrowserTopAppBar extends HookConsumerWidget {
|
||||
late final BrowserTabBar _tabBar;
|
||||
late final _size = Size.fromHeight(_tabBar.getToolbarHeight());
|
||||
|
||||
BrowserTopAppBar({
|
||||
BrowserTopAppBar({super.key,
|
||||
required this.showMainToolbar,
|
||||
required this.showContextualToolbar,
|
||||
required this.showQuickTabSwitcherBar,
|
||||
@@ -103,7 +103,7 @@ class BrowserBottomAppBar extends HookConsumerWidget {
|
||||
late final BrowserTabBar _tabBar;
|
||||
late final _size = Size.fromHeight(_tabBar.getToolbarHeight());
|
||||
|
||||
BrowserBottomAppBar({
|
||||
BrowserBottomAppBar({super.key,
|
||||
required this.showMainToolbar,
|
||||
required this.displayedSheet,
|
||||
required this.showContextualToolbar,
|
||||
@@ -148,7 +148,7 @@ class BrowserTabBar extends HookConsumerWidget {
|
||||
final bool showMainToolbarNavigationButton;
|
||||
final bool showMainToolbarTabActionButton;
|
||||
|
||||
const BrowserTabBar({
|
||||
const BrowserTabBar({super.key,
|
||||
required this.showMainToolbar,
|
||||
required this.displayedSheet,
|
||||
required this.showContextualToolbar,
|
||||
@@ -476,7 +476,7 @@ class ContextualToolbar extends HookConsumerWidget {
|
||||
class QuickTabSwitcher extends HookConsumerWidget {
|
||||
final QuickTabSwitcherMode quickTabSwitcherMode;
|
||||
|
||||
const QuickTabSwitcher({required this.quickTabSwitcherMode});
|
||||
const QuickTabSwitcher({super.key, required this.quickTabSwitcherMode});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
@@ -685,7 +685,7 @@ class NavigationMenuButton extends StatelessWidget {
|
||||
}
|
||||
|
||||
class AddTabButton extends HookConsumerWidget {
|
||||
const AddTabButton();
|
||||
const AddTabButton({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ class BrowserView extends StatefulHookConsumerWidget {
|
||||
final Future<void> Function()? postInitializationStep;
|
||||
final StreamSink<Offset>? pointerMoveEventSink;
|
||||
|
||||
const BrowserView({
|
||||
const BrowserView({super.key,
|
||||
this.screenshotPeriod = const Duration(seconds: 10),
|
||||
this.suggestionTimeout = const Duration(seconds: 30),
|
||||
this.postInitializationStep,
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import 'package:skeletonizer/skeletonizer.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
|
||||
|
||||
class CertificateTile extends HookConsumerWidget {
|
||||
const CertificateTile();
|
||||
const CertificateTile({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ import 'package:flutter/material.dart';
|
||||
class ErrorContainer extends StatelessWidget {
|
||||
final Widget content;
|
||||
|
||||
const ErrorContainer({required this.content});
|
||||
const ErrorContainer({super.key, required this.content});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import 'package:weblibre/presentation/widgets/safe_raw_image.dart';
|
||||
class ExtensionBadgeIcon extends StatelessWidget {
|
||||
final WebExtensionState state;
|
||||
|
||||
const ExtensionBadgeIcon(this.state);
|
||||
const ExtensionBadgeIcon(this.state, {super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ class ViewTabSheetWidget extends HookConsumerWidget {
|
||||
final double bottomAppBarHeight;
|
||||
final ValueChanged<bool>? onClearSiteDataExpandedChanged;
|
||||
|
||||
const ViewTabSheetWidget({
|
||||
const ViewTabSheetWidget({super.key,
|
||||
required this.initialTabState,
|
||||
required this.sheetScrollController,
|
||||
required this.draggableScrollableController,
|
||||
|
||||
+23
-3
@@ -44,6 +44,7 @@ import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/ta
|
||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab_search.dart';
|
||||
import 'package:weblibre/features/geckoview/features/tabs/presentation/widgets/container_chips.dart';
|
||||
import 'package:weblibre/features/tor/presentation/controllers/start_tor_proxy.dart';
|
||||
import 'package:weblibre/features/tor/presentation/widgets/tor_dialog.dart';
|
||||
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
||||
import 'package:weblibre/presentation/widgets/speech_to_text_button.dart';
|
||||
@@ -55,7 +56,11 @@ class TabViewHeader extends HookConsumerWidget {
|
||||
final TabsViewMode tabsViewMode;
|
||||
final VoidCallback onClose;
|
||||
|
||||
const TabViewHeader({required this.onClose, required this.tabsViewMode});
|
||||
const TabViewHeader({
|
||||
super.key,
|
||||
required this.onClose,
|
||||
required this.tabsViewMode,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
@@ -601,9 +606,24 @@ class TabViewHeader extends HookConsumerWidget {
|
||||
|
||||
if (context.mounted &&
|
||||
result == SetContainerResult.successHasProxy) {
|
||||
await ref
|
||||
final shouldStartProxy = await ref
|
||||
.read(startProxyControllerProvider.notifier)
|
||||
.maybeStartProxy(context);
|
||||
.shouldPromptProxyStart();
|
||||
|
||||
if (!context.mounted || !shouldStartProxy) return;
|
||||
|
||||
final dialogResult = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return const TorDialog();
|
||||
},
|
||||
);
|
||||
|
||||
if (dialogResult == true) {
|
||||
await ref
|
||||
.read(startProxyControllerProvider.notifier)
|
||||
.startProxy();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ref
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ import 'package:weblibre/features/geckoview/domain/providers.dart';
|
||||
|
||||
part 'preference_observer.g.dart';
|
||||
|
||||
@Riverpod()
|
||||
@Riverpod(keepAlive: true)
|
||||
class PreferenceChangeListener extends _$PreferenceChangeListener {
|
||||
@override
|
||||
Stream<GeckoPref> build() async* {
|
||||
@@ -41,7 +41,7 @@ class PreferenceChangeListener extends _$PreferenceChangeListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Riverpod()
|
||||
@Riverpod(keepAlive: true)
|
||||
class PreferenceFixator extends _$PreferenceFixator {
|
||||
Future<void> register(String name, Object value) async {
|
||||
state = {...state}
|
||||
|
||||
+4
-4
@@ -20,7 +20,7 @@ final class PreferenceChangeListenerProvider
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'preferenceChangeListenerProvider',
|
||||
isAutoDispose: true,
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
@@ -34,7 +34,7 @@ final class PreferenceChangeListenerProvider
|
||||
}
|
||||
|
||||
String _$preferenceChangeListenerHash() =>
|
||||
r'668c1bcd0636ec515a5e92ee5ba4ea7a67fa7a6d';
|
||||
r'de9759b32a6a6b9bab5656137a365da78633f866';
|
||||
|
||||
abstract class _$PreferenceChangeListener extends $StreamNotifier<GeckoPref> {
|
||||
Stream<GeckoPref> build();
|
||||
@@ -65,7 +65,7 @@ final class PreferenceFixatorProvider
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'preferenceFixatorProvider',
|
||||
isAutoDispose: true,
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
@@ -86,7 +86,7 @@ final class PreferenceFixatorProvider
|
||||
}
|
||||
}
|
||||
|
||||
String _$preferenceFixatorHash() => r'c76245d5c420e2e3f6c026f23c017c939b69ef59';
|
||||
String _$preferenceFixatorHash() => r'c8d71966faf6b2feb9ac4e770297cd298edf5211';
|
||||
|
||||
abstract class _$PreferenceFixator extends $Notifier<Map<String, Object>> {
|
||||
Map<String, Object> build();
|
||||
|
||||
@@ -59,7 +59,7 @@ class SearchScreen extends HookConsumerWidget {
|
||||
/// When null, a new tab will be created.
|
||||
final String? tabId;
|
||||
|
||||
const SearchScreen({
|
||||
const SearchScreen({super.key,
|
||||
required this.initialSearchText,
|
||||
required this.tabType,
|
||||
this.launchedFromIntent = false,
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ class FeedSearch extends HookConsumerWidget {
|
||||
|
||||
final ValueListenable<TextEditingValue> searchTextNotifier;
|
||||
|
||||
const FeedSearch({required this.searchTextNotifier});
|
||||
const FeedSearch({super.key, required this.searchTextNotifier});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
||||
+2
-2
@@ -50,7 +50,7 @@ class TabSearch extends HookConsumerWidget {
|
||||
|
||||
final ValueListenable<TextEditingValue> searchTextListenable;
|
||||
|
||||
const TabSearch({required this.searchTextListenable});
|
||||
const TabSearch({super.key, required this.searchTextListenable});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
@@ -76,7 +76,7 @@ class TabSearch extends HookConsumerWidget {
|
||||
.fold(
|
||||
<String?, int>{},
|
||||
(map, id) =>
|
||||
map..update(id, (value) => ++value, ifAbsent: () => 1),
|
||||
map..update(id, (value) => value + 1, ifAbsent: () => 1),
|
||||
),
|
||||
),
|
||||
[tabSearchResults],
|
||||
|
||||
@@ -149,7 +149,7 @@ Stream<Map<String, String?>> watchTabsContainerId(
|
||||
.map(Map.fromEntries);
|
||||
}
|
||||
|
||||
@Riverpod()
|
||||
@Riverpod(keepAlive: true)
|
||||
Stream<List<SiteAssignment>> watchAllAssignedSites(Ref ref) {
|
||||
final db = ref.watch(tabDatabaseProvider);
|
||||
return db.containerDao.allAssignedSites().watch();
|
||||
|
||||
@@ -848,7 +848,7 @@ final class WatchAllAssignedSitesProvider
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'watchAllAssignedSitesProvider',
|
||||
isAutoDispose: true,
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
@@ -869,7 +869,7 @@ final class WatchAllAssignedSitesProvider
|
||||
}
|
||||
|
||||
String _$watchAllAssignedSitesHash() =>
|
||||
r'0e06caeb4a53b5cf976b3f47d328ea238243438b';
|
||||
r'5f658b5733ee20192eb86d3aeb79aa9678dafba8';
|
||||
|
||||
@ProviderFor(watchIsCurrentSiteAssignedToContainer)
|
||||
final watchIsCurrentSiteAssignedToContainerProvider =
|
||||
|
||||
@@ -46,7 +46,7 @@ class TabDataRepository extends _$TabDataRepository {
|
||||
.tabDao
|
||||
.assignContainer(tabId, containerId: targetContainer.id);
|
||||
} else {
|
||||
final tabState = ref.read(tabStateProvider(tabId));
|
||||
final tabState = ref.read(tabStatesProvider)[tabId];
|
||||
if (tabState != null) {
|
||||
if (closeOldTab) {
|
||||
await ref.read(tabRepositoryProvider.notifier).closeTab(tabId);
|
||||
@@ -76,7 +76,7 @@ class TabDataRepository extends _$TabDataRepository {
|
||||
.tabDao
|
||||
.assignContainer(tabId, containerId: null);
|
||||
} else {
|
||||
final tabState = ref.read(tabStateProvider(tabId));
|
||||
final tabState = ref.read(tabStatesProvider)[tabId];
|
||||
if (tabState != null) {
|
||||
await ref.read(tabRepositoryProvider.notifier).closeTab(tabId);
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ final class TabDataRepositoryProvider
|
||||
}
|
||||
}
|
||||
|
||||
String _$tabDataRepositoryHash() => r'c3632e0a2d91811103b329659cb0c6d778b14cea';
|
||||
String _$tabDataRepositoryHash() => r'c872509a70e4c0c029b468457e15c5e5bff10c65';
|
||||
|
||||
abstract class _$TabDataRepository extends $Notifier<void> {
|
||||
void build();
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ class ContainerTopicController extends _$ContainerTopicController {
|
||||
return _predictFromTitles(titles);
|
||||
}
|
||||
|
||||
Future<String?> predictTopicFromTabIds(Set<String> tabIds) async {
|
||||
Future<String?> predictTopicFromTabIds(Set<String> tabIds) {
|
||||
final tabStates = ref.read(tabStatesProvider);
|
||||
final titles = tabIds
|
||||
.map((tabId) => tabStates[tabId]?.title)
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ final class ContainerTopicControllerProvider
|
||||
}
|
||||
|
||||
String _$containerTopicControllerHash() =>
|
||||
r'0b54e0be899e2abb4defbd5614ba231917ad74e5';
|
||||
r'41ee4b2a259eba17af49b3c877a9b10ea51281c8';
|
||||
|
||||
abstract class _$ContainerTopicController extends $Notifier<AsyncValue<void>> {
|
||||
AsyncValue<void> build();
|
||||
|
||||
@@ -31,10 +31,11 @@ import 'package:weblibre/features/geckoview/features/tabs/domain/providers/selec
|
||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart';
|
||||
import 'package:weblibre/features/geckoview/features/tabs/presentation/widgets/container_list_tile.dart';
|
||||
import 'package:weblibre/features/tor/presentation/controllers/start_tor_proxy.dart';
|
||||
import 'package:weblibre/features/tor/presentation/widgets/tor_dialog.dart';
|
||||
import 'package:weblibre/presentation/widgets/failure_widget.dart';
|
||||
|
||||
class ContainerListScreen extends HookConsumerWidget {
|
||||
const ContainerListScreen();
|
||||
const ContainerListScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
@@ -70,9 +71,28 @@ class ContainerListScreen extends HookConsumerWidget {
|
||||
if (context.mounted &&
|
||||
result ==
|
||||
SetContainerResult.successHasProxy) {
|
||||
await ref
|
||||
final shouldStartProxy = await ref
|
||||
.read(startProxyControllerProvider.notifier)
|
||||
.maybeStartProxy(context);
|
||||
.shouldPromptProxyStart();
|
||||
|
||||
if (!context.mounted || !shouldStartProxy) {
|
||||
return;
|
||||
}
|
||||
|
||||
final dialogResult = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return const TorDialog();
|
||||
},
|
||||
);
|
||||
|
||||
if (dialogResult == true) {
|
||||
await ref
|
||||
.read(
|
||||
startProxyControllerProvider.notifier,
|
||||
)
|
||||
.startProxy();
|
||||
}
|
||||
}
|
||||
},
|
||||
foregroundColor: Theme.of(
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ import 'package:weblibre/features/geckoview/features/tabs/presentation/widgets/c
|
||||
import 'package:weblibre/presentation/widgets/failure_widget.dart';
|
||||
|
||||
class ContainerSelectionScreen extends HookConsumerWidget {
|
||||
const ContainerSelectionScreen();
|
||||
const ContainerSelectionScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import 'package:weblibre/features/geckoview/features/tabs/utils/container_colors
|
||||
class ColorPickerDialog extends HookWidget {
|
||||
final Color initialColor;
|
||||
|
||||
const ColorPickerDialog(this.initialColor);
|
||||
const ColorPickerDialog(this.initialColor, {super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -145,7 +145,7 @@ class ContainerChips extends HookConsumerWidget {
|
||||
|
||||
final ValueListenable<TextEditingValue>? searchTextListenable;
|
||||
|
||||
const ContainerChips({
|
||||
const ContainerChips({super.key,
|
||||
required this.selectedContainer,
|
||||
required this.onSelected,
|
||||
required this.onDeleted,
|
||||
|
||||
Reference in New Issue
Block a user