bettern intent and navigation handling
This commit is contained in:
@@ -28,6 +28,15 @@ class TabRepository extends _$TabRepository {
|
||||
final _tabsService = GeckoTabService();
|
||||
|
||||
String? _previousTabId;
|
||||
final _tabFromIntent = <String>{};
|
||||
|
||||
bool hasLaunchedFromIntent(String? tabId) {
|
||||
if (tabId == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return _tabFromIntent.contains(tabId);
|
||||
}
|
||||
|
||||
Future<String> addTab({
|
||||
Uri? url,
|
||||
@@ -272,13 +281,15 @@ class TabRepository extends _$TabRepository {
|
||||
next.whenData((value) async {
|
||||
switch (value) {
|
||||
case SharedUrl():
|
||||
await addTab(url: value.url);
|
||||
_tabFromIntent.add(await addTab(url: value.url));
|
||||
case SharedText():
|
||||
final defaultSearchBang =
|
||||
ref.read(selectedBangDataProvider()) ??
|
||||
await ref.read(defaultSearchBangDataProvider.future);
|
||||
|
||||
await addTab(url: defaultSearchBang?.getTemplateUrl(value.text));
|
||||
_tabFromIntent.add(
|
||||
await addTab(url: defaultSearchBang?.getTemplateUrl(value.text)),
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
@@ -187,6 +188,14 @@ class BrowserScreen extends HookConsumerWidget {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ref
|
||||
.read(tabRepositoryProvider.notifier)
|
||||
.hasLaunchedFromIntent(selectedTabId)) {
|
||||
//Mark back as unhandled and navigator will pop
|
||||
await SystemNavigator.pop();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (lastBackButtonPress.value != null &&
|
||||
DateTime.now().difference(
|
||||
lastBackButtonPress.value!,
|
||||
@@ -201,6 +210,7 @@ class BrowserScreen extends HookConsumerWidget {
|
||||
return true;
|
||||
} else {
|
||||
//Mark back as unhandled and navigator will pop
|
||||
await SystemNavigator.pop();
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
|
||||
+2
@@ -85,6 +85,8 @@ class _BrowserViewState extends ConsumerState<BrowserView>
|
||||
_periodicScreenshotUpdate?.cancel();
|
||||
_periodicScreenshotUpdate = null;
|
||||
_timerPaused = false;
|
||||
|
||||
ScaffoldMessenger.of(context).hideCurrentSnackBar();
|
||||
}
|
||||
|
||||
if (next.isLoading == false &&
|
||||
|
||||
Reference in New Issue
Block a user