Procházet zdrojové kódy

add PeriodicWorkRequest to register local token every 24h

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe před 3 roky
rodič
revize
76cab3b9a0

+ 36 - 14
app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt

@@ -35,31 +35,53 @@ class ClosedInterfaceImpl : ClosedInterface, ProviderInstaller.ProviderInstallLi
     override fun onProviderInstallFailed(p0: Int, p1: Intent?) {
     }
 
+    private fun isGPlayServicesAvailable() : Boolean {
+        val api = GoogleApiAvailability.getInstance()
+        val code =
+            NextcloudTalkApplication.sharedApplication?.let {
+                api.isGooglePlayServicesAvailable(
+                    it.applicationContext
+                )
+            }
+        return code == ConnectionResult.SUCCESS
+    }
+
     override fun setUpPushTokenRegistration() {
+        registerLocalToken()
+        setUpPeriodicLocalTokenRegistration()
+        setUpPeriodicTokenRefreshFromFCM()
+    }
+
+    private fun registerLocalToken(){
         val pushRegistrationWork = OneTimeWorkRequest.Builder(PushRegistrationWorker::class.java).build()
         WorkManager.getInstance().enqueue(pushRegistrationWork)
+    }
 
-        val periodicPushRegistration = PeriodicWorkRequest.Builder(
-            GetFirebasePushTokenWorker::class.java, 15,  // TODO: discuss intervall. joas 24h, google 1 month
-            TimeUnit.MINUTES
+    private fun setUpPeriodicLocalTokenRegistration () {
+        val periodicTokenRegistration = PeriodicWorkRequest.Builder(
+            PushRegistrationWorker::class.java, 1,
+            TimeUnit.DAYS
         )
             .build()
 
         WorkManager.getInstance()
             .enqueueUniquePeriodicWork(
-                "periodicPushRegistration", ExistingPeriodicWorkPolicy.REPLACE,
-                periodicPushRegistration
+                "periodicTokenRegistration", ExistingPeriodicWorkPolicy.REPLACE,
+                periodicTokenRegistration
             )
     }
 
-    private fun isGPlayServicesAvailable() : Boolean {
-        val api = GoogleApiAvailability.getInstance()
-        val code =
-            NextcloudTalkApplication.sharedApplication?.let {
-                api.isGooglePlayServicesAvailable(
-                    it.applicationContext
-                )
-            }
-        return code == ConnectionResult.SUCCESS
+    private fun setUpPeriodicTokenRefreshFromFCM () {
+        val periodicTokenRefreshFromFCM = PeriodicWorkRequest.Builder(
+            GetFirebasePushTokenWorker::class.java, 30,
+            TimeUnit.DAYS
+        )
+            .build()
+
+        WorkManager.getInstance()
+            .enqueueUniquePeriodicWork(
+                "periodicTokenRefreshFromFCM", ExistingPeriodicWorkPolicy.REPLACE,
+                periodicTokenRefreshFromFCM
+            )
     }
 }