From 5b7a492a48841291fa8ad85c637172a3013e4d25 Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 3 Jul 2022 13:45:24 -0500 Subject: [PATCH] Update DB initializing to fix crashes for Paper db not initialized --- .../java/com/audiobookshelf/app/MainActivity.kt | 8 ++++---- .../java/com/audiobookshelf/app/data/DbManager.kt | 13 ++++++++++++- .../com/audiobookshelf/app/media/MediaManager.kt | 11 ----------- .../app/player/PlayerNotificationService.kt | 3 ++- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt b/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt index a3c3b12f..c1f60c88 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt @@ -13,6 +13,7 @@ import androidx.core.app.ActivityCompat import com.anggrayudi.storage.SimpleStorage import com.anggrayudi.storage.SimpleStorageHelper import com.audiobookshelf.app.data.AbsDatabase +import com.audiobookshelf.app.data.DbManager import com.audiobookshelf.app.player.PlayerNotificationService import com.audiobookshelf.app.plugins.AbsAudioPlayer import com.audiobookshelf.app.plugins.AbsDownloader @@ -53,14 +54,15 @@ class MainActivity : BridgeActivity() { // .build()) super.onCreate(savedInstanceState) - Log.d(tag, "onCreate") + DbManager.initialize(applicationContext) + // Grant full storage access for testing // var ss = SimpleStorage(this) // ss.requestFullStorageAccess() - var permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) + val permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, PERMISSIONS_ALL, @@ -71,8 +73,6 @@ class MainActivity : BridgeActivity() { registerPlugin(AbsDownloader::class.java) registerPlugin(AbsFileSystem::class.java) registerPlugin(AbsDatabase::class.java) - - Paper.init(applicationContext) } override fun onDestroy() { diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DbManager.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DbManager.kt index 685af511..79676738 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DbManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DbManager.kt @@ -1,14 +1,25 @@ package com.audiobookshelf.app.data +import android.content.Context import android.util.Log import com.audiobookshelf.app.plugins.AbsDownloader import io.paperdb.Paper -import org.json.JSONObject import java.io.File class DbManager { val tag = "DbManager" + companion object { + var isDbInitialized = false + + fun initialize(ctx: Context) { + if (isDbInitialized) return + Paper.init(ctx) + isDbInitialized = true + Log.i("DbManager", "Initialized Paper db") + } + } + fun getDeviceData(): DeviceData { return Paper.book("device").read("data") ?: DeviceData(mutableListOf(), null, null, DeviceSettings.default()) } diff --git a/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt b/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt index 0fbc313b..eedbd96c 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt @@ -7,7 +7,6 @@ import com.audiobookshelf.app.data.* import com.audiobookshelf.app.device.DeviceManager import com.audiobookshelf.app.server.ApiHandler import java.util.* -import io.paperdb.Paper import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.runBlocking import kotlin.coroutines.resume @@ -16,8 +15,6 @@ import kotlin.coroutines.suspendCoroutine class MediaManager(var apiHandler: ApiHandler, var ctx: Context) { val tag = "MediaManager" - var isPaperInitialized = false - var serverLibraryItems = listOf() var selectedLibraryId = "" @@ -29,14 +26,6 @@ class MediaManager(var apiHandler: ApiHandler, var ctx: Context) { var serverLibraries = listOf() var serverConfigIdUsed:String? = null - fun initializeAndroidAuto() { - if (!isPaperInitialized) { - Log.d(tag, "Android Auto started when MainActivity was never started - initializing Paper") - Paper.init(ctx) - isPaperInitialized = true - } - } - fun getIsLibrary(id:String) : Boolean { return serverLibraries.find { it.id == id } != null } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index ee8447fc..2fd52a1b 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -160,6 +160,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { super.onCreate() ctx = this + DbManager.initialize(ctx) + // Initialize API apiHandler = ApiHandler(ctx) @@ -716,7 +718,6 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { null } else { isStarted = true - mediaManager.initializeAndroidAuto() mediaManager.checkResetServerItems() // Reset any server items if no longer connected to server isAndroidAuto = true