teapod/app/src/main/java/org/mosad/teapod/util/StorageController.kt

44 lines
1.2 KiB
Kotlin
Raw Normal View History

2020-10-15 21:00:31 +02:00
package org.mosad.teapod.util
import android.content.Context
import android.util.Log
2020-10-15 21:00:31 +02:00
import com.google.gson.Gson
import com.google.gson.JsonParser
2020-10-15 21:00:31 +02:00
import kotlinx.coroutines.*
import java.io.File
import java.lang.Exception
2020-10-15 21:00:31 +02:00
/**
* This controller contains the logic for permanently saved data.
* On load, it loads the saved files into the variables
2020-10-15 21:00:31 +02:00
*/
object StorageController {
2020-10-15 21:00:31 +02:00
private const val fileNameMyList = "my_list.json"
val myList = ArrayList<Int>() // a list of saved mediaIds
2020-10-15 21:00:31 +02:00
fun load(context: Context) {
val file = File(context.filesDir, fileNameMyList)
if (!file.exists()) runBlocking { saveMyList(context).join() }
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.")
}
2020-10-15 21:00:31 +02:00
}
fun saveMyList(context: Context): Job {
val file = File(context.filesDir, fileNameMyList)
return GlobalScope.launch(Dispatchers.IO) {
file.writeText(Gson().toJson(myList.distinct()))
2020-10-15 21:00:31 +02:00
}
}
}