mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
Migrate SignalingSettingsWorker from requery to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
22ef1457ee
commit
67318883d0
@ -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() {
|
||||
|
@ -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<UserEntity> userEntityList = new ArrayList<>();
|
||||
UserEntity userEntity;
|
||||
if (internalUserId == -1 || (userEntity = userUtils.getUserWithInternalId(internalUserId)) == null) {
|
||||
userEntityList = userUtils.getUsers();
|
||||
List<User> 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<SignalingSettingsOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
ncApi.getSignalingSettings(
|
||||
ApiUtils.getCredentials(user.getUsername(), user.getToken()),
|
||||
ApiUtils.getUrlForSignalingSettings(apiVersion, user.getBaseUrl()))
|
||||
.blockingSubscribe(new Observer<SignalingSettingsOverall>() {
|
||||
@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<UserEntity>() {
|
||||
@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();
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -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()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user