Skip to content

Commit

Permalink
feat: add confirm import dialog when opening vcf file in app
Browse files Browse the repository at this point in the history
  • Loading branch information
Bnyro committed Feb 6, 2024
1 parent a4bdcb8 commit 6221767
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@ import android.os.Bundle
import android.os.Parcelable
import android.provider.ContactsContract.Intents
import android.provider.ContactsContract.QuickContact
import android.util.Log
import androidx.activity.compose.setContent
import com.bnyro.contacts.obj.ContactData
import com.bnyro.contacts.obj.ValueWithType
import com.bnyro.contacts.ui.components.ConfirmImportContactsDialog
import com.bnyro.contacts.ui.components.dialogs.AddToContactDialog
import com.bnyro.contacts.ui.models.ContactsModel
import com.bnyro.contacts.ui.screens.MainAppContent
import com.bnyro.contacts.ui.theme.ConnectYouTheme
import com.bnyro.contacts.util.BackupHelper
Expand All @@ -30,7 +29,6 @@ class MainActivity : BaseActivity() {

contactsModel.initialContactId = getInitialContactId()
contactsModel.initialContactData = getInsertContactData()
handleVcfShareAction(contactsModel)

smsModel.initialAddressAndBody = getInitialSmsAddressAndBody()

Expand All @@ -40,6 +38,9 @@ class MainActivity : BaseActivity() {
getInsertOrEditNumber()?.let {
AddToContactDialog(it)
}
getSharedVcfUri()?.let {
ConfirmImportContactsDialog(contactsModel, it)
}
}
}
}
Expand Down Expand Up @@ -110,18 +111,15 @@ class MainActivity : BaseActivity() {
return ContactsHelper.normalizePhoneNumber(address) to body
}

private fun handleVcfShareAction(contactsModel: ContactsModel) {
if (intent?.type !in BackupHelper.vCardMimeTypes) return
private fun getSharedVcfUri(): Uri? {
if (intent?.type !in BackupHelper.vCardMimeTypes) return null

val uri = when (intent.action) {
Intent.ACTION_VIEW -> intent?.data
Intent.ACTION_SEND -> intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri
else -> null
}

uri?.let {
Log.d("VCF Intent", "Received a valid intent with uri : $it")
contactsModel.importVcf(this, it)
}
return uri
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.bnyro.contacts.ui.components

import android.net.Uri
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import com.bnyro.contacts.R
import com.bnyro.contacts.ui.components.dialogs.ConfirmationDialog
import com.bnyro.contacts.ui.models.ContactsModel

@Composable
fun ConfirmImportContactsDialog(contactsModel: ContactsModel, contactsUri: Uri) {
val context = LocalContext.current

var showDialog by remember {
mutableStateOf(true)
}

if (showDialog) {
ConfirmationDialog(
onDismissRequest = { showDialog = false },
title = stringResource(R.string.import_vcf),
text = stringResource(R.string.import_confirm)
) {
contactsModel.importVcf(context, contactsUri)
}
}
}
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
<string name="import_vcf">Import vCard</string>
<string name="export_vcf">Export vCard</string>
<string name="import_sim">Import from SIM</string>
<string name="import_confirm">Do you want to import the selected VCF file?</string>
<!-- Settings -->
<string name="settings">Settings</string>
<string name="start_tab">Start tab</string>
Expand Down

0 comments on commit 6221767

Please sign in to comment.