Support read base from queryString

This commit is contained in:
2024-08-11 11:55:36 +00:00
committed by GitHub
parent e8fb94d6b9
commit 5a020f8be9
2 changed files with 30 additions and 0 deletions

View File

@@ -40,6 +40,7 @@ Config? _prefs;
EHApi? _api;
PersistCookieJar? _jar;
ImageCaches? _imageCaches;
String? queryBaseUrl;
Future<void> prepareJar() async {
final jar = PersistCookieJar(storage: FileStorage(await getJarPath()));
@@ -97,6 +98,14 @@ bool tryInitApi(BuildContext context) {
clearAllStates(context);
return true;
}
if (queryBaseUrl != null) {
if (_api != null && _api!.baseUrl == queryBaseUrl) {
return true;
}
initApi(queryBaseUrl!);
clearAllStates(context);
return true;
}
String? baseUrl = prefs.getString("baseUrl");
if (baseUrl == null) {
SchedulerBinding.instance.addPostFrameCallback((_) {

View File

@@ -35,6 +35,24 @@ import 'viewer/single.dart';
final _routerLog = Logger("Router");
bool _isFirst = true;
class _NavigatorObserver extends NavigatorObserver {
@override
void didPush(Route route, Route? previousRoute) {
if (_isFirst) {
try {
final args = route.settings.arguments as Map<String, String>?;
queryBaseUrl = args?["base"];
} catch (e) {
_routerLog.warning("Failed to get arguments.", e);
}
_isFirst = false;
}
super.didPush(route, previousRoute);
}
}
final _router = GoRouter(
routes: [
GoRoute(
@@ -289,6 +307,9 @@ final _router = GoRouter(
});
}),
],
observers: [
_NavigatorObserver(),
],
);
void defaultLogger(LogRecord record) {