2022-04-05 00:08:27 +00:00
|
|
|
import { AbsDatabase } from './capacitor/AbsDatabase'
|
2022-03-06 18:53:18 +00:00
|
|
|
|
|
|
|
|
class DbService {
|
2025-07-01 16:33:51 +00:00
|
|
|
constructor() {}
|
2022-03-06 18:53:18 +00:00
|
|
|
|
2022-04-03 19:24:17 +00:00
|
|
|
getDeviceData() {
|
2022-04-05 00:08:27 +00:00
|
|
|
return AbsDatabase.getDeviceData().then((data) => {
|
2022-04-03 19:24:17 +00:00
|
|
|
console.log('Loaded device data', JSON.stringify(data))
|
|
|
|
|
return data
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-04 22:41:19 +00:00
|
|
|
/**
|
|
|
|
|
* Retrieves refresh token from secure storage
|
|
|
|
|
* @param {string} serverConnectionConfigId
|
|
|
|
|
* @return {Promise<string|null>}
|
|
|
|
|
*/
|
|
|
|
|
async getRefreshToken(serverConnectionConfigId) {
|
|
|
|
|
const refreshTokenData = await AbsDatabase.getRefreshToken({ serverConnectionConfigId })
|
|
|
|
|
return refreshTokenData?.refreshToken
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Clears refresh token from secure storage
|
|
|
|
|
* @param {string} serverConnectionConfigId
|
|
|
|
|
* @returns {Promise<boolean>}
|
|
|
|
|
*/
|
|
|
|
|
async clearRefreshToken(serverConnectionConfigId) {
|
|
|
|
|
const result = await AbsDatabase.clearRefreshToken({ serverConnectionConfigId })
|
|
|
|
|
return !!result?.success
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-03 19:24:17 +00:00
|
|
|
setServerConnectionConfig(serverConnectionConfig) {
|
2022-04-05 00:08:27 +00:00
|
|
|
return AbsDatabase.setCurrentServerConnectionConfig(serverConnectionConfig).then((data) => {
|
2022-04-03 19:24:17 +00:00
|
|
|
console.log('Set server connection config', JSON.stringify(data))
|
|
|
|
|
return data
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
removeServerConnectionConfig(serverConnectionConfigId) {
|
2022-04-05 00:08:27 +00:00
|
|
|
return AbsDatabase.removeServerConnectionConfig({ serverConnectionConfigId }).then((data) => {
|
2022-04-03 19:24:17 +00:00
|
|
|
console.log('Removed server connection config', serverConnectionConfigId)
|
|
|
|
|
return true
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logout() {
|
2022-04-05 00:08:27 +00:00
|
|
|
return AbsDatabase.logout()
|
2022-04-03 19:24:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getLocalFolders() {
|
2025-07-01 16:33:51 +00:00
|
|
|
return AbsDatabase.getLocalFolders()
|
|
|
|
|
.then((data) => data.value)
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
console.error('Failed to load', error)
|
|
|
|
|
return null
|
|
|
|
|
})
|
2022-04-01 01:23:38 +00:00
|
|
|
}
|
|
|
|
|
|
2022-04-01 23:33:40 +00:00
|
|
|
getLocalFolder(folderId) {
|
2022-04-05 00:08:27 +00:00
|
|
|
return AbsDatabase.getLocalFolder({ folderId }).then((data) => {
|
2022-04-01 23:33:40 +00:00
|
|
|
console.log('Got local folder', JSON.stringify(data))
|
|
|
|
|
return data
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-06 00:44:14 +00:00
|
|
|
getLocalLibraryItemsInFolder(folderId) {
|
2022-04-09 17:03:37 +00:00
|
|
|
return AbsDatabase.getLocalLibraryItemsInFolder({ folderId }).then((data) => data.value)
|
2022-04-01 01:23:38 +00:00
|
|
|
}
|
2022-04-03 22:07:26 +00:00
|
|
|
|
2022-04-07 23:46:58 +00:00
|
|
|
getLocalLibraryItems(mediaType = null) {
|
2022-04-09 17:03:37 +00:00
|
|
|
return AbsDatabase.getLocalLibraryItems({ mediaType }).then((data) => data.value)
|
2022-04-03 22:07:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getLocalLibraryItem(id) {
|
2022-04-05 00:08:27 +00:00
|
|
|
return AbsDatabase.getLocalLibraryItem({ id })
|
2022-04-03 22:07:26 +00:00
|
|
|
}
|
2022-04-07 23:46:58 +00:00
|
|
|
|
2022-07-13 21:44:02 +00:00
|
|
|
getLocalLibraryItemByLId(libraryItemId) {
|
|
|
|
|
return AbsDatabase.getLocalLibraryItemByLId({ libraryItemId })
|
2022-04-07 23:46:58 +00:00
|
|
|
}
|
2022-04-09 17:03:37 +00:00
|
|
|
|
|
|
|
|
getAllLocalMediaProgress() {
|
|
|
|
|
return AbsDatabase.getAllLocalMediaProgress().then((data) => data.value)
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-15 20:58:26 +00:00
|
|
|
getLocalMediaProgressForServerItem(payload) {
|
|
|
|
|
return AbsDatabase.getLocalMediaProgressForServerItem(payload)
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-09 17:03:37 +00:00
|
|
|
removeLocalMediaProgress(localMediaProgressId) {
|
|
|
|
|
return AbsDatabase.removeLocalMediaProgress({ localMediaProgressId })
|
|
|
|
|
}
|
2022-04-09 23:36:32 +00:00
|
|
|
|
2024-02-06 01:04:11 +00:00
|
|
|
syncLocalSessionsWithServer(isFirstSync) {
|
|
|
|
|
return AbsDatabase.syncLocalSessionsWithServer({ isFirstSync })
|
2023-02-05 22:54:46 +00:00
|
|
|
}
|
|
|
|
|
|
2022-06-02 00:38:26 +00:00
|
|
|
syncServerMediaProgressWithLocalMediaProgress(payload) {
|
|
|
|
|
return AbsDatabase.syncServerMediaProgressWithLocalMediaProgress(payload)
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-14 01:24:54 +00:00
|
|
|
updateLocalTrackOrder(payload) {
|
|
|
|
|
return AbsDatabase.updateLocalTrackOrder(payload)
|
|
|
|
|
}
|
2022-04-16 01:48:39 +00:00
|
|
|
|
2023-05-21 20:02:49 +00:00
|
|
|
// input: { localLibraryItemId:String, localEpisodeId:String, isFinished:Boolean }
|
2022-04-16 01:48:39 +00:00
|
|
|
updateLocalMediaProgressFinished(payload) {
|
|
|
|
|
return AbsDatabase.updateLocalMediaProgressFinished(payload)
|
|
|
|
|
}
|
2022-07-02 01:05:11 +00:00
|
|
|
|
2023-05-21 20:02:49 +00:00
|
|
|
// input: { localLibraryItemId:String, ebookLocation:String, ebookProgress:Double }
|
|
|
|
|
updateLocalEbookProgress(payload) {
|
|
|
|
|
return AbsDatabase.updateLocalEbookProgress(payload)
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-02 01:05:11 +00:00
|
|
|
updateDeviceSettings(payload) {
|
|
|
|
|
return AbsDatabase.updateDeviceSettings(payload)
|
|
|
|
|
}
|
2023-01-15 00:01:12 +00:00
|
|
|
|
|
|
|
|
getMediaItemHistory(mediaId) {
|
|
|
|
|
return AbsDatabase.getMediaItemHistory({ mediaId })
|
|
|
|
|
}
|
2022-03-06 18:53:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default ({ app, store }, inject) => {
|
|
|
|
|
inject('db', new DbService())
|
2025-07-01 16:33:51 +00:00
|
|
|
|
|
|
|
|
// Listen for token refresh events from native app
|
|
|
|
|
AbsDatabase.addListener('onTokenRefresh', (data) => {
|
|
|
|
|
console.log('[db] onTokenRefresh', data)
|
|
|
|
|
store.commit('user/setAccessToken', data.accessToken)
|
|
|
|
|
})
|
2025-07-05 22:40:57 +00:00
|
|
|
|
|
|
|
|
// Listen for token refresh failure events from native app
|
|
|
|
|
AbsDatabase.addListener('onTokenRefreshFailure', async (data) => {
|
|
|
|
|
console.log('[db] onTokenRefreshFailure', data)
|
|
|
|
|
// Clear store and redirect to login page
|
|
|
|
|
await store.dispatch('user/logout')
|
|
|
|
|
if (window.location.pathname !== '/connect') {
|
2025-08-16 22:55:00 +00:00
|
|
|
window.location.href = '/connect?error=refreshTokenFailed&serverConnectionConfigId=' + data.serverConnectionConfigId || ''
|
2025-07-05 22:40:57 +00:00
|
|
|
}
|
|
|
|
|
})
|
2025-07-01 16:33:51 +00:00
|
|
|
}
|