MainActivity.kt 65 lignes · 2466 octets
package fr.ebii.card2vcf

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.ui.Modifier
import fr.ebii.card2vcf.contact.ContactInsertIntent
import fr.ebii.card2vcf.contact.VcfShare
import fr.ebii.card2vcf.data.ContactImageStore
import fr.ebii.card2vcf.data.ContactRepository
import fr.ebii.card2vcf.scan.OpenCvScanEngine
import fr.ebii.card2vcf.sync.SyncCredentialsStore
import fr.ebii.card2vcf.ui.nav.Card2vcfNavHost
import fr.ebii.card2vcf.ui.theme.Card2vcfTheme
import fr.ebii.card2vcf.ui.theme.Canvas

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        OpenCvScanEngine.ensureOpenCv()

        val app = application as Card2vcfApp
        val images = ContactImageStore(this)
        val credentialsStore = SyncCredentialsStore(this)
        val repository = ContactRepository(
            dao = app.database.crmContactDao(),
            images = images,
            syncOpDao = app.database.syncOpDao(),
            isSyncEnabled = { credentialsStore.isConfigured() },
        )

        setContent {
            Card2vcfTheme {
                Box(
                    Modifier
                        .fillMaxSize()
                        .background(Canvas)
                        .systemBarsPadding(),
                ) {
                    Card2vcfNavHost(
                        repository = repository,
                        database = app.database,
                        onCreateContact = { card ->
                            startActivity(ContactInsertIntent.build(card))
                        },
                        onExportVcf = { card ->
                            startActivity(
                                android.content.Intent.createChooser(
                                    VcfShare.shareIntent(this@MainActivity, card),
                                    getString(R.string.scan_exporter_vcf),
                                ),
                            )
                        },
                    )
                }
            }
        }
    }
}