diff --git a/app/src/main/java/com/nextcloud/talk/arbitrarystorage/ArbitraryStorageManager.kt b/app/src/main/java/com/nextcloud/talk/arbitrarystorage/ArbitraryStorageManager.kt new file mode 100644 index 000000000..bf1ad0a55 --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/arbitrarystorage/ArbitraryStorageManager.kt @@ -0,0 +1,39 @@ +/* + * Nextcloud Talk application + * + * @author Andy Scherzinger + * Copyright (C) 2022 Andy Scherzinger + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.nextcloud.talk.arbitrarystorage + +import com.nextcloud.talk.data.storage.ArbitraryStoragesRepository +import com.nextcloud.talk.data.storage.model.ArbitraryStorage +import io.reactivex.Maybe + +class ArbitraryStorageManager(private val arbitraryStoragesRepository: ArbitraryStoragesRepository) { + fun storeStorageSetting(accountIdentifier: Long, key: String?, value: String?, objectString: String?) { + arbitraryStoragesRepository.saveArbitraryStorage(ArbitraryStorage(accountIdentifier, key, objectString, value)) + } + + fun getStorageSetting(accountIdentifier: Long, key: String, objectString: String): Maybe { + return arbitraryStoragesRepository.getStorageSetting(accountIdentifier, key, objectString) + } + + suspend fun deleteAllEntriesForAccountIdentifier(accountIdentifier: Long) { + return arbitraryStoragesRepository.deleteArbitraryStorage(accountIdentifier) + } +} diff --git a/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesDao.kt b/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesDao.kt index ae55b36ed..c74e08a82 100644 --- a/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesDao.kt +++ b/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesDao.kt @@ -25,6 +25,7 @@ import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import com.nextcloud.talk.data.storage.model.ArbitraryStorageEntity +import io.reactivex.Maybe @Dao abstract class ArbitraryStoragesDao { @@ -34,7 +35,11 @@ abstract class ArbitraryStoragesDao { "\"key\" = :key AND " + "object = :objectString" ) - abstract fun getStorageSetting(accountIdentifier: Long, key: String, objectString: String): ArbitraryStorageEntity + abstract fun getStorageSetting( + accountIdentifier: Long, + key: String, + objectString: String + ): Maybe @Query("DELETE FROM ArbitraryStorage WHERE accountIdentifier = :accountIdentifier") abstract suspend fun deleteArbitraryStorage(accountIdentifier: Long) diff --git a/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepository.kt b/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepository.kt index d3b06672b..157cfeb4f 100644 --- a/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepository.kt @@ -21,9 +21,10 @@ package com.nextcloud.talk.data.storage import com.nextcloud.talk.data.storage.model.ArbitraryStorage +import io.reactivex.Maybe interface ArbitraryStoragesRepository { - fun getStorageSetting(accountIdentifier: Long, key: String, objectString: String): ArbitraryStorage + fun getStorageSetting(accountIdentifier: Long, key: String, objectString: String): Maybe suspend fun deleteArbitraryStorage(accountIdentifier: Long) fun saveArbitraryStorage(arbitraryStorage: ArbitraryStorage): Long } diff --git a/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepositoryImpl.kt index 05aef2c8f..88203add1 100644 --- a/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/data/storage/ArbitraryStoragesRepositoryImpl.kt @@ -21,6 +21,7 @@ package com.nextcloud.talk.data.storage import com.nextcloud.talk.data.storage.model.ArbitraryStorage +import io.reactivex.Maybe class ArbitraryStoragesRepositoryImpl(private val arbitraryStoragesDao: ArbitraryStoragesDao) : ArbitraryStoragesRepository { @@ -28,10 +29,10 @@ class ArbitraryStoragesRepositoryImpl(private val arbitraryStoragesDao: Arbitrar accountIdentifier: Long, key: String, objectString: String - ): ArbitraryStorage { - return ArbitraryStorageMapper.toModel( - arbitraryStoragesDao.getStorageSetting(accountIdentifier, key, objectString) - )!! + ): Maybe { + return arbitraryStoragesDao + .getStorageSetting(accountIdentifier, key, objectString) + .map { ArbitraryStorageMapper.toModel(it) } } override suspend fun deleteArbitraryStorage(accountIdentifier: Long) { diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java index b54c358b4..ded6889c6 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java +++ b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java @@ -21,7 +21,10 @@ package com.nextcloud.talk.utils.database.arbitrarystorage; import autodagger.AutoInjector; import com.nextcloud.talk.application.NextcloudTalkApplication; +import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager; import com.nextcloud.talk.dagger.modules.DatabaseModule; +import com.nextcloud.talk.data.storage.ArbitraryStoragesRepository; + import dagger.Module; import dagger.Provides; import io.requery.Persistable; @@ -41,4 +44,9 @@ public class ArbitraryStorageModule { public ArbitraryStorageUtils provideArbitraryStorageUtils(ReactiveEntityStore dataStore) { return new ArbitraryStorageUtils(dataStore); } + + @Provides + public ArbitraryStorageManager provideArbitraryStorageManager(ArbitraryStoragesRepository repository) { + return new ArbitraryStorageManager(repository); + } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java index d9db2d559..2fb0f4e4f 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java @@ -29,6 +29,7 @@ import io.requery.query.Result; import io.requery.reactivex.ReactiveEntityStore; import io.requery.reactivex.ReactiveScalar; +@Deprecated public class ArbitraryStorageUtils { private ReactiveEntityStore dataStore;