From 5ccf0eea4347e8f117cf28cbc2c89e9b62bcf86d Mon Sep 17 00:00:00 2001 From: nyne Date: Tue, 28 Oct 2025 19:21:28 +0800 Subject: [PATCH] Added support for localstorage when logging in via webview. --- lib/pages/comic_source_page.dart | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/pages/comic_source_page.dart b/lib/pages/comic_source_page.dart index 5c88e7d..80af04a 100644 --- a/lib/pages/comic_source_page.dart +++ b/lib/pages/comic_source_page.dart @@ -1245,6 +1245,15 @@ class _LoginPageState extends State<_LoginPage> { if (widget.config.checkLoginStatus != null && widget.config.checkLoginStatus!(url, title)) { var cookies = (await c.getCookies(url)) ?? []; + var localStorageItems = await c.webStorage.localStorage.getItems(); + var mappedLocalStorage = {}; + for (var item in localStorageItems) { + if (item.key != null) { + mappedLocalStorage[item.key!] = item.value; + } + } + widget.source.data['_localStorage'] = mappedLocalStorage; + await widget.source.saveData(); SingleInstanceCookieJar.instance?.saveFromResponse( Uri.parse(url), cookies, @@ -1306,6 +1315,20 @@ class _LoginPageState extends State<_LoginPage> { Uri.parse(url), cookies, ); + var localStorageJson = await webview.evaluateJavascript( + "JSON.stringify(window.localStorage);", + ); + var localStorage = {}; + try { + var decoded = jsonDecode(localStorageJson ?? ''); + if (decoded is Map) { + localStorage = decoded; + } + } catch (e) { + Log.error("ComicSourcePage", "Failed to parse localStorage JSON\n$e"); + } + widget.source.data['_localStorage'] = localStorage; + await widget.source.saveData(); success = true; widget.config.onLoginWithWebviewSuccess?.call(); webview.close();