use new api to get container data in one go

This commit is contained in:
Fabian Freund
2026-01-03 19:37:23 +01:00
parent 67a7a0909e
commit 3e21cf9129
8 changed files with 13 additions and 50 deletions
@@ -35,7 +35,6 @@ import 'package:weblibre/features/geckoview/domain/providers.dart';
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart';
import 'package:weblibre/features/geckoview/features/find_in_page/domain/repositories/find_in_page.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/gecko_inference.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart';
import 'package:weblibre/features/geckoview/utils/image_helper.dart';
@@ -285,17 +284,9 @@ Future<bool> isTabTunneled(Ref ref, String? tabId) async {
} else {
switch (torSettings.proxyRegularTabsMode) {
case TorRegularTabProxyMode.container:
final containerId = await ref
final containerData = await ref
.read(tabDataRepositoryProvider.notifier)
.getTabContainerId(tabState.id);
if (!ref.mounted) return false;
final containerData = await containerId.mapNotNull(
(containerId) => ref
.read(containerRepositoryProvider.notifier)
.getContainerData(containerId),
);
.getTabContainerData(tabState.id);
if (!ref.mounted) return false;
@@ -258,7 +258,7 @@ final class IsTabTunneledProvider
}
}
String _$isTabTunneledHash() => r'84035f8df248cd0586016c12c1820dd902717c1d';
String _$isTabTunneledHash() => r'55a42ccb73d1921eed27d32f6da3a54680d4ac8c';
final class IsTabTunneledFamily extends $Family
with $FunctionalFamilyOverride<FutureOr<bool>, String?> {
@@ -242,24 +242,16 @@ class TabRepository extends _$TabRepository {
}
Future<bool> selectTab(String tabId) async {
final containerId = await ref
final containerData = await ref
.read(tabDataRepositoryProvider.notifier)
.getTabContainerId(tabId);
if (!ref.mounted) return false;
final containerData = await containerId.mapNotNull(
(containerId) => ref
.read(containerRepositoryProvider.notifier)
.getContainerData(containerId),
);
.getTabContainerData(tabId);
if (!ref.mounted) return false;
if (containerData != null) {
if (containerData.metadata.authSettings.authenticationRequired) {
// ignore: only_use_keep_alive_inside_keep_alive
if (containerId != ref.read(selectedContainerProvider)) {
if (containerData.id != ref.read(selectedContainerProvider)) {
logger.w(
'Tried to open authenticated tab $tabId but container not selected',
);
@@ -41,7 +41,7 @@ final class TabRepositoryProvider
}
}
String _$tabRepositoryHash() => r'ab4ba2bf11ccbd99497819b9068cbbd733a93d81';
String _$tabRepositoryHash() => r'0be3f9bb9eef6dfff1c486195e2717932c425db1';
abstract class _$TabRepository extends $Notifier<void> {
void build();
@@ -18,7 +18,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:drift/drift.dart';
import 'package:nullability/nullability.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart';
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
@@ -26,7 +25,6 @@ import 'package:weblibre/features/geckoview/domain/repositories/tab.dart';
import 'package:weblibre/features/geckoview/features/tabs/data/database/definitions.drift.dart';
import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart';
import 'package:weblibre/features/geckoview/features/tabs/data/providers.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart';
part 'tab.g.dart';
@@ -37,14 +35,9 @@ class TabDataRepository extends _$TabDataRepository {
ContainerData targetContainer, {
bool closeOldTab = true,
}) async {
final currentContainerId = await getTabContainerId(tabId);
final selectedTabId = ref.read(selectedTabProvider);
final currentContainerData = await currentContainerId.mapNotNull(
(containerId) => ref
.read(containerRepositoryProvider.notifier)
.getContainerData(containerId),
);
final currentContainerData = await getTabContainerData(tabId);
if (targetContainer.metadata.contextualIdentity ==
currentContainerData?.metadata.contextualIdentity) {
@@ -73,14 +66,9 @@ class TabDataRepository extends _$TabDataRepository {
}
Future<void> unassignContainer(String tabId) async {
final currentContainerId = await getTabContainerId(tabId);
final selectedTabId = ref.read(selectedTabProvider);
final currentContainerData = await currentContainerId.mapNotNull(
(containerId) => ref
.read(containerRepositoryProvider.notifier)
.getContainerData(containerId),
);
final currentContainerData = await getTabContainerData(tabId);
if (currentContainerData?.metadata.contextualIdentity == null) {
return ref
@@ -41,7 +41,7 @@ final class TabDataRepositoryProvider
}
}
String _$tabDataRepositoryHash() => r'0ab598656accfc90a15a9bfef3899cd3bb577b66';
String _$tabDataRepositoryHash() => r'502f2ce548d3a4d1506d239c9a2e506b9436c408';
abstract class _$TabDataRepository extends $Notifier<void> {
void build();
@@ -18,7 +18,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:fast_equatable/fast_equatable.dart';
import 'package:nullability/nullability.dart';
import 'package:riverpod/riverpod.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:weblibre/data/models/web_page_info.dart';
@@ -26,7 +25,6 @@ import 'package:weblibre/domain/services/generic_website.dart';
import 'package:weblibre/extensions/ref_cache.dart';
import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart';
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart';
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart';
import 'package:weblibre/features/tor/domain/services/tor_proxy.dart';
import 'package:weblibre/features/user/data/models/tor_settings.dart';
@@ -85,15 +83,9 @@ Future<WebPageInfo> pageInfo(
int? proxyPort;
if (tabState?.id != null) {
final containerId = await ref
final containerData = await ref
.read(tabDataRepositoryProvider.notifier)
.getTabContainerId(tabState!.id);
final containerData = await containerId.mapNotNull(
(containerId) => ref
.read(containerRepositoryProvider.notifier)
.getContainerData(containerId),
);
.getTabContainerData(tabState!.id);
final torSettings = ref.read(torSettingsWithDefaultsProvider);
@@ -162,7 +162,7 @@ final class PageInfoProvider
}
}
String _$pageInfoHash() => r'b756ee75e155bcee1e54658556eb8f4ef417d118';
String _$pageInfoHash() => r'89b1cd86bb7ed7cfe507650cca33d6b6b72ca770';
final class PageInfoFamily extends $Family
with