improved tab handling by id
This commit is contained in:
@@ -542,7 +542,7 @@ class KagiScreen extends HookConsumerWidget {
|
||||
if (activeWebView?.key != null && webViews.length > 1) {
|
||||
ref
|
||||
.read(webViewRepositoryProvider.notifier)
|
||||
.closeTab(activeWebView!.key!);
|
||||
.closeTab(activeWebView!.tabId);
|
||||
return true;
|
||||
} else {
|
||||
//Mark back as unhandled and navigator will pop
|
||||
@@ -584,13 +584,13 @@ class KagiScreen extends HookConsumerWidget {
|
||||
(activeWebView != null)
|
||||
? webViews.keys
|
||||
.toList()
|
||||
.indexOf(activeWebView.page.value.key)
|
||||
.indexOf(activeWebView.tabId)
|
||||
: null,
|
||||
),
|
||||
index: (activeWebView != null)
|
||||
? webViews.keys
|
||||
.toList()
|
||||
.indexOf(activeWebView.page.value.key) +
|
||||
.indexOf(activeWebView.tabId) +
|
||||
1
|
||||
: 0,
|
||||
children: [const LandingContent(), ...webViews.values],
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:async';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:lensai/features/web_view/domain/entities/abstract/tab.dart';
|
||||
import 'package:lensai/features/web_view/domain/repositories/web_view.dart';
|
||||
import 'package:lensai/features/web_view/presentation/controllers/switch_new_tab.dart';
|
||||
import 'package:lensai/features/web_view/presentation/widgets/web_view_tab.dart';
|
||||
@@ -109,7 +110,7 @@ class ViewTabsSheet extends HookConsumerWidget {
|
||||
);
|
||||
final activeTab = ref.watch(
|
||||
webViewTabControllerProvider.select(
|
||||
(webView) => webView?.page.value.key,
|
||||
(webView) => webView?.tabId,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -128,7 +129,7 @@ class ViewTabsSheet extends HookConsumerWidget {
|
||||
useEffect(
|
||||
() {
|
||||
final index =
|
||||
tabs.indexWhere((webView) => webView.key == activeTab);
|
||||
tabs.indexWhere((webView) => webView.tabId == activeTab);
|
||||
|
||||
if (index > -1) {
|
||||
final reversedIndex = tabs.length - 1 - index;
|
||||
@@ -160,10 +161,17 @@ class ViewTabsSheet extends HookConsumerWidget {
|
||||
crossAxisCount: 2,
|
||||
children: tabs.reversed
|
||||
.map(
|
||||
(webView) => WebViewTab(
|
||||
webView: webView,
|
||||
isActive: webView.key == activeTab,
|
||||
onClose: onClose,
|
||||
(webView) => HookBuilder(
|
||||
key: ValueKey(webView.tabId),
|
||||
builder: (context) {
|
||||
final tab = useValueListenable(webView.page) as ITab;
|
||||
|
||||
return WebViewTab(
|
||||
tab: tab,
|
||||
isActive: webView.tabId == activeTab,
|
||||
onClose: onClose,
|
||||
);
|
||||
},
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
|
||||
Reference in New Issue
Block a user