From 5ee798abfb644d3ffa6b561ea2f0afb3079cd520 Mon Sep 17 00:00:00 2001
From: Hugh Daschbach <hugh@ccss.com>
Date: Thu, 14 Dec 2023 20:51:39 -0800
Subject: [PATCH] Remember hostname of last login.

Seed the login screen with saved host name, checkboxes.

Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale-android/-/merge_requests/342>
---
 .../funkwhale/ffa/activities/LoginActivity.kt     | 15 +++++++++++++++
 .../detect-authorization-expiration.bugfix        |  1 +
 .../changelog.d/login-remember-form.enhancement   |  1 +
 3 files changed, 17 insertions(+)
 create mode 100644 changes/changelog.d/detect-authorization-expiration.bugfix
 create mode 100644 changes/changelog.d/login-remember-form.enhancement

diff --git a/app/src/main/java/audio/funkwhale/ffa/activities/LoginActivity.kt b/app/src/main/java/audio/funkwhale/ffa/activities/LoginActivity.kt
index 914be0f4..0ac66dfc 100644
--- a/app/src/main/java/audio/funkwhale/ffa/activities/LoginActivity.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/activities/LoginActivity.kt
@@ -1,9 +1,11 @@
 package audio.funkwhale.ffa.activities
 
+import android.content.Context
 import android.content.Intent
 import android.content.res.Configuration
 import android.net.Uri
 import android.os.Bundle
+import android.text.Editable
 import android.view.ViewGroup
 import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
 import androidx.appcompat.app.AppCompatActivity
@@ -64,6 +66,13 @@ class LoginActivity : AppCompatActivity() {
   override fun onResume() {
     super.onResume()
     with(binding) {
+      val preferences = getPreferences(Context.MODE_PRIVATE)
+      val hn = preferences?.getString("hostname", "")
+      if (hn != null && !hn.isEmpty()) {
+        hostname.text = Editable.Factory.getInstance().newEditable(hn)
+      }
+      cleartext.setChecked(preferences?.getBoolean("cleartext", false) ?: false)
+      anonymous.setChecked(preferences?.getBoolean("anonymous", false) ?: false)
       login.setOnClickListener {
         var hostname = hostname.text.toString().trim().trim('/')
 
@@ -96,6 +105,12 @@ class LoginActivity : AppCompatActivity() {
 
           hostnameField.error = message
         }
+        if (hostnameField.error == null) {
+          val preferences = getPreferences(Context.MODE_PRIVATE)
+          preferences?.edit()?.putString("hostname", hostname)?.commit()
+          preferences?.edit()?.putBoolean("cleartext", cleartext.isChecked)?.commit()
+          preferences?.edit()?.putBoolean("anonymous", anonymous.isChecked)?.commit()
+        }
       }
     }
   }
diff --git a/changes/changelog.d/detect-authorization-expiration.bugfix b/changes/changelog.d/detect-authorization-expiration.bugfix
new file mode 100644
index 00000000..76801e93
--- /dev/null
+++ b/changes/changelog.d/detect-authorization-expiration.bugfix
@@ -0,0 +1 @@
+Log user out when authorization token expires (#154)
diff --git a/changes/changelog.d/login-remember-form.enhancement b/changes/changelog.d/login-remember-form.enhancement
new file mode 100644
index 00000000..34ee7afb
--- /dev/null
+++ b/changes/changelog.d/login-remember-form.enhancement
@@ -0,0 +1 @@
+Remember server settings in login dialog (#154)
-- 
GitLab