mirror of
https://github.com/bitwarden/android.git
synced 2026-06-05 22:15:09 -05:00
BIT-1283 Clear the clipboard after the settings interval (#891)
This commit is contained in:
committed by
Álison Fernandes
parent
fc3cdeb798
commit
24806c4920
@@ -8,10 +8,15 @@ import android.widget.Toast
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.os.persistableBundleOf
|
||||
import androidx.work.ExistingWorkPolicy
|
||||
import androidx.work.OneTimeWorkRequest
|
||||
import androidx.work.WorkManager
|
||||
import com.x8bit.bitwarden.R
|
||||
import com.x8bit.bitwarden.data.platform.annotation.OmitFromCoverage
|
||||
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
|
||||
import com.x8bit.bitwarden.ui.platform.base.util.Text
|
||||
import com.x8bit.bitwarden.ui.platform.base.util.toAnnotatedString
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
* Default implementation of the [BitwardenClipboardManager] interface.
|
||||
@@ -19,9 +24,13 @@ import com.x8bit.bitwarden.ui.platform.base.util.toAnnotatedString
|
||||
@OmitFromCoverage
|
||||
class BitwardenClipboardManagerImpl(
|
||||
private val context: Context,
|
||||
private val settingsRepository: SettingsRepository,
|
||||
) : BitwardenClipboardManager {
|
||||
private val clipboardManager: ClipboardManager = requireNotNull(context.getSystemService())
|
||||
|
||||
private val clearClipboardFrequencySeconds: Int?
|
||||
get() = settingsRepository.clearClipboardFrequency.frequencySeconds
|
||||
|
||||
override fun setText(
|
||||
text: AnnotatedString,
|
||||
isSensitive: Boolean,
|
||||
@@ -46,6 +55,19 @@ class BitwardenClipboardManagerImpl(
|
||||
)
|
||||
.show()
|
||||
}
|
||||
|
||||
val frequency = clearClipboardFrequencySeconds ?: return
|
||||
val clearClipboardRequest: OneTimeWorkRequest =
|
||||
OneTimeWorkRequest
|
||||
.Builder(ClearClipboardWorker::class.java)
|
||||
.setInitialDelay(frequency.toLong(), TimeUnit.SECONDS)
|
||||
.build()
|
||||
|
||||
WorkManager.getInstance(context).enqueueUniqueWork(
|
||||
"ClearClipboard",
|
||||
ExistingWorkPolicy.REPLACE,
|
||||
clearClipboardRequest,
|
||||
)
|
||||
}
|
||||
|
||||
override fun setText(text: String, isSensitive: Boolean, toastDescriptorOverride: String?) {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.x8bit.bitwarden.data.platform.manager.clipboard
|
||||
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.content.Context.CLIPBOARD_SERVICE
|
||||
import androidx.work.Worker
|
||||
import androidx.work.WorkerParameters
|
||||
|
||||
/**
|
||||
* A worker to clear the clipboard manager.
|
||||
*/
|
||||
class ClearClipboardWorker(appContext: Context, workerParams: WorkerParameters) :
|
||||
Worker(appContext, workerParams) {
|
||||
|
||||
private val clipboardManager =
|
||||
appContext.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
||||
|
||||
override fun doWork(): Result {
|
||||
clipboardManager.clearPrimaryClip()
|
||||
return Result.success()
|
||||
}
|
||||
}
|
||||
@@ -83,7 +83,11 @@ object PlatformManagerModule {
|
||||
@Singleton
|
||||
fun provideBitwardenClipboardManager(
|
||||
@ApplicationContext context: Context,
|
||||
): BitwardenClipboardManager = BitwardenClipboardManagerImpl(context)
|
||||
settingsRepository: SettingsRepository,
|
||||
): BitwardenClipboardManager = BitwardenClipboardManagerImpl(
|
||||
context,
|
||||
settingsRepository,
|
||||
)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
|
||||
Reference in New Issue
Block a user