diff --git a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java index d8a47345c..3c8b20115 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java @@ -30,6 +30,7 @@ import com.nextcloud.talk.events.EventStatus; import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall; import com.nextcloud.talk.users.UserManager; import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.UserIdUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import org.greenrobot.eventbus.EventBus; @@ -83,32 +84,24 @@ public class CapabilitiesWorker extends Worker { try { int rowsCount = userManager.updateOrCreateUser(user).blockingGet(); if (rowsCount > 0) { - eventBus.post(new EventStatus(getIdForUser(user), + eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user), EventStatus.EventType.CAPABILITIES_FETCH, true)); } else { Log.w(TAG, "Error updating user"); - eventBus.post(new EventStatus(getIdForUser(user), + eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user), EventStatus.EventType.CAPABILITIES_FETCH, false)); } } catch (Exception e) { Log.e(TAG, "Error updating user", e); - eventBus.post(new EventStatus(getIdForUser(user), + eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user), EventStatus.EventType.CAPABILITIES_FETCH, false)); } } } - private long getIdForUser(User user) { - if (user != null && user.getId() != null) { - return user.getId(); - } else { - return NO_ID; - } - } - @NonNull @Override public Result doWork() { diff --git a/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java index fcc6b802e..cc5e9dc49 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java @@ -21,22 +21,20 @@ package com.nextcloud.talk.jobs; import android.content.Context; -import android.util.Log; -import com.bluelinelabs.logansquare.LoganSquare; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; +import com.nextcloud.talk.data.user.model.User; import com.nextcloud.talk.events.EventStatus; import com.nextcloud.talk.models.ExternalSignalingServer; -import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall; +import com.nextcloud.talk.users.UserManager; import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.UserIdUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; -import com.nextcloud.talk.utils.database.user.UserUtils; import org.greenrobot.eventbus.EventBus; -import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -54,10 +52,9 @@ import io.reactivex.disposables.Disposable; @AutoInjector(NextcloudTalkApplication.class) public class SignalingSettingsWorker extends Worker { - private static final String TAG = "SignalingSettingsJob"; @Inject - UserUtils userUtils; + UserManager userManager; @Inject NcApi ncApi; @@ -78,77 +75,75 @@ public class SignalingSettingsWorker extends Worker { long internalUserId = data.getLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), -1); - List userEntityList = new ArrayList<>(); - UserEntity userEntity; - if (internalUserId == -1 || (userEntity = userUtils.getUserWithInternalId(internalUserId)) == null) { - userEntityList = userUtils.getUsers(); + List userEntityObjectList = new ArrayList<>(); + boolean userExists = userManager.getUserWithInternalId(internalUserId).isEmpty().blockingGet(); + + if (internalUserId == -1 || !userExists) { + userEntityObjectList = userManager.getUsers().blockingGet(); } else { - userEntityList.add(userEntity); + userEntityObjectList.add(userManager.getUserWithInternalId(internalUserId).blockingGet()); } - for (int i = 0; i < userEntityList.size(); i++) { - userEntity = userEntityList.get(i); - UserEntity finalUserEntity = userEntity; + for (User user : userEntityObjectList) { - int apiVersion = ApiUtils.getSignalingApiVersion(finalUserEntity, new int[] {ApiUtils.APIv3, 2, 1}); + int apiVersion = ApiUtils.getSignalingApiVersion(user, new int[] {ApiUtils.APIv3, 2, 1}); - ncApi.getSignalingSettings(ApiUtils.getCredentials(userEntity.getUsername(), userEntity.getToken()), - ApiUtils.getUrlForSignalingSettings(apiVersion, userEntity.getBaseUrl())) - .blockingSubscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + ncApi.getSignalingSettings( + ApiUtils.getCredentials(user.getUsername(), user.getToken()), + ApiUtils.getUrlForSignalingSettings(apiVersion, user.getBaseUrl())) + .blockingSubscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + // unused stm + } + @Override + public void onNext(SignalingSettingsOverall signalingSettingsOverall) { + ExternalSignalingServer externalSignalingServer; + externalSignalingServer = new ExternalSignalingServer(); + + if (signalingSettingsOverall.getOcs() != null && + signalingSettingsOverall.getOcs().getSettings() != null) { + externalSignalingServer.setExternalSignalingServer(signalingSettingsOverall + .getOcs() + .getSettings() + .getExternalSignalingServer()); + externalSignalingServer.setExternalSignalingTicket(signalingSettingsOverall + .getOcs() + .getSettings() + .getExternalSignalingTicket()); } - @Override - public void onNext(SignalingSettingsOverall signalingSettingsOverall) { - ExternalSignalingServer externalSignalingServer; - externalSignalingServer = new ExternalSignalingServer(); - externalSignalingServer.setExternalSignalingServer(signalingSettingsOverall.getOcs().getSettings().getExternalSignalingServer()); - externalSignalingServer.setExternalSignalingTicket(signalingSettingsOverall.getOcs().getSettings().getExternalSignalingTicket()); + int rows = userManager.saveUser(user).blockingGet(); - try { - userUtils.createOrUpdateUser(null, null, null, null, null, - null, null, finalUserEntity.getId(), null, null, LoganSquare.serialize(externalSignalingServer)) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(UserEntity userEntity) { - eventBus.post(new EventStatus(finalUserEntity.getId(), EventStatus.EventType.SIGNALING_SETTINGS, true)); - } - - @Override - public void onError(Throwable e) { - eventBus.post(new EventStatus(finalUserEntity.getId(), EventStatus.EventType.SIGNALING_SETTINGS, false)); - } - - @Override - public void onComplete() { - - } - }); - } catch (IOException e) { - Log.e(TAG, "Failed to serialize external signaling server"); - } + if (rows > 0) { + eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user), + EventStatus.EventType.SIGNALING_SETTINGS, + true)); + } else { + eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user), + EventStatus.EventType.SIGNALING_SETTINGS, + false)); } + } - @Override - public void onError(Throwable e) { - eventBus.post(new EventStatus(finalUserEntity.getId(), EventStatus.EventType.SIGNALING_SETTINGS, false)); - } + @Override + public void onError(Throwable e) { + eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user), + EventStatus.EventType.SIGNALING_SETTINGS, + false)); + } - @Override - public void onComplete() { - - } - }); + @Override + public void onComplete() { + // unused atm + } + }); } - OneTimeWorkRequest websocketConnectionsWorker = new OneTimeWorkRequest.Builder(WebsocketConnectionsWorker.class).build(); + OneTimeWorkRequest websocketConnectionsWorker = new OneTimeWorkRequest + .Builder(WebsocketConnectionsWorker.class) + .build(); WorkManager.getInstance().enqueue(websocketConnectionsWorker); return Result.success(); diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index 3a5f24afb..fe515e147 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -35,15 +35,15 @@ import autodagger.AutoInjector import com.bluelinelabs.conductor.Controller import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication -import com.nextcloud.talk.models.database.UserEntity +import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.models.json.generic.GenericOverall +import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.UriUtils import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FILE_PATHS import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_META_DATA import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN -import com.nextcloud.talk.utils.database.user.UserUtils import com.nextcloud.talk.utils.preferences.AppPreferences import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers @@ -56,7 +56,6 @@ import java.io.File import java.io.FileNotFoundException import java.io.FileOutputStream import java.io.InputStream -import java.util.ArrayList import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) @@ -67,7 +66,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa lateinit var ncApi: NcApi @Inject - lateinit var userUtils: UserUtils + lateinit var userManager: UserManager @Inject lateinit var appPreferences: AppPreferences @@ -86,7 +85,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa } try { - val currentUser = userUtils.currentUser + val currentUser = userManager.currentUser.blockingGet() val sourcefiles = inputData.getStringArray(DEVICE_SOURCEFILES) val ncTargetpath = inputData.getString(NC_TARGETPATH) val roomToken = inputData.getString(ROOM_TOKEN) @@ -137,7 +136,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa } private fun uploadFile( - currentUser: UserEntity, + currentUser: User, uploadItem: UploadItem, ncTargetPath: String?, roomToken: String?, @@ -192,7 +191,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa private fun shareFile( roomToken: String?, - currentUser: UserEntity, + currentUser: User, ncTargetpath: String?, filename: String?, metaData: String? @@ -202,7 +201,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa paths.add("$ncTargetpath/$filename") val data = Data.Builder() - .putLong(KEY_INTERNAL_USER_ID, currentUser.id) + .putLong(KEY_INTERNAL_USER_ID, currentUser.id!!) .putString(KEY_ROOM_TOKEN, roomToken) .putStringArray(KEY_FILE_PATHS, paths.toTypedArray()) .putString(KEY_META_DATA, metaData) diff --git a/app/src/main/java/com/nextcloud/talk/receivers/DirectReplyReceiver.kt b/app/src/main/java/com/nextcloud/talk/receivers/DirectReplyReceiver.kt index 94dc48fbf..64f62f564 100644 --- a/app/src/main/java/com/nextcloud/talk/receivers/DirectReplyReceiver.kt +++ b/app/src/main/java/com/nextcloud/talk/receivers/DirectReplyReceiver.kt @@ -38,14 +38,14 @@ import autodagger.AutoInjector import com.nextcloud.talk.R import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication -import com.nextcloud.talk.models.database.UserEntity +import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.models.json.generic.GenericOverall +import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.NotificationUtils import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SYSTEM_NOTIFICATION_ID -import com.nextcloud.talk.utils.database.user.UserUtils import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -56,13 +56,13 @@ import javax.inject.Inject class DirectReplyReceiver : BroadcastReceiver() { @Inject - lateinit var userUtils: UserUtils + lateinit var userManager: UserManager @Inject lateinit var ncApi: NcApi lateinit var context: Context - lateinit var currentUser: UserEntity + lateinit var currentUser: User private var systemNotificationId: Int? = null private var roomToken: String? = null private var replyMessage: CharSequence? = null @@ -79,8 +79,8 @@ class DirectReplyReceiver : BroadcastReceiver() { systemNotificationId = intent!!.getIntExtra(KEY_SYSTEM_NOTIFICATION_ID, 0) roomToken = intent.getStringExtra(KEY_ROOM_TOKEN) - val id = intent.getLongExtra(KEY_INTERNAL_USER_ID, userUtils.currentUser!!.id) - currentUser = userUtils.getUserWithId(id) + val id = intent.getLongExtra(KEY_INTERNAL_USER_ID, userManager.currentUser.blockingGet().id!!) + currentUser = userManager.getUserWithId(id).blockingGet() replyMessage = getMessageText(intent) sendDirectReply() diff --git a/app/src/main/java/com/nextcloud/talk/receivers/MarkAsReadReceiver.kt b/app/src/main/java/com/nextcloud/talk/receivers/MarkAsReadReceiver.kt index 46095f852..7426293aa 100644 --- a/app/src/main/java/com/nextcloud/talk/receivers/MarkAsReadReceiver.kt +++ b/app/src/main/java/com/nextcloud/talk/receivers/MarkAsReadReceiver.kt @@ -32,14 +32,14 @@ import androidx.annotation.RequiresApi import autodagger.AutoInjector import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication -import com.nextcloud.talk.models.database.UserEntity +import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.models.json.generic.GenericOverall +import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_MESSAGE_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SYSTEM_NOTIFICATION_ID -import com.nextcloud.talk.utils.database.user.UserUtils import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -50,13 +50,13 @@ import javax.inject.Inject class MarkAsReadReceiver : BroadcastReceiver() { @Inject - lateinit var userUtils: UserUtils + lateinit var userManager: UserManager @Inject lateinit var ncApi: NcApi lateinit var context: Context - lateinit var currentUser: UserEntity + lateinit var currentUser: User private var systemNotificationId: Int? = null private var roomToken: String? = null private var messageId: Int = 0 @@ -74,8 +74,8 @@ class MarkAsReadReceiver : BroadcastReceiver() { roomToken = intent.getStringExtra(KEY_ROOM_TOKEN) messageId = intent.getIntExtra(KEY_MESSAGE_ID, 0) - val id = intent.getLongExtra(KEY_INTERNAL_USER_ID, userUtils.currentUser!!.id) - currentUser = userUtils.getUserWithId(id) + val id = intent.getLongExtra(KEY_INTERNAL_USER_ID, userManager.currentUser.blockingGet().id!!) + currentUser = userManager.getUserWithId(id).blockingGet() markAsRead() }