diff --git a/app/src/gplay/java/com/nextcloud/talk/jobs/GetFirebasePushTokenWorker.kt b/app/src/gplay/java/com/nextcloud/talk/jobs/GetFirebasePushTokenWorker.kt index 236e50a43..38206210a 100644 --- a/app/src/gplay/java/com/nextcloud/talk/jobs/GetFirebasePushTokenWorker.kt +++ b/app/src/gplay/java/com/nextcloud/talk/jobs/GetFirebasePushTokenWorker.kt @@ -23,6 +23,7 @@ package com.nextcloud.talk.jobs import android.annotation.SuppressLint import android.content.Context import android.util.Log +import androidx.work.Data import androidx.work.OneTimeWorkRequest import androidx.work.WorkManager import androidx.work.Worker @@ -50,7 +51,11 @@ class GetFirebasePushTokenWorker(val context: Context, workerParameters: WorkerP val token = task.result appPreferences?.pushToken = token - val pushRegistrationWork = OneTimeWorkRequest.Builder(PushRegistrationWorker::class.java).build() + + val data: Data = Data.Builder().putString(PushRegistrationWorker.ORIGIN, "GetFirebasePushTokenWorker").build() + val pushRegistrationWork = OneTimeWorkRequest.Builder(PushRegistrationWorker::class.java) + .setInputData(data) + .build() WorkManager.getInstance(context).enqueue(pushRegistrationWork) }) diff --git a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt index a6cd04693..1cb242863 100644 --- a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt +++ b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt @@ -131,7 +131,11 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() { sharedApplication!!.componentApplication.inject(this) appPreferences!!.pushToken = token Log.d(TAG, "onNewToken. token = $token") - val pushRegistrationWork = OneTimeWorkRequest.Builder(PushRegistrationWorker::class.java).build() + + val data: Data = Data.Builder().putString(PushRegistrationWorker.ORIGIN, "onNewToken").build() + val pushRegistrationWork = OneTimeWorkRequest.Builder(PushRegistrationWorker::class.java) + .setInputData(data) + .build() WorkManager.getInstance().enqueue(pushRegistrationWork) } diff --git a/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt b/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt index d120e17b4..bc8b08d31 100644 --- a/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt +++ b/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt @@ -22,6 +22,7 @@ package com.nextcloud.talk.utils import android.content.Intent +import androidx.work.Data import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.OneTimeWorkRequest import androidx.work.PeriodicWorkRequest @@ -74,15 +75,21 @@ class ClosedInterfaceImpl : ClosedInterface, ProviderInstaller.ProviderInstallLi } private fun registerLocalToken() { - val pushRegistrationWork = OneTimeWorkRequest.Builder(PushRegistrationWorker::class.java).build() + val data: Data = Data.Builder().putString(PushRegistrationWorker.ORIGIN, "ClosedInterfaceImpl#registerLocalToken").build() + val pushRegistrationWork = OneTimeWorkRequest.Builder(PushRegistrationWorker::class.java) + .setInputData(data) + .build() WorkManager.getInstance().enqueue(pushRegistrationWork) } private fun setUpPeriodicLocalTokenRegistration() { + val data: Data = Data.Builder().putString(PushRegistrationWorker.ORIGIN, "ClosedInterfaceImpl#setUpPeriodicLocalTokenRegistration").build() + val periodicTokenRegistration = PeriodicWorkRequest.Builder( PushRegistrationWorker::class.java, 1, TimeUnit.DAYS ) + .setInputData(data) .build() WorkManager.getInstance() diff --git a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt index 02b26ed4b..e31fe0daf 100644 --- a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt +++ b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt @@ -130,6 +130,7 @@ class NextcloudTalkApplication : MultiDexApplication(), LifecycleObserver { //region Overridden methods override fun onCreate() { + Log.d(TAG, "onCreate") sharedApplication = this val securityKeyManager = SecurityKeyManager.getInstance() diff --git a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java index 47aaaf42f..59d9d9f4a 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java @@ -377,7 +377,12 @@ public class AccountVerificationController extends BaseController { } private void registerForPush() { - OneTimeWorkRequest pushRegistrationWork = new OneTimeWorkRequest.Builder(PushRegistrationWorker.class).build(); + Data data = + new Data.Builder().putString(PushRegistrationWorker.ORIGIN, "AccountVerificationController#registerForPush").build(); + + OneTimeWorkRequest pushRegistrationWork = new OneTimeWorkRequest.Builder(PushRegistrationWorker.class) + .setInputData(data) + .build(); WorkManager.getInstance().enqueue(pushRegistrationWork); } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java index 542ecfbad..1d5f7a05b 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java @@ -76,6 +76,7 @@ import javax.inject.Inject; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.res.ResourcesCompat; +import androidx.work.Data; import androidx.work.OneTimeWorkRequest; import androidx.work.WorkManager; import autodagger.AutoInjector; @@ -407,7 +408,12 @@ public class WebViewLoginController extends BaseController { ApplicationWideMessageHolder.getInstance().setMessageType(finalMessageType); } - OneTimeWorkRequest pushRegistrationWork = new OneTimeWorkRequest.Builder(PushRegistrationWorker.class).build(); + Data data = + new Data.Builder().putString(PushRegistrationWorker.ORIGIN, + "WebViewLoginController#parseAndLoginFromWebView").build(); + OneTimeWorkRequest pushRegistrationWork = new OneTimeWorkRequest.Builder(PushRegistrationWorker.class) + .setInputData(data) + .build(); WorkManager.getInstance().enqueue(pushRegistrationWork); getRouter().popCurrentController(); diff --git a/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java index 583bf7ed4..71cbc29b2 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java @@ -26,6 +26,7 @@ import android.content.Context; import android.util.Log; import androidx.annotation.NonNull; +import androidx.work.Data; import androidx.work.Worker; import androidx.work.WorkerParameters; @@ -34,6 +35,7 @@ import com.nextcloud.talk.utils.PushUtils; public class PushRegistrationWorker extends Worker { public static final String TAG = "PushRegistrationWorker"; + public static final String ORIGIN = "origin"; public PushRegistrationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); @@ -43,6 +45,10 @@ public class PushRegistrationWorker extends Worker { @Override public Result doWork() { if(new ClosedInterfaceImpl().isGooglePlayServicesAvailable()){ + Data data = getInputData(); + String origin = data.getString("origin"); + Log.d(TAG, "PushRegistrationWorker called via " + origin); + PushUtils pushUtils = new PushUtils(); pushUtils.generateRsa2048KeyPair(); pushUtils.pushRegistrationToServer(); diff --git a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java index f92b0a5ce..bf363681d 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java @@ -230,10 +230,14 @@ public class PushUtils { devicePublicKeyBase64 = "-----BEGIN PUBLIC KEY-----\n" + devicePublicKeyBase64 + "\n-----END PUBLIC KEY-----\n"; + Log.d(TAG, "userUtils.getUsers().size(): " + userUtils.getUsers().size()); + if (userUtils.anyUserExists()) { for (Object userEntityObject : userUtils.getUsers()) { UserEntity userEntity = (UserEntity) userEntityObject; + Log.d(TAG, "userEntity.getUsername(): " + userEntity.getUsername()); + if (!userEntity.getScheduledForDeletion()) { Map nextcloudRegisterPushMap = new HashMap<>(); nextcloudRegisterPushMap.put("format", "json");