Browse Source

refactoring of settings access into TriliumSettings

azivner 6 years ago
parent
commit
86b23523a5

+ 1 - 6
app/src/main/java/io/github/zadam/triliumsender/LoginActivity.kt

@@ -243,12 +243,7 @@ class LoginActivity : AppCompatActivity(), LoaderCallbacks<Cursor> {
             showProgress(false)
 
             if (loginResult.success) {
-                val prefs = this@LoginActivity.getSharedPreferences(MainActivity.PREFRENCES_NAME, Context.MODE_PRIVATE);
-
-                val editor = prefs.edit()
-                editor.putString(MainActivity.PREF_TRILIUM_ADDRESS, mTriliumAddress)
-                editor.putString(MainActivity.PREF_TOKEN, loginResult.token);
-                editor.apply()
+                TriliumSettings(this@LoginActivity).save(mTriliumAddress, loginResult.token!!)
 
                 Toast.makeText(this@LoginActivity, "Trilium connection settings have been successfully configured.", Toast.LENGTH_LONG).show()
 

+ 9 - 22
app/src/main/java/io/github/zadam/triliumsender/MainActivity.kt

@@ -13,22 +13,14 @@ import kotlinx.android.synthetic.main.content_main.*
 
 class MainActivity : AppCompatActivity() {
 
-    companion object {
-        const val PREFRENCES_NAME = "io.github.zadam.triliumsender";
-        const val PREF_TRILIUM_ADDRESS = "trilium_address";
-        const val PREF_TOKEN = "token";
-    }
+    // to reset the application to uninitialized state, only for dev/testing purposes
+    private val resetSetup = false
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
-        if (false) {
-            val prefs = getSharedPreferences(PREFRENCES_NAME, Context.MODE_PRIVATE);
-
-            val editor = prefs.edit()
-            editor.putString(PREF_TRILIUM_ADDRESS, "")
-            editor.putString(PREF_TOKEN, "")
-            editor.apply()
+        if (resetSetup) {
+            TriliumSettings(this).save("", "")
         }
 
         setContentView(R.layout.activity_main)
@@ -54,18 +46,13 @@ class MainActivity : AppCompatActivity() {
     }
 
     private fun setSetupStatus() {
-        val prefs = getSharedPreferences(PREFRENCES_NAME, Context.MODE_PRIVATE)
-
-        val triliumAddress = prefs.getString(PREF_TRILIUM_ADDRESS, "")
-        val token = prefs.getString(PREF_TOKEN, "")
-
-        val setupStatus = findViewById<TextView>(R.id.setupStatusTextView);
+        val settings = TriliumSettings(this)
 
-        if (triliumAddress.isBlank() || token.isBlank()) {
-            setupStatus.setText("Trilium connection setup isn't finished yet.");
+        if (!settings.isConfigured()) {
+            setupStatusTextView.text = "Trilium connection setup isn't finished yet.";
         } else {
-            setupStatus.setText("Trilium connection has been set up for address: " + triliumAddress + ". " +
-                    "You can still change it by tapping the button below.");
+            setupStatusTextView.text = "Trilium connection has been set up for address: " + settings.triliumAddress + ". " +
+                    "You can still change it by tapping the button below.";
         }
     }
 }

+ 8 - 10
app/src/main/java/io/github/zadam/triliumsender/SendNoteActivity.kt

@@ -1,6 +1,5 @@
 package io.github.zadam.triliumsender
 
-import android.content.Context
 import android.os.AsyncTask
 import android.os.Bundle
 import android.support.v7.app.AppCompatActivity
@@ -21,25 +20,24 @@ class SendNoteActivity : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_send_note)
 
-        val prefs = this.getSharedPreferences(MainActivity.PREFRENCES_NAME, Context.MODE_PRIVATE);
+        val settings = TriliumSettings(this)
 
-        val triliumAddress = prefs.getString(MainActivity.PREF_TRILIUM_ADDRESS, "");
-        val token = prefs.getString(MainActivity.PREF_TOKEN, "");
-
-        if (triliumAddress.isBlank() || token.isBlank()) {
+        if (!settings.isConfigured()) {
             Toast.makeText(this, "Trilium Sender is not configured. Can't sent the image.", Toast.LENGTH_LONG).show()
             finish()
             return
         }
 
         sendNoteButton.setOnClickListener { view ->
-            val sendImageTask = SendNoteTask(noteTitle.text.toString(), noteText.text.toString(), triliumAddress, token)
+            val sendImageTask = SendNoteTask(noteTitle.text.toString(), noteText.text.toString(), settings.triliumAddress, settings.apiToken)
             sendImageTask.execute(null as Void?)
         }
     }
 
-    inner class SendNoteTask internal constructor(private val noteTitle: String, private val noteText: String,
-                                                  private val triliumAddress: String, private val token: String) : AsyncTask<Void, Void, Boolean>() {
+    inner class SendNoteTask internal constructor(private val noteTitle: String,
+                                                  private val noteText: String,
+                                                  private val triliumAddress: String,
+                                                  private val apiToken: String) : AsyncTask<Void, Void, Boolean>() {
 
         val TAG : String = "SendNoteTask"
         val JSON = MediaType.parse("application/json; charset=utf-8")
@@ -55,7 +53,7 @@ class SendNoteActivity : AppCompatActivity() {
 
             val request = Request.Builder()
                     .url(triliumAddress + "/api/sender/note")
-                    .addHeader("Authorization", token)
+                    .addHeader("Authorization", apiToken)
                     .addHeader("X-Local-Date", now())
                     .post(body)
                     .build()

+ 8 - 10
app/src/main/java/io/github/zadam/triliumsender/ShareActivity.kt

@@ -1,6 +1,5 @@
 package io.github.zadam.triliumsender
 
-import android.content.Context
 import android.content.Intent
 import android.graphics.Bitmap
 import android.graphics.BitmapFactory
@@ -29,12 +28,9 @@ class ShareActivity : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_share)
 
-        val prefs = this.getSharedPreferences(MainActivity.PREFRENCES_NAME, Context.MODE_PRIVATE);
+        val settings = TriliumSettings(this)
 
-        val triliumAddress = prefs.getString(MainActivity.PREF_TRILIUM_ADDRESS, "");
-        val token = prefs.getString(MainActivity.PREF_TOKEN, "");
-
-        if (triliumAddress.isBlank() || token.isBlank()) {
+        if (!settings.isConfigured()) {
             Toast.makeText(this, "Trilium Sender is not configured. Can't sent the image.", Toast.LENGTH_LONG).show()
             finish()
             return
@@ -43,14 +39,16 @@ class ShareActivity : AppCompatActivity() {
         val imageUri = intent.extras!!.get(Intent.EXTRA_STREAM) as Uri
         val mimeType = contentResolver.getType(imageUri)
 
-        val sendImageTask = SendImageTask(imageUri, mimeType, triliumAddress, token)
+        val sendImageTask = SendImageTask(imageUri, mimeType, settings.triliumAddress, settings.apiToken)
         sendImageTask.execute(null as Void?)
     }
 
     inner class SendImageResult (val success: Boolean, val contentLength: Long? = null)
 
-    inner class SendImageTask internal constructor(private val imageUri: Uri, private val mimeType: String,
-                                                   private val triliumAddress: String, private val token: String) : AsyncTask<Void, Void, SendImageResult>() {
+    inner class SendImageTask internal constructor(private val imageUri: Uri,
+                                                   private val mimeType: String,
+                                                   private val triliumAddress: String,
+                                                   private val apiToken: String) : AsyncTask<Void, Void, SendImageResult>() {
 
         val TAG : String = "SendImageTask"
 
@@ -71,7 +69,7 @@ class ShareActivity : AppCompatActivity() {
 
             val request = Request.Builder()
                     .url(triliumAddress + "/api/sender/image")
-                    .addHeader("Authorization", token)
+                    .addHeader("Authorization", apiToken)
                     .addHeader("X-Local-Date", now())
                     .post(requestBody)
                     .build()

+ 29 - 0
app/src/main/java/io/github/zadam/triliumsender/TriliumSettings.kt

@@ -0,0 +1,29 @@
+package io.github.zadam.triliumsender
+
+import android.app.Activity
+import android.content.Context
+
+class TriliumSettings constructor(private val ctx: Activity) {
+    companion object {
+        const val PREF_NAME = "io.github.zadam.triliumsender.setup";
+        const val PREF_TRILIUM_ADDRESS = "trilium_address";
+        const val PREF_API_TOKEN = "api_token";
+    }
+
+    fun save(triliumAddress: String, apiToken: String) {
+        val editor = prefs.edit()
+        editor.putString(PREF_TRILIUM_ADDRESS, triliumAddress)
+        editor.putString(PREF_API_TOKEN, apiToken);
+        editor.apply()
+    }
+
+    private val prefs = ctx.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE)
+
+    val triliumAddress: String
+        get() = prefs.getString(PREF_TRILIUM_ADDRESS, "")
+
+    val apiToken: String
+        get() = prefs.getString(PREF_API_TOKEN, "")
+
+    fun isConfigured() = !triliumAddress.isBlank() && !apiToken.isBlank()
+}