Merge branch 'advplyr:master' into master

This commit is contained in:
Rasmus Krämer 2022-03-07 20:47:32 +01:00 committed by GitHub
commit f9be51184d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 102 additions and 4 deletions

View file

@ -38,15 +38,12 @@ repositories {
}
dependencies {
implementation "com.anggrayudi:storage:0.13.0"
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
implementation project(':capacitor-android')
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.2'
testImplementation "junit:junit:$junitVersion"
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
@ -61,6 +58,7 @@ dependencies {
implementation "androidx.media:media:$androidx_media_version"
// Exo Player
if (findProject(':exoplayer-library-core') != null) {
implementation project(':exoplayer-library-core')
implementation project(':exoplayer-library-ui')
@ -75,9 +73,18 @@ dependencies {
implementation "com.google.android.exoplayer:exoplayer-hls:$exoplayer_version"
}
// Glide for images
implementation "com.github.bumptech.glide:glide:$glide_version"
kapt "com.github.bumptech.glide:compiler:$glide_version"
// Paper NoSQL Db
implementation 'io.github.pilgr:paperdb:2.7.2'
// Simple Storage
implementation "com.anggrayudi:storage:0.13.0"
// OK HTTP
implementation 'com.squareup.okhttp3:okhttp:4.9.2'
}
apply from: 'capacitor.build.gradle'

View file

@ -6,7 +6,9 @@ import android.os.*
import android.util.Log
import com.anggrayudi.storage.SimpleStorage
import com.anggrayudi.storage.SimpleStorageHelper
import com.audiobookshelf.app.data.DbManager
import com.getcapacitor.BridgeActivity
import io.paperdb.Paper
class MainActivity : BridgeActivity() {
@ -44,11 +46,14 @@ class MainActivity : BridgeActivity() {
registerPlugin(MyNativeAudio::class.java)
registerPlugin(AudioDownloader::class.java)
registerPlugin(StorageManager::class.java)
registerPlugin(DbManager::class.java)
var filter = IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE).apply {
addAction(DownloadManager.ACTION_NOTIFICATION_CLICKED)
}
registerReceiver(broadcastReceiver, filter)
Paper.init(applicationContext)
}
override fun onDestroy() {

View file

@ -23,6 +23,7 @@ import androidx.documentfile.provider.DocumentFile
import androidx.media.MediaBrowserServiceCompat
import androidx.media.utils.MediaConstants
import com.anggrayudi.storage.file.isExternalStorageDocument
import com.audiobookshelf.app.data.DbManager
import com.getcapacitor.Bridge
import com.getcapacitor.JSObject
import com.google.android.exoplayer2.*
@ -39,6 +40,7 @@ import com.google.android.gms.cast.*
import com.google.android.gms.cast.framework.*
import kotlinx.coroutines.*
import okhttp3.OkHttpClient
import org.json.JSONObject
import java.util.*
import kotlin.concurrent.schedule

View file

@ -0,0 +1,54 @@
package com.audiobookshelf.app.data
import android.util.Log
import com.getcapacitor.JSObject
import com.getcapacitor.Plugin
import com.getcapacitor.PluginCall
import com.getcapacitor.PluginMethod
import com.getcapacitor.annotation.CapacitorPlugin
import io.paperdb.Paper
import org.json.JSONObject
@CapacitorPlugin(name = "DbManager")
class DbManager : Plugin() {
val tag = "DbManager"
fun saveObject(db:String, key:String, value:JSONObject) {
Log.d(tag, "Saving Object $key ${value.toString()}")
Paper.book(db).write(key, value)
}
fun loadObject(db:String, key:String):JSONObject? {
var json: JSONObject? = Paper.book(db).read(key)
Log.d(tag, "Loaded Object $key $json")
return json
}
@PluginMethod
fun saveFromWebview(call: PluginCall) {
var db = call.getString("db", "").toString()
var key = call.getString("key", "").toString()
var value = call.getObject("value")
if (db == "" || key == "" || value == null) {
Log.d(tag, "saveFromWebview Invalid key/value")
} else {
var json = value as JSONObject
saveObject(db, key, json)
}
call.resolve()
}
@PluginMethod
fun loadFromWebview(call:PluginCall) {
var db = call.getString("db", "").toString()
var key = call.getString("key", "").toString()
if (db == "" || key == "") {
Log.d(tag, "loadFromWebview Invalid Key")
call.resolve()
return
}
var json = loadObject(db, key)
var jsobj = JSObject.fromJSONObject(json)
call.resolve(jsobj)
}
}

View file

@ -37,6 +37,7 @@ export default {
plugins: [
'@/plugins/server.js',
'@/plugins/sqlStore.js',
'@/plugins/db.js',
'@/plugins/localStore.js',
'@/plugins/init.client.js',
'@/plugins/axios.js',

29
plugins/db.js Normal file
View file

@ -0,0 +1,29 @@
import { registerPlugin } from '@capacitor/core';
const DbManager = registerPlugin('DbManager');
class DbService {
constructor() { }
save(db, key, value) {
return DbManager.saveFromWebview({ db, key, value }).then(() => {
console.log('Saved data', db, key, JSON.stringify(value))
}).catch((error) => {
console.error('Failed to save data', error)
})
}
load(db, key) {
return DbManager.loadFromWebview({ db, key }).then((data) => {
console.log('Loaded data', db, key, JSON.stringify(data))
return data
}).catch((error) => {
console.error('Failed to load', error)
return null
})
}
}
export default ({ app, store }, inject) => {
inject('db', new DbService())
}