mirror of
https://github.com/nextcloud/talk-android.git
synced 2024-11-24 05:55:39 +03:00
Migrate ArbitraryStorageUtils to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
516b9190ad
commit
5c6fe628f1
3 changed files with 95 additions and 54 deletions
|
@ -42,10 +42,9 @@ import com.nextcloud.talk.activities.CallActivity;
|
|||
import com.nextcloud.talk.activities.MainActivity;
|
||||
import com.nextcloud.talk.api.NcApi;
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||
import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager;
|
||||
import com.nextcloud.talk.data.user.model.User;
|
||||
import com.nextcloud.talk.models.SignatureVerification;
|
||||
import com.nextcloud.talk.models.database.ArbitraryStorageEntity;
|
||||
import com.nextcloud.talk.models.database.UserEntity;
|
||||
import com.nextcloud.talk.models.json.chat.ChatUtils;
|
||||
import com.nextcloud.talk.models.json.conversations.Conversation;
|
||||
import com.nextcloud.talk.models.json.conversations.RoomOverall;
|
||||
|
@ -59,7 +58,6 @@ import com.nextcloud.talk.utils.DoNotDisturbUtils;
|
|||
import com.nextcloud.talk.utils.NotificationUtils;
|
||||
import com.nextcloud.talk.utils.PushUtils;
|
||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||
import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils;
|
||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
|
||||
|
||||
|
@ -91,6 +89,7 @@ import androidx.work.Data;
|
|||
import androidx.work.Worker;
|
||||
import androidx.work.WorkerParameters;
|
||||
import autodagger.AutoInjector;
|
||||
import io.reactivex.Maybe;
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import okhttp3.JavaNetCookieJar;
|
||||
|
@ -107,7 +106,7 @@ public class NotificationWorker extends Worker {
|
|||
AppPreferences appPreferences;
|
||||
|
||||
@Inject
|
||||
ArbitraryStorageUtils arbitraryStorageUtils;
|
||||
ArbitraryStorageManager arbitraryStorageManger;
|
||||
|
||||
@Inject
|
||||
Retrofit retrofit;
|
||||
|
@ -133,14 +132,19 @@ public class NotificationWorker extends Worker {
|
|||
private void showNotificationForCallWithNoPing(Intent intent) {
|
||||
User user = signatureVerification.getUser();
|
||||
|
||||
ArbitraryStorageEntity arbitraryStorageEntity;
|
||||
|
||||
if ((arbitraryStorageEntity = arbitraryStorageUtils.getStorageSetting(
|
||||
importantConversation = arbitraryStorageManger.getStorageSetting(
|
||||
user.getId(),
|
||||
"important_conversation",
|
||||
intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) != null) {
|
||||
importantConversation = Boolean.parseBoolean(arbitraryStorageEntity.getValue());
|
||||
}
|
||||
intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))
|
||||
.map(arbitraryStorage -> {
|
||||
if (arbitraryStorage != null) {
|
||||
return Boolean.parseBoolean(arbitraryStorage.getValue());
|
||||
} else {
|
||||
return importantConversation;
|
||||
}
|
||||
})
|
||||
.switchIfEmpty(Maybe.just(importantConversation))
|
||||
.blockingGet();
|
||||
|
||||
int apiVersion = ApiUtils.getConversationApiVersion(user, new int[] {ApiUtils.APIv4, 1});
|
||||
|
||||
|
@ -149,7 +153,7 @@ public class NotificationWorker extends Worker {
|
|||
.blockingSubscribe(new Observer<RoomOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
//unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -179,11 +183,12 @@ public class NotificationWorker extends Worker {
|
|||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
//unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
//unused atm
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -195,7 +200,7 @@ public class NotificationWorker extends Worker {
|
|||
.blockingSubscribe(new Observer<NotificationOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
//unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -258,11 +263,12 @@ public class NotificationWorker extends Worker {
|
|||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
|
||||
//unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
//unused atm
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
*/
|
||||
package com.nextcloud.talk.utils.database.arbitrarystorage;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.nextcloud.talk.models.database.ArbitraryStorage;
|
||||
|
@ -42,8 +44,8 @@ public class ArbitraryStorageUtils {
|
|||
this.dataStore = dataStore;
|
||||
}
|
||||
|
||||
|
||||
public void storeStorageSetting(long accountIdentifier, String key, String value, String object) {
|
||||
Log.e("ArbitraryStorageUtils", "storeStorageSetting: " + key + " / " + value + " / " + object);
|
||||
ArbitraryStorageEntity arbitraryStorageEntity = new ArbitraryStorageEntity();
|
||||
arbitraryStorageEntity.setAccountIdentifier(accountIdentifier);
|
||||
arbitraryStorageEntity.setKey(key);
|
||||
|
@ -57,15 +59,23 @@ public class ArbitraryStorageUtils {
|
|||
}
|
||||
|
||||
public ArbitraryStorageEntity getStorageSetting(long accountIdentifier, String key, @Nullable String object) {
|
||||
Log.e("ArbitraryStorageUtils", "getStorageSetting: " + accountIdentifier + " / " + key + " / " + object);
|
||||
Result findStorageQueryResult = dataStore.select(ArbitraryStorage.class)
|
||||
.where(ArbitraryStorageEntity.ACCOUNT_IDENTIFIER.eq(accountIdentifier)
|
||||
.and(ArbitraryStorageEntity.KEY.eq(key)).and(ArbitraryStorageEntity.OBJECT.eq(object)))
|
||||
.limit(1).get();
|
||||
|
||||
return (ArbitraryStorageEntity) findStorageQueryResult.firstOrNull();
|
||||
ArbitraryStorageEntity arbitraryStorageEntity = (ArbitraryStorageEntity) findStorageQueryResult.firstOrNull();
|
||||
|
||||
if(arbitraryStorageEntity != null) {
|
||||
Log.e("ArbitraryStorageUtils", "getStorageSetting: " + arbitraryStorageEntity.getKey() + " / " + arbitraryStorageEntity.getValue() + " / " + arbitraryStorageEntity.getObject());
|
||||
}
|
||||
|
||||
return arbitraryStorageEntity;
|
||||
}
|
||||
|
||||
public Observable deleteAllEntriesForAccountIdentifier(long accountIdentifier) {
|
||||
Log.e("ArbitraryStorageUtils", "deleteAllEntriesForAccountIdentifier: " + accountIdentifier);
|
||||
ReactiveScalar<Integer> deleteResult = dataStore.delete(ArbitraryStorage.class).where(ArbitraryStorageEntity.ACCOUNT_IDENTIFIER.eq(accountIdentifier)).get();
|
||||
|
||||
return deleteResult.single().toObservable()
|
||||
|
|
|
@ -28,11 +28,10 @@ import android.util.Log;
|
|||
|
||||
import com.nextcloud.talk.api.NcApi;
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||
import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager;
|
||||
import com.nextcloud.talk.data.user.model.User;
|
||||
import com.nextcloud.talk.models.database.ArbitraryStorageEntity;
|
||||
import com.nextcloud.talk.models.json.generic.GenericOverall;
|
||||
import com.nextcloud.talk.utils.ApiUtils;
|
||||
import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils;
|
||||
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew;
|
||||
import com.yarolegovich.mp.io.StorageModule;
|
||||
|
||||
|
@ -43,6 +42,7 @@ import java.util.Set;
|
|||
import javax.inject.Inject;
|
||||
|
||||
import autodagger.AutoInjector;
|
||||
import io.reactivex.Maybe;
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
@ -51,13 +51,13 @@ import io.reactivex.schedulers.Schedulers;
|
|||
@AutoInjector(NextcloudTalkApplication.class)
|
||||
public class DatabaseStorageModule implements StorageModule {
|
||||
private static final String TAG = "DatabaseStorageModule";
|
||||
|
||||
@Inject
|
||||
ArbitraryStorageUtils arbitraryStorageUtils;
|
||||
ArbitraryStorageManager arbitraryStorageManager;
|
||||
|
||||
@Inject
|
||||
NcApi ncApi;
|
||||
|
||||
|
||||
private User conversationUser;
|
||||
private String conversationToken;
|
||||
private long accountIdentifier;
|
||||
|
@ -89,12 +89,12 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
.subscribe(new Observer<GenericOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(@NotNull Disposable d) {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NotNull GenericOverall genericOverall) {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -104,14 +104,17 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if (!key.equals("conversation_lobby")) {
|
||||
arbitraryStorageUtils.storeStorageSetting(accountIdentifier, key, Boolean.toString(value), conversationToken);
|
||||
arbitraryStorageManager.storeStorageSetting(accountIdentifier,
|
||||
key,
|
||||
Boolean.toString(value),
|
||||
conversationToken);
|
||||
} else {
|
||||
lobbyValue = value;
|
||||
}
|
||||
|
@ -120,7 +123,7 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
@Override
|
||||
public void saveString(String key, String value) {
|
||||
if (!key.equals("message_notification_level")) {
|
||||
arbitraryStorageUtils.storeStorageSetting(accountIdentifier, key, value, conversationToken);
|
||||
arbitraryStorageManager.storeStorageSetting(accountIdentifier, key, value, conversationToken);
|
||||
} else {
|
||||
if (CapabilitiesUtilNew.hasSpreedFeatureCapability(conversationUser, "notification-levels")) {
|
||||
if (!TextUtils.isEmpty(messageNotificationLevel) && !messageNotificationLevel.equals(value)) {
|
||||
|
@ -139,17 +142,20 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
intValue = 0;
|
||||
}
|
||||
|
||||
int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1});
|
||||
int apiVersion = ApiUtils.getConversationApiVersion(conversationUser,
|
||||
new int[] {ApiUtils.APIv4, 1});
|
||||
|
||||
ncApi.setNotificationLevel(ApiUtils.getCredentials(conversationUser.getUsername(), conversationUser.getToken()),
|
||||
ApiUtils.getUrlForRoomNotificationLevel(apiVersion, conversationUser.getBaseUrl(),
|
||||
ncApi.setNotificationLevel(ApiUtils.getCredentials(conversationUser.getUsername(),
|
||||
conversationUser.getToken()),
|
||||
ApiUtils.getUrlForRoomNotificationLevel(apiVersion,
|
||||
conversationUser.getBaseUrl(),
|
||||
conversationToken),
|
||||
intValue)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe(new Observer<GenericOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -159,11 +165,12 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
// unused atm
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -175,12 +182,15 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
|
||||
@Override
|
||||
public void saveInt(String key, int value) {
|
||||
arbitraryStorageUtils.storeStorageSetting(accountIdentifier, key, Integer.toString(value), conversationToken);
|
||||
arbitraryStorageManager.storeStorageSetting(accountIdentifier,
|
||||
key,
|
||||
Integer.toString(value),
|
||||
conversationToken);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveStringSet(String key, Set<String> value) {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -188,37 +198,52 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
if (key.equals("conversation_lobby")) {
|
||||
return lobbyValue;
|
||||
} else {
|
||||
ArbitraryStorageEntity valueFromDb = arbitraryStorageUtils.getStorageSetting(accountIdentifier, key, conversationToken);
|
||||
if (valueFromDb == null) {
|
||||
return defaultVal;
|
||||
} else {
|
||||
return Boolean.parseBoolean(valueFromDb.getValue());
|
||||
}
|
||||
return arbitraryStorageManager
|
||||
.getStorageSetting(accountIdentifier, key, conversationToken)
|
||||
.map(arbitraryStorage -> {
|
||||
if (arbitraryStorage != null) {
|
||||
return Boolean.parseBoolean(arbitraryStorage.getValue());
|
||||
} else {
|
||||
return defaultVal;
|
||||
}
|
||||
})
|
||||
.switchIfEmpty(Maybe.just(defaultVal))
|
||||
.blockingGet();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getString(String key, String defaultVal) {
|
||||
if (!key.equals("message_notification_level")) {
|
||||
ArbitraryStorageEntity valueFromDb = arbitraryStorageUtils.getStorageSetting(accountIdentifier, key, conversationToken);
|
||||
if (valueFromDb == null) {
|
||||
return defaultVal;
|
||||
} else {
|
||||
return valueFromDb.getValue();
|
||||
}
|
||||
} else {
|
||||
if (key.equals("message_notification_level")) {
|
||||
return messageNotificationLevel;
|
||||
} else {
|
||||
return arbitraryStorageManager
|
||||
.getStorageSetting(accountIdentifier, key, conversationToken)
|
||||
.map(arbitraryStorage -> {
|
||||
if (arbitraryStorage != null) {
|
||||
return arbitraryStorage.getValue();
|
||||
} else {
|
||||
return defaultVal;
|
||||
}
|
||||
})
|
||||
.switchIfEmpty(Maybe.just(defaultVal))
|
||||
.blockingGet();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt(String key, int defaultVal) {
|
||||
ArbitraryStorageEntity valueFromDb = arbitraryStorageUtils.getStorageSetting(accountIdentifier, key, conversationToken);
|
||||
if (valueFromDb == null) {
|
||||
return defaultVal;
|
||||
} else {
|
||||
return Integer.parseInt(valueFromDb.getValue());
|
||||
}
|
||||
return arbitraryStorageManager
|
||||
.getStorageSetting(accountIdentifier, key, conversationToken)
|
||||
.map(arbitraryStorage -> {
|
||||
if (arbitraryStorage != null && arbitraryStorage.getValue() != null) {
|
||||
return Integer.parseInt(arbitraryStorage.getValue());
|
||||
} else {
|
||||
return defaultVal;
|
||||
}
|
||||
})
|
||||
.switchIfEmpty(Maybe.just(defaultVal))
|
||||
.blockingGet();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -228,11 +253,11 @@ public class DatabaseStorageModule implements StorageModule {
|
|||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRestoreInstanceState(Bundle savedState) {
|
||||
|
||||
// unused atm
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue