@@ -35,8 +35,12 @@ import 'package:weblibre/features/geckoview/domain/providers.dart';
3535import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart' ;
3636import 'package:weblibre/features/geckoview/features/find_in_page/domain/repositories/find_in_page.dart' ;
3737import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart' ;
38+ import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart' ;
3839import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/gecko_inference.dart' ;
40+ import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart' ;
3941import 'package:weblibre/features/geckoview/utils/image_helper.dart' ;
42+ import 'package:weblibre/features/user/data/models/tor_settings.dart' ;
43+ import 'package:weblibre/features/user/domain/repositories/tor_settings.dart' ;
4044
4145part 'tab_state.g.dart' ;
4246
@@ -238,6 +242,37 @@ TabState? tabState(Ref ref, String? tabId) {
238242 return ref.watch (tabStatesProvider.select ((tabs) => tabs[tabId]));
239243}
240244
245+ @Riverpod ()
246+ Future <bool > isTabTunneled (Ref ref, String ? tabId) async {
247+ final tabState = ref.watch (tabStateProvider (tabId));
248+ final torSettings = ref.watch (torSettingsWithDefaultsProvider);
249+
250+ if (tabState != null ) {
251+ if (tabState.isPrivate) {
252+ return torSettings.proxyPrivateTabsTor;
253+ } else {
254+ switch (torSettings.proxyRegularTabsMode) {
255+ case TorRegularTabProxyMode .container:
256+ final containerId = await ref
257+ .read (tabDataRepositoryProvider.notifier)
258+ .getContainerTabId (tabState.id);
259+
260+ final containerData = await containerId.mapNotNull (
261+ (containerId) => ref
262+ .read (containerRepositoryProvider.notifier)
263+ .getContainerData (containerId),
264+ );
265+
266+ return containerData? .metadata.useProxy ?? false ;
267+ case TorRegularTabProxyMode .all:
268+ return true ;
269+ }
270+ }
271+ }
272+
273+ return false ;
274+ }
275+
241276@Riverpod ()
242277TabState ? selectedTabState (Ref ref) {
243278 final tabId = ref.watch (selectedTabProvider);
0 commit comments