From 0eb13a09ab3b3ff7338f81b517c07642e5471d49 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Tue, 6 Feb 2018 19:51:21 +0100 Subject: [PATCH] Fix crash with bookmarks & make bookmarks impl better (still ugly, but ok) --- app/src/main/java/telegra/ph/MainActivity.kt | 8 +++--- app/src/main/java/telegra/ph/Prefs.kt | 27 +++++++++++++++----- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/telegra/ph/MainActivity.kt b/app/src/main/java/telegra/ph/MainActivity.kt index 4aaf1e5..7f0bc49 100644 --- a/app/src/main/java/telegra/ph/MainActivity.kt +++ b/app/src/main/java/telegra/ph/MainActivity.kt @@ -247,9 +247,9 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD MaterialDialog.Builder(this) .title(R.string.bookmarks) .positiveText(android.R.string.ok) - .items(bookmarks().reversed().map { it.split("xxx;xxx")[1] }) + .items(bookmarks().reversed().map { it.second }) .itemsCallback { _, _, i, _ -> - loadPage(bookmarks().reversed().map { it.split("xxx;xxx")[0] }[i]) + loadPage(bookmarks().reversed().map { it.first }[i]) } .itemsLongCallback { _, _, i, _ -> MaterialDialog.Builder(this) @@ -258,7 +258,7 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD .positiveText(android.R.string.yes) .negativeText(android.R.string.no) .onPositive { _, _ -> - deleteBookmark(bookmarks().reversed().map { it.split("xxx;xxx")[0] }[i]) + deleteBookmark(bookmarks().reversed().map { it.first }[i]) } .show() true @@ -285,7 +285,7 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD MaterialDialog.Builder(this) .title(R.string.title_question) .input(getString(R.string.title_hint), "", { _, input -> - addBookmark("${currentUrl.split("/").last()}xxx;xxx$input") + addBookmark(currentUrl.split("/").last(), input.toString()) }) .show() true diff --git a/app/src/main/java/telegra/ph/Prefs.kt b/app/src/main/java/telegra/ph/Prefs.kt index 2a11afa..800881c 100644 --- a/app/src/main/java/telegra/ph/Prefs.kt +++ b/app/src/main/java/telegra/ph/Prefs.kt @@ -3,17 +3,30 @@ package telegra.ph import android.content.Context import android.preference.PreferenceManager -fun Context.bookmarks(): MutableList = PreferenceManager.getDefaultSharedPreferences(this).getString("bookmarks", null)?.split("+++;+++")?.toMutableList() - ?: mutableListOf("apixxx;xxxAPI Documentation") +const val listItemSeparator = "+++;+++" +const val itemSeparator = "xxx;xxx" -fun Context.addBookmark(entry: String) { - PreferenceManager.getDefaultSharedPreferences(this).edit().putString("bookmarks", bookmarks().apply { - add(entry) - }.joinToString(separator = "+++;+++")).apply() +fun Context.bookmarks(): List> { + val list = PreferenceManager.getDefaultSharedPreferences(this).getString("bookmarks", null)?.split(listItemSeparator)?.map { + val splitParts = it.split(itemSeparator) + if (splitParts.size == 2) splitParts[0] to splitParts[1] + else null + }?.filterNotNull() + return if (list != null && list.isNotEmpty()) list else listOf("api" to "API Documentation") +} + +fun Context.addBookmark(path: String, title: String) { + saveBookmarks(bookmarks().plus(path to title)) } fun Context.deleteBookmark(path: String) { - PreferenceManager.getDefaultSharedPreferences(this).edit().putString("bookmarks", bookmarks().filter { !it.contains(path) }.joinToString(separator = "+++;+++")).apply() + saveBookmarks(bookmarks().filter { it.first != path }) +} + +fun Context.saveBookmarks(bookmarks: List>) { + PreferenceManager.getDefaultSharedPreferences(this).edit().putString("bookmarks", + bookmarks.joinToString(separator = listItemSeparator) { "${it.first}$itemSeparator${it.second}" } + ).apply() } fun Context.accessToken(): String = PreferenceManager.getDefaultSharedPreferences(this).getString("accessToken", "")