From 35aa444c9e30a107368473262f405fb0ca487185 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Mon, 20 Nov 2023 16:14:45 +0200
Subject: [PATCH] Create refresh token worker

---
 .../auth/feature/token/RefreshTokenWorker.kt  | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenWorker.kt

diff --git a/auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenWorker.kt b/auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenWorker.kt
new file mode 100644
index 000000000..feb4a0155
--- /dev/null
+++ b/auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenWorker.kt
@@ -0,0 +1,38 @@
+package org.futo.circles.auth.feature.token
+
+import android.content.Context
+import androidx.hilt.work.HiltWorker
+import androidx.work.CoroutineWorker
+import androidx.work.WorkManager
+import androidx.work.WorkerParameters
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedInject
+import org.futo.circles.core.extensions.Response
+import javax.inject.Inject
+
+@HiltWorker
+class RefreshTokenWorker @AssistedInject constructor(
+    @Assisted val context: Context,
+    @Assisted val params: WorkerParameters
+) : CoroutineWorker(context, params) {
+
+    @Inject
+    lateinit var refreshTokenDataSource: RefreshTokenDataSource
+
+    override suspend fun doWork(): Result {
+        val sessionId = params.inputData.getString(SESSION_ID_PARAM_KEY) ?: run {
+            WorkManager.getInstance(context).cancelWorkById(this.id)
+            return Result.failure()
+        }
+        val result = refreshTokenDataSource.refreshToken(sessionId)
+        return if (result is Response.Success) Result.success()
+        else {
+            WorkManager.getInstance(context).cancelWorkById(this.id)
+            Result.failure()
+        }
+    }
+
+    companion object {
+        const val SESSION_ID_PARAM_KEY = "sessionId"
+    }
+}
-- 
GitLab