diff --git a/app/build.gradle b/app/build.gradle index eb2973e..5fa3dc8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,7 +27,8 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' buildConfigField "Integer", "DB_VERSION", "1" buildConfigField "Boolean", "TEST", "false" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe36868..306b486 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,12 +8,6 @@ - - >() - private var fileName = "attestation.db" + private val _attestations = MutableLiveData>() + private val fileName = "attestation.db" private val type = object : TypeToken>() {}.type @Suppress("UNCHECKED_CAST") diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/dao/ConfigDao.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/dao/ConfigDao.kt new file mode 100644 index 0000000..eef99b9 --- /dev/null +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/dao/ConfigDao.kt @@ -0,0 +1,45 @@ +package fr.sanchezm.attestationsCovid19.data.db.dao + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.google.gson.Gson +import fr.sanchezm.attestationsCovid19.BuildConfig +import fr.sanchezm.attestationsCovid19.data.db.entity.Config +import java.io.File + +class ConfigDao(private val savePath: String) { + + private val _config = MutableLiveData() + private val fileName = "config.db" + + fun getConfig(): LiveData = + _config + + fun updateConfig(config: Config) { + _config.value = config + save() + } + + init { + load() + } + + private fun load() { + val file = File("$savePath/$fileName") + + if (file.exists()) { + _config.value = Gson().fromJson(file.readText(Charsets.UTF_8), Config::class.java) + _config.value?.versionCode = BuildConfig.VERSION_CODE + _config.value?.versionName = BuildConfig.VERSION_NAME + } else { + _config.value = + Config(BuildConfig.DB_VERSION, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE) + save() + } + } + + private fun save() { + File("$savePath/$fileName").writeText(Gson().toJson(_config.value)) + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/dao/ProfileDao.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/dao/ProfileDao.kt index d285a5d..c152df5 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/dao/ProfileDao.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/dao/ProfileDao.kt @@ -8,8 +8,8 @@ import java.io.File class ProfileDao(private val path: String) { - private var _profile = MutableLiveData() - private var fileName = "profile.db" + private val _profile = MutableLiveData() + private val fileName = "profile.db" fun getProfile(): LiveData = _profile diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/entity/Config.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/entity/Config.kt new file mode 100644 index 0000000..3f479d2 --- /dev/null +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/db/entity/Config.kt @@ -0,0 +1,7 @@ +package fr.sanchezm.attestationsCovid19.data.db.entity + +data class Config( + val dbVersion: Int, + var versionName: String, + var versionCode: Int +) \ No newline at end of file diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/data/repository/ConfigRepository.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/repository/ConfigRepository.kt new file mode 100644 index 0000000..0c0ccfd --- /dev/null +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/data/repository/ConfigRepository.kt @@ -0,0 +1,21 @@ +package fr.sanchezm.attestationsCovid19.data.repository + +import fr.sanchezm.attestationsCovid19.data.db.dao.ConfigDao +import fr.sanchezm.attestationsCovid19.data.db.entity.Config + +class ConfigRepository private constructor(private val configDao: ConfigDao) { + + fun getConfig() = configDao.getConfig() + + fun updateConfig(config: Config) = configDao.updateConfig(config) + + companion object { + @Volatile + private var instance: ConfigRepository? = null + + fun getInstance(configDao: ConfigDao) = + instance ?: synchronized(this) { + instance ?: ConfigRepository(configDao).also { instance = it } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModel.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModel.kt index b8249d8..2ad4498 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModel.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModel.kt @@ -10,6 +10,7 @@ import fr.sanchezm.attestationsCovid19.R import fr.sanchezm.attestationsCovid19.data.db.entity.Attestation import fr.sanchezm.attestationsCovid19.data.db.entity.Profile import fr.sanchezm.attestationsCovid19.data.repository.AttestationRepository +import fr.sanchezm.attestationsCovid19.data.repository.ConfigRepository import fr.sanchezm.attestationsCovid19.data.repository.ProfileRepository import fr.sanchezm.attestationsCovid19.utilities.Event import java.text.SimpleDateFormat @@ -18,6 +19,7 @@ import java.time.format.DateTimeFormatter import java.util.* class AddViewModel( + private val configRepository: ConfigRepository, private val profileRepository: ProfileRepository, private val attestationRepository: AttestationRepository ) : ViewModel() { diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModelFactory.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModelFactory.kt index 5570fb7..34545e8 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModelFactory.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/add/AddViewModelFactory.kt @@ -3,9 +3,11 @@ package fr.sanchezm.attestationsCovid19.ui.add import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import fr.sanchezm.attestationsCovid19.data.repository.AttestationRepository +import fr.sanchezm.attestationsCovid19.data.repository.ConfigRepository import fr.sanchezm.attestationsCovid19.data.repository.ProfileRepository class AddViewModelFactory( + private val configRepository: ConfigRepository, private val profileRepository: ProfileRepository, private val attestationRepository: AttestationRepository ) : @@ -13,6 +15,6 @@ class AddViewModelFactory( @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { - return AddViewModel(profileRepository, attestationRepository) as T + return AddViewModel(configRepository, profileRepository, attestationRepository) as T } } \ No newline at end of file diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModel.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModel.kt index 4a23ca4..1a240e1 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModel.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModel.kt @@ -5,9 +5,14 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import fr.sanchezm.attestationsCovid19.data.repository.AttestationRepository +import fr.sanchezm.attestationsCovid19.data.repository.ConfigRepository import fr.sanchezm.attestationsCovid19.utilities.Event -class AttestationsViewModel(attestationRepository: AttestationRepository) : ViewModel() { +class AttestationsViewModel( + private val configRepository: ConfigRepository, + attestationRepository: AttestationRepository +) : + ViewModel() { private val _startActivity = MutableLiveData>() private var _displayNoAttestation = MutableLiveData() diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModelFactory.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModelFactory.kt index 913cb1b..ed05e45 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModelFactory.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/attestations/AttestationsViewModelFactory.kt @@ -3,13 +3,16 @@ package fr.sanchezm.attestationsCovid19.ui.attestations import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import fr.sanchezm.attestationsCovid19.data.repository.AttestationRepository -import fr.sanchezm.attestationsCovid19.data.repository.ProfileRepository +import fr.sanchezm.attestationsCovid19.data.repository.ConfigRepository -class AttestationsViewModelFactory(private val attestationRepository: AttestationRepository) : +class AttestationsViewModelFactory( + private val configRepository: ConfigRepository, + private val attestationRepository: AttestationRepository +) : ViewModelProvider.NewInstanceFactory() { @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { - return AttestationsViewModel(attestationRepository) as T + return AttestationsViewModel(configRepository, attestationRepository) as T } } \ No newline at end of file diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModel.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModel.kt index 7a3e6b9..600c58d 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModel.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModel.kt @@ -7,10 +7,15 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import fr.sanchezm.attestationsCovid19.data.db.entity.Attestation import fr.sanchezm.attestationsCovid19.data.repository.AttestationRepository +import fr.sanchezm.attestationsCovid19.data.repository.ConfigRepository import fr.sanchezm.attestationsCovid19.utilities.Event import fr.sanchezm.attestationsCovid19.utilities.QRCodeUtils -class QrCodeViewModel(private val attestationRepository: AttestationRepository) : ViewModel() { +class QrCodeViewModel( + private val configRepository: ConfigRepository, + private val attestationRepository: AttestationRepository +) : + ViewModel() { private val _attestation = MutableLiveData() diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModelFactory.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModelFactory.kt index 18f4395..98bc5bd 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModelFactory.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/ui/qrcode/QrCodeViewModelFactory.kt @@ -3,12 +3,16 @@ package fr.sanchezm.attestationsCovid19.ui.qrcode import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import fr.sanchezm.attestationsCovid19.data.repository.AttestationRepository +import fr.sanchezm.attestationsCovid19.data.repository.ConfigRepository -class QrCodeViewModelFactory(private val attestationRepository: AttestationRepository) : +class QrCodeViewModelFactory( + private val configRepository: ConfigRepository, + private val attestationRepository: AttestationRepository +) : ViewModelProvider.NewInstanceFactory() { @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { - return QrCodeViewModel(attestationRepository) as T + return QrCodeViewModel(configRepository, attestationRepository) as T } } \ No newline at end of file diff --git a/app/src/main/java/fr/sanchezm/attestationsCovid19/utilities/InjectorUtils.kt b/app/src/main/java/fr/sanchezm/attestationsCovid19/utilities/InjectorUtils.kt index 0da4f76..9e0f85d 100644 --- a/app/src/main/java/fr/sanchezm/attestationsCovid19/utilities/InjectorUtils.kt +++ b/app/src/main/java/fr/sanchezm/attestationsCovid19/utilities/InjectorUtils.kt @@ -4,6 +4,7 @@ import android.content.Context import android.os.Environment import fr.sanchezm.attestationsCovid19.data.db.MyDatabase import fr.sanchezm.attestationsCovid19.data.repository.AttestationRepository +import fr.sanchezm.attestationsCovid19.data.repository.ConfigRepository import fr.sanchezm.attestationsCovid19.data.repository.ProfileRepository import fr.sanchezm.attestationsCovid19.ui.add.AddViewModelFactory import fr.sanchezm.attestationsCovid19.ui.attestations.AttestationsViewModelFactory @@ -11,41 +12,42 @@ import fr.sanchezm.attestationsCovid19.ui.qrcode.QrCodeViewModelFactory object InjectorUtils { - fun provideAddViewModelFactory(context: Context): AddViewModelFactory { - val profileRepository = - ProfileRepository.getInstance( - MyDatabase.invoke(context, getMyFilesDir(context)).profileDao() - ) - val attestationRepository = - AttestationRepository.getInstance( - MyDatabase.invoke(context, getMyFilesDir(context)).attestationDao() - ) + fun provideAddViewModelFactory(context: Context): AddViewModelFactory = + AddViewModelFactory( + getConfigRepo(context), + getProfileRepo(context), + getAttestationRepo(context) + ) - return AddViewModelFactory(profileRepository, attestationRepository) - } + fun provideAttestationViewModel(context: Context): AttestationsViewModelFactory = + AttestationsViewModelFactory( + getConfigRepo(context), + getAttestationRepo(context) + ) - fun provideAttestationViewModel(context: Context): AttestationsViewModelFactory { - val attestationRepository = - AttestationRepository.getInstance( - MyDatabase.invoke(context, getMyFilesDir(context)).attestationDao() - ) + fun provideQrCodeViewModel(context: Context): QrCodeViewModelFactory = + QrCodeViewModelFactory( + getConfigRepo(context), + getAttestationRepo(context) + ) - return AttestationsViewModelFactory(attestationRepository) - } + fun providePdfUtils(context: Context): PdfUtils = + PdfUtils.getInstance(context.assets, getMyFilesDir(context)) - fun provideQrCodeViewModel(context: Context): QrCodeViewModelFactory { - val attestationRepository = - AttestationRepository.getInstance( - MyDatabase.invoke(context, getMyFilesDir(context)).attestationDao() - ) + private fun getMyFilesDir(context: Context): String = + context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)?.path!! - return QrCodeViewModelFactory(attestationRepository) - } + private fun getAttestationRepo(context: Context): AttestationRepository = + AttestationRepository.getInstance( + MyDatabase.invoke(context, getMyFilesDir(context)).attestationDao() + ) - fun providePdfUtils(context: Context): PdfUtils { - return PdfUtils.getInstance(context.assets, getMyFilesDir(context)) - } + private fun getProfileRepo(context: Context): ProfileRepository = ProfileRepository.getInstance( + MyDatabase.invoke(context, getMyFilesDir(context)).profileDao() + ) - private fun getMyFilesDir(context: Context): String = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)?.path!! + private fun getConfigRepo(context: Context): ConfigRepository = ConfigRepository.getInstance( + MyDatabase.invoke(context, getMyFilesDir(context)).configDao() + ) } \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 9418759..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..4c50f55 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..7f3080f Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index d1db237..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..2b91601 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 9a77947..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..ea4fb45 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..ce4eb66 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index 4896373..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1d9f116 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 95690c6..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..5e9d49b Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index c9716cc..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..337a7f7 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 5834841..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..7f4b833 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 75bcc32..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..5e27941 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..98bd237 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 2c20f06..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..957a1cb Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 8221df5..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..ffeb1bd Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png deleted file mode 100644 index fd1684c..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..39c1e8f Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index fb44143..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..21fcf61 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ