From c8d80ddc9f6a80fd7ca33cfee51870fa8124aca0 Mon Sep 17 00:00:00 2001 From: Jannik Date: Sat, 14 Nov 2020 13:10:05 +0100 Subject: [PATCH] Fix my-list issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix entries can be added multiple times to my list * fix entries can’t be removed from my list after the app was restarted * closes #15 --- .../org/mosad/teapod/util/StorageController.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/mosad/teapod/util/StorageController.kt b/app/src/main/java/org/mosad/teapod/util/StorageController.kt index b3d2836..ac4309f 100644 --- a/app/src/main/java/org/mosad/teapod/util/StorageController.kt +++ b/app/src/main/java/org/mosad/teapod/util/StorageController.kt @@ -1,10 +1,12 @@ package org.mosad.teapod.util import android.content.Context +import android.util.Log import com.google.gson.Gson -import com.google.gson.GsonBuilder +import com.google.gson.JsonParser import kotlinx.coroutines.* import java.io.File +import java.lang.Exception /** * This controller contains the logic for permanently saved data. @@ -21,17 +23,21 @@ object StorageController { if (!file.exists()) runBlocking { saveMyList(context).join() } - myList.clear() - myList.addAll( - GsonBuilder().create().fromJson(file.readText(), ArrayList().javaClass) - ) + try { + myList.clear() + myList.addAll(JsonParser.parseString(file.readText()).asJsonArray.map { it.asInt }.distinct()) + } catch (ex: Exception) { + myList.clear() + Log.e(javaClass.name, "Parsing of My-List failed.") + } + } fun saveMyList(context: Context): Job { val file = File(context.filesDir, fileNameMyList) return GlobalScope.launch(Dispatchers.IO) { - file.writeText(Gson().toJson(myList)) + file.writeText(Gson().toJson(myList.distinct())) } }