Skip to content

Commit

Permalink
Sync: Recovery PDF Location
Browse files Browse the repository at this point in the history
  • Loading branch information
malmstein committed Nov 21, 2023
1 parent 61c354e commit 9b89236
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ import timber.log.Timber

class ShareAction @Inject constructor(private val appBuildConfig: AppBuildConfig) {



fun shareFile(applicationContext: Context, file: File): Boolean {
val intent = createShareIntent(applicationContext, file)
return if (intent != null) startActivity(applicationContext, intent) else false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
package com.duckduckgo.sync.impl.ui

import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.DocumentsContract
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
Expand Down Expand Up @@ -45,6 +48,7 @@ import com.duckduckgo.sync.impl.ui.EnterCodeActivity.Companion.Code.CONNECT_CODE
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskDeleteAccount
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskEditDevice
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskPDFLocation
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskRemoveDevice
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskTurnOffSync
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.CheckIfUserHasStoragePermission
Expand Down Expand Up @@ -124,6 +128,15 @@ class SyncActivity : DuckDuckGoActivity() {
}
}

private val savePDFLauncher = registerForActivityResult(StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
Timber.d("Sync: Pdf location chosen")
result.data?.let {
viewModel.onPdfLocationChosen(it.data!!)
}
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
Expand Down Expand Up @@ -230,7 +243,17 @@ class SyncActivity : DuckDuckGoActivity() {
is AskRemoveDevice -> askRemoveDevice(it.device)
is AskEditDevice -> askEditDevice(it.device)
is ShowTextCode -> startActivity(ShowCodeActivity.intent(this))
is AskPDFLocation -> createFile()
}
}

private fun createFile() {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/pdf"
putExtra(Intent.EXTRA_TITLE, "invoice.pdf")
}
savePDFLauncher.launch(intent)
}

private fun askEditDevice(device: ConnectedDevice) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package com.duckduckgo.sync.impl.ui

import android.content.Context
import android.graphics.Bitmap
import android.net.Uri
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.duckduckgo.anvil.annotations.ContributesViewModel
Expand All @@ -34,6 +35,7 @@ import com.duckduckgo.sync.impl.Result.Success
import com.duckduckgo.sync.impl.SyncAccountRepository
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskDeleteAccount
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskEditDevice
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskPDFLocation
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskRemoveDevice
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.AskTurnOffSync
import com.duckduckgo.sync.impl.ui.SyncActivityViewModel.Command.CheckIfUserHasStoragePermission
Expand All @@ -54,6 +56,7 @@ import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import timber.log.Timber

@ContributesViewModel(ActivityScope::class)
class SyncActivityViewModel @Inject constructor(
Expand Down Expand Up @@ -138,6 +141,7 @@ class SyncActivityViewModel @Inject constructor(
object AskDeleteAccount : Command()
object CheckIfUserHasStoragePermission : Command()
data class RecoveryCodePDFSuccess(val recoveryCodePDFFile: File) : Command()
object AskPDFLocation : Command()
data class AskRemoveDevice(val device: ConnectedDevice) : Command()
data class AskEditDevice(val device: ConnectedDevice) : Command()
}
Expand Down Expand Up @@ -225,6 +229,11 @@ class SyncActivityViewModel @Inject constructor(
showAccountDetailsIfNeeded()
}

fun onPdfLocationChosen(fileLocation: Uri) {
Timber.d("Sync: Pdf location chosen $fileLocation")

}

fun onDeleteAccountClicked() {
viewModelScope.launch {
viewState.value = viewState.value.toggle(false)
Expand Down Expand Up @@ -260,8 +269,10 @@ class SyncActivityViewModel @Inject constructor(
fun generateRecoveryCode(viewContext: Context) {
viewModelScope.launch(dispatchers.io()) {
val recoveryCodeB64 = syncAccountRepository.getRecoveryCode() ?: return@launch
val generateRecoveryCodePDF = recoveryCodePDF.generateAndStoreRecoveryCodePDF(viewContext, recoveryCodeB64)
command.send(RecoveryCodePDFSuccess(generateRecoveryCodePDF))
command.send(AskPDFLocation)

// val generateRecoveryCodePDF = recoveryCodePDF.generateAndStoreRecoveryCodePDF(viewContext, recoveryCodeB64)
// command.send(RecoveryCodePDFSuccess(generateRecoveryCodePDF))
}
}

Expand Down

0 comments on commit 9b89236

Please sign in to comment.