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