From ed08921a785249921cd9c56a3aaa78e6ff7d1c41 Mon Sep 17 00:00:00 2001 From: Niko Marmeladkov Date: Mon, 5 Oct 2026 16:26:21 +0300 Subject: [PATCH] Fix session loss on restart; English-only resources - flush the WebView cookie store in onStop/onPageFinished: Chromium batches cookie writes, so the session could be lost when Android killed the process - English default strings + values-ru translations - bump to 1.0.1 --- app/build.gradle.kts | 4 ++-- app/src/main/java/dev/n1ko/nikogpt/MainActivity.kt | 10 ++++++++++ app/src/main/res/values-ru/strings.xml | 9 +++++++++ app/src/main/res/values/strings.xml | 10 +++++----- 4 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 app/src/main/res/values-ru/strings.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1e1fc4f..9c1fd4a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "dev.n1ko.nikogpt" minSdk = 29 // Android 10 targetSdk = 35 - versionCode = 1 - versionName = "1.0.0" + versionCode = 2 + versionName = "1.0.1" } buildTypes { diff --git a/app/src/main/java/dev/n1ko/nikogpt/MainActivity.kt b/app/src/main/java/dev/n1ko/nikogpt/MainActivity.kt index 44a4b49..867c087 100644 --- a/app/src/main/java/dev/n1ko/nikogpt/MainActivity.kt +++ b/app/src/main/java/dev/n1ko/nikogpt/MainActivity.kt @@ -133,6 +133,8 @@ class MainActivity : AppCompatActivity() { override fun onPageFinished(view: WebView, url: String) { refresh.isRefreshing = false progress.visibility = View.GONE + // Persist cookies (the session) right after the page settles. + CookieManager.getInstance().flush() } } @@ -205,6 +207,14 @@ class MainActivity : AppCompatActivity() { } } + override fun onStop() { + super.onStop() + // Chromium writes cookies in batches: without an explicit flush the + // session cookie can be lost when Android kills the process, so the + // user would have to log in again after every restart. + CookieManager.getInstance().flush() + } + override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) webView.saveState(outState) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000..f0db285 --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,9 @@ + + + NikoGPT + Повторить + Не удалось загрузить chat.n1ko.dev\n\n%1$s + Нет приложения, которое может открыть эту ссылку + Загрузка началась + Не удалось начать загрузку + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f0db285..72a9b25 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,9 +1,9 @@ NikoGPT - Повторить - Не удалось загрузить chat.n1ko.dev\n\n%1$s - Нет приложения, которое может открыть эту ссылку - Загрузка началась - Не удалось начать загрузку + Retry + Could not load chat.n1ko.dev\n\n%1$s + No app can open this link + Download started + Could not start the download