Commit cdac8ab8 authored by stopcovid@lunabee.com's avatar stopcovid@lunabee.com
Browse files

Update to 2.2.5

- Catch crash when launching BLE module
- Add vaccination centers
parent 2203d336
......@@ -19,7 +19,7 @@ android {
minSdkVersion 21
targetSdkVersion 30
buildConfigField 'String', 'BLE_VERSION', '"2.1.0"'
buildConfigField 'String', 'BLE_VERSION', '"2.1.1"'
}
compileOptions {
......
......@@ -20,6 +20,7 @@ import com.orange.proximitynotification.ble.BleProximityNotification
import com.orange.proximitynotification.ble.BleProximityNotificationFactory
import com.orange.proximitynotification.ble.BleSettings
import com.orange.proximitynotification.tools.BluetoothStateBroadcastReceiver
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.NonCancellable
......@@ -51,6 +52,7 @@ abstract class ProximityNotificationService : Service(),
abstract val foregroundNotificationId: Int
abstract val bleSettings: BleSettings
abstract val exceptionHandler: CoroutineExceptionHandler
private val bluetoothAdapter: BluetoothAdapter
get() = BluetoothAdapter.getDefaultAdapter()
......@@ -160,7 +162,7 @@ abstract class ProximityNotificationService : Service(),
fun isRunning() = bleProximityNotification?.isRunning == true
protected open fun doStart() {
launch(Dispatchers.Main.immediate + NonCancellable) {
launch(Dispatchers.Main.immediate + NonCancellable + exceptionHandler) {
if (!isBluetoothRestartInProgress) {
startForeground(foregroundNotificationId, buildForegroundServiceNotification())
......@@ -171,8 +173,7 @@ abstract class ProximityNotificationService : Service(),
}
protected open fun doStop() {
launch(Dispatchers.Main.immediate + NonCancellable) {
launch(Dispatchers.Main.immediate + NonCancellable + exceptionHandler) {
stopBleProximityNotification()
if (!isBluetoothRestartInProgress) {
......
......@@ -13,6 +13,7 @@ package com.lunabeestudio.stopcovid.coreui.extension
import android.content.Context
import android.content.Intent
import android.net.Uri
import androidx.core.util.AtomicFile
import androidx.emoji.text.EmojiCompat
import com.lunabeestudio.stopcovid.coreui.BuildConfig
import com.lunabeestudio.stopcovid.coreui.network.OkHttpClient
......@@ -22,6 +23,7 @@ import okhttp3.Request
import retrofit2.HttpException
import retrofit2.Response
import java.io.File
import java.io.FileOutputStream
@Suppress("BlockingMethodInNonBlockingContext")
suspend fun String.saveTo(context: Context, file: File) {
......@@ -43,6 +45,26 @@ suspend fun String.saveTo(context: Context, file: File) {
}
}
@Suppress("BlockingMethodInNonBlockingContext")
suspend fun String.saveTo(context: Context, atomicFile: AtomicFile): FileOutputStream? {
return withContext(Dispatchers.IO) {
val okHttpClient = OkHttpClient.getDefaultOKHttpClient(context, this@saveTo, BuildConfig.SERVER_CERTIFICATE_SHA256)
val request: Request = Request.Builder()
.url(this@saveTo)
.build()
val response = okHttpClient.newCall(request).execute()
if (response.isSuccessful && response.body != null) {
val fileOutputStream = atomicFile.startWrite()
response.body!!.string().byteInputStream().use { input ->
input.copyTo(fileOutputStream, 4 * 1024)
}
fileOutputStream
} else {
throw HttpException(Response.error<Any>(response.body!!, response))
}
}
}
fun String.callPhone(context: Context) {
val callIntent = Intent(Intent.ACTION_DIAL)
callIntent.data = Uri.parse("tel:$this")
......
......@@ -94,6 +94,8 @@ internal class ApiConfiguration(
val allowNoAdvertisingDevice: Boolean,
@SerializedName("app.unsupportedDevices")
val unsupportedDevices: String?,
@SerializedName("app.vaccinationCentersCount")
val vaccinationCentersCount: Int,
)
internal fun ApiConfiguration.toDomain(gson: Gson) = Configuration(
......@@ -144,5 +146,6 @@ internal fun ApiConfiguration.toDomain(gson: Gson) = Configuration(
unsupportedDevices = gson.fromJson(
unsupportedDevices,
object : TypeToken<List<String>?>() {}.type
)
),
vaccinationCentersCount = vaccinationCentersCount,
)
\ No newline at end of file
......@@ -17,7 +17,7 @@
<dimen name="bottom_sheet_card_elevation">16dp</dimen>
<dimen name="corner_radius">8dp</dimen>
<dimen name="cardElevation">10dp</dimen>
<dimen name="cardElevation">7dp</dimen>
<dimen name="divider_height">0.5dp</dimen>
<dimen name="double_item_image_width">70dp</dimen>
<dimen name="icon_size">24dp</dimen>
......
......@@ -49,5 +49,6 @@ class Configuration(
val postIsolationDuration: Long,
val venuesSalt: Int,
val allowNoAdvertisingDevice: Boolean,
val unsupportedDevices: List<String>?
val unsupportedDevices: List<String>?,
val vaccinationCentersCount: Int,
)
\ No newline at end of file
......@@ -34,6 +34,7 @@ import com.orange.proximitynotification.ProximityPayload
import com.orange.proximitynotification.ProximityPayloadId
import com.orange.proximitynotification.ble.BleSettings
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
......@@ -57,6 +58,10 @@ abstract class RobertProximityService : ProximityNotificationService() {
// Help to distinguish between between error at the beginning of the service and after some time
protected var creationDate: Long = System.currentTimeMillis()
override val exceptionHandler: CoroutineExceptionHandler = CoroutineExceptionHandler { _, t ->
handleBleException(t)
}
final override suspend fun current(): ProximityPayload {
return withContext(Dispatchers.IO) {
getProximityPayload(true)
......@@ -75,16 +80,20 @@ abstract class RobertProximityService : ProximityNotificationService() {
creationDate = System.currentTimeMillis()
start()
} catch (e: Exception) {
Timber.e(e)
val robertException = e as? RobertException ?: ProximityException(
e.cause,
e.localizedMessage ?: "An error occurred in BLE proximity"
)
onError(robertException)
stop()
handleBleException(e)
}
}
private fun handleBleException(t: Throwable) {
Timber.e(t)
val robertException = t as? RobertException ?: ProximityException(
t.cause,
t.localizedMessage ?: "An error occurred in BLE proximity"
)
onError(robertException)
stop()
}
override suspend fun onProximity(proximityInfo: ProximityInfo) {
withContext(Dispatchers.IO) {
proximityInfo.toLocalProximity()?.let { robertManager.storeLocalProximity(it) }
......
......@@ -43,8 +43,8 @@ android {
applicationId "fr.gouv.android.stopcovid"
minSdkVersion 21
targetSdkVersion 30
versionCode 148
versionName "2.2.4"
versionCode 152
versionName "2.2.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
......@@ -56,6 +56,9 @@ android {
buildConfigField 'String', 'MORE_KEY_FIGURES_FOLDER', '"MoreKeyFigures/"'
buildConfigField 'String', 'KEY_FIGURES_PATH', '"/infos/key-figures.json"'
buildConfigField 'String', 'FORM_PATH', '"/Attestations/form.json"'
buildConfigField 'String', 'VACCINATION_CENTER_PATH', '"/infos/dep/"'
buildConfigField 'String', 'VACCINATION_CENTER_FILENAME', '"centres-vaccination.json"'
buildConfigField 'String', 'VACCINATION_CENTER_LAST_UPDATE_FILENAME', '"lastUpdate.json"'
buildConfigField 'String', 'APP_STORE_URL', '"https://play.google.com/store/apps/details?id=fr.gouv.android.stopcovid"'
}
......
......@@ -198,7 +198,7 @@
"onboarding.proximityController.allowProximity.warning": "انتبه: سيطلب نظام Android منك الوصول إلى مكان تواجد هذا الجهاز. لن يستعمل TousAntiCovid غير كشف الهواتف الموجودة في محيطه بواسطة Bluetooth، دون تحديد الموقع الجغرافي بتاتًا",
"common.understand": "موافق",
"onboarding.gesturesController.gesture5": "تجنب لمس وجهك",
"onboarding.gesturesController.gesture6": "احتفظ بمسافة لا تقل عن متر 1 بينك وبين الآخرين",
"onboarding.gesturesController.gesture6": "احتفظ بمسافة لا تقل عن متر 2 بينك وبين الآخرين",
"common.bravo": "مُفعَّل",
"proximityController.button.activateProximity": "أقوم بتفعيل TousAntiCovid",
"proximityController.button.deactivateProximity": "أوقف تفعيل TousAntiCovid",
......@@ -710,7 +710,7 @@
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/actualites/presse/communiques-de-presse/article/le-gouvernement-ouvre-la-vaccination-aux-patients-vulnerables",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.buttonTitle": "Aller sur Santé.fr",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
......@@ -736,6 +736,24 @@
"keyFigureDetailController.section.evolution.subtitle2Charts": "%@.\nDernière valeur du %@ : %@ (France : %@)",
"home.activationExplanation.title": "Attention",
"home.activationExplanation.message": "Votre téléphone ne supportant pas l'advertising, TousAntiCovid va redémarrer le Bluetooth de votre téléphone régulièrement pour fonctionner",
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé"
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé",
"keyfigure.nombrevaccinations.learnMore":"Le nombre d’injections réalisées depuis le début de la campagne de vaccination est dorénavant dénombré par Vaccin Covid (au 26 janvier, 1 136 906 injections réalisées, dont 6 153 deuxièmes injections).\n\nAu 26 janvier, les données issues des Agences Régionales de Santé (ARS) faisaient état de 1 184 510 injections réalisées depuis le début de la campagne de vaccination. Cet écart constaté de 53 757 injections correspond aux injections effectuées mais non encore enregistrées dans Vaccin Covid, et qui seront progressivement rattrapées.",
"vaccinationController.vaccinationLocation.newPostalCode": "Renseigner un code postal",
"vaccinationController.vaccinationLocation.updatePostalCode": "Changer de code postal",
"vaccinationController.vaccinationLocation.footer": "Si vous ne trouvez pas un centre de vaccination qui vous convient, retrouvez tous les centres sur Santé.fr",
"vaccinationCenterCell.openingDate.title": "Horaires",
"vaccinationCenterCell.openingDate.from": "À partir du",
"vaccinationController.vaccinationLocation.section.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing": "Partager les infos",
"vaccinationController.vaccinationCenter.actionSheet.alert.website": "Prendre rdv sur internet",
"vaccinationController.vaccinationCenter.actionSheet.alert.mapLocation": "Localiser sur une carte",
"vaccinationController.vaccinationCenter.actionSheet.alert.call": "Appeler (%@)",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.tel": "Tél : %@",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.url": "Prise de rendez-vous sur le web : %@",
"vaccinationController.vaccinationLocation.vaccinationCenterNotFound": "Aucun centre de vaccination n'a été trouvé",
"vaccinationController.vaccinationLocation.explanation": "Avec un code postal, l'application vous donnera une liste des %d centres de vaccination les plus proches de ce code postal."
}
......@@ -198,7 +198,7 @@
"onboarding.proximityController.allowProximity.warning": "Warnung! Android wird Sie um die Erlaubnis für den Zugriff auf die Position dieses Geräts bitten. TousAntiCovid nutzt ausschließlich die Bluetooth-Erkennung von Telefonen in unmittelbarer Nähe und keinesfalls die Standortbestimmung",
"common.understand": "Ich habe verstanden",
"onboarding.gesturesController.gesture5": "Berühren Sie nicht Ihr Gesicht",
"onboarding.gesturesController.gesture6": "Halten Sie mindestens einen Meter Abstand zu anderen Personen",
"onboarding.gesturesController.gesture6": "Halten Sie mindestens zwei Metern Abstand zu anderen Personen",
"common.bravo": "Aktiviert",
"proximityController.button.activateProximity": "Ich aktiviere TousAntiCovid",
"proximityController.button.deactivateProximity": "Ich deaktiviere TousAntiCovid",
......@@ -710,7 +710,7 @@
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/actualites/presse/communiques-de-presse/article/le-gouvernement-ouvre-la-vaccination-aux-patients-vulnerables",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.buttonTitle": "Aller sur Santé.fr",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
......@@ -736,6 +736,24 @@
"keyFigureDetailController.section.evolution.subtitle2Charts": "%@.\nDernière valeur du %@ : %@ (France : %@)",
"home.activationExplanation.title": "Attention",
"home.activationExplanation.message": "Votre téléphone ne supportant pas l'advertising, TousAntiCovid va redémarrer le Bluetooth de votre téléphone régulièrement pour fonctionner",
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé"
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé",
"keyfigure.nombrevaccinations.learnMore":"Le nombre d’injections réalisées depuis le début de la campagne de vaccination est dorénavant dénombré par Vaccin Covid (au 26 janvier, 1 136 906 injections réalisées, dont 6 153 deuxièmes injections).\n\nAu 26 janvier, les données issues des Agences Régionales de Santé (ARS) faisaient état de 1 184 510 injections réalisées depuis le début de la campagne de vaccination. Cet écart constaté de 53 757 injections correspond aux injections effectuées mais non encore enregistrées dans Vaccin Covid, et qui seront progressivement rattrapées.",
"vaccinationController.vaccinationLocation.newPostalCode": "Renseigner un code postal",
"vaccinationController.vaccinationLocation.updatePostalCode": "Changer de code postal",
"vaccinationController.vaccinationLocation.footer": "Si vous ne trouvez pas un centre de vaccination qui vous convient, retrouvez tous les centres sur Santé.fr",
"vaccinationCenterCell.openingDate.title": "Horaires",
"vaccinationCenterCell.openingDate.from": "À partir du",
"vaccinationController.vaccinationLocation.section.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing": "Partager les infos",
"vaccinationController.vaccinationCenter.actionSheet.alert.website": "Prendre rdv sur internet",
"vaccinationController.vaccinationCenter.actionSheet.alert.mapLocation": "Localiser sur une carte",
"vaccinationController.vaccinationCenter.actionSheet.alert.call": "Appeler (%@)",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.tel": "Tél : %@",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.url": "Prise de rendez-vous sur le web : %@",
"vaccinationController.vaccinationLocation.vaccinationCenterNotFound": "Aucun centre de vaccination n'a été trouvé",
"vaccinationController.vaccinationLocation.explanation": "Avec un code postal, l'application vous donnera une liste des %d centres de vaccination les plus proches de ce code postal."
}
......@@ -198,7 +198,7 @@
"onboarding.proximityController.allowProximity.warning": "Please note, Android will ask you for access to this phone’s location. TousAntiCovid will only use the Bluetooth detection of nearby phones, and will never use location data",
"common.understand": "I understand",
"onboarding.gesturesController.gesture5": "Avoid touching your face",
"onboarding.gesturesController.gesture6": "Keep a distance of at least one metre from others",
"onboarding.gesturesController.gesture6": "Keep a distance of at least 2 metres from others",
"common.bravo": "Activated",
"proximityController.button.activateProximity": "Activate TousAntiCovid",
"proximityController.button.deactivateProximity": "Deactivate TousAntiCovid",
......@@ -710,7 +710,7 @@
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/actualites/presse/communiques-de-presse/article/le-gouvernement-ouvre-la-vaccination-aux-patients-vulnerables",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.buttonTitle": "Aller sur Santé.fr",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
......@@ -736,6 +736,24 @@
"keyFigureDetailController.section.evolution.subtitle2Charts": "%@.\nDernière valeur du %@ : %@ (France : %@)",
"home.activationExplanation.title": "Attention",
"home.activationExplanation.message": "Votre téléphone ne supportant pas l'advertising, TousAntiCovid va redémarrer le Bluetooth de votre téléphone régulièrement pour fonctionner",
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé"
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé",
"keyfigure.nombrevaccinations.learnMore":"Le nombre d’injections réalisées depuis le début de la campagne de vaccination est dorénavant dénombré par Vaccin Covid (au 26 janvier, 1 136 906 injections réalisées, dont 6 153 deuxièmes injections).\n\nAu 26 janvier, les données issues des Agences Régionales de Santé (ARS) faisaient état de 1 184 510 injections réalisées depuis le début de la campagne de vaccination. Cet écart constaté de 53 757 injections correspond aux injections effectuées mais non encore enregistrées dans Vaccin Covid, et qui seront progressivement rattrapées.",
"vaccinationController.vaccinationLocation.newPostalCode": "Renseigner un code postal",
"vaccinationController.vaccinationLocation.updatePostalCode": "Changer de code postal",
"vaccinationController.vaccinationLocation.footer": "Si vous ne trouvez pas un centre de vaccination qui vous convient, retrouvez tous les centres sur Santé.fr",
"vaccinationCenterCell.openingDate.title": "Horaires",
"vaccinationCenterCell.openingDate.from": "À partir du",
"vaccinationController.vaccinationLocation.section.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing": "Partager les infos",
"vaccinationController.vaccinationCenter.actionSheet.alert.website": "Prendre rdv sur internet",
"vaccinationController.vaccinationCenter.actionSheet.alert.mapLocation": "Localiser sur une carte",
"vaccinationController.vaccinationCenter.actionSheet.alert.call": "Appeler (%@)",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.tel": "Tél : %@",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.url": "Prise de rendez-vous sur le web : %@",
"vaccinationController.vaccinationLocation.vaccinationCenterNotFound": "Aucun centre de vaccination n'a été trouvé",
"vaccinationController.vaccinationLocation.explanation": "Avec un code postal, l'application vous donnera une liste des %d centres de vaccination les plus proches de ce code postal."
}
......@@ -198,7 +198,7 @@
"onboarding.proximityController.allowProximity.warning": "Atención: Android va a solicitar acceso a la ubicación de este dispositivo. TousAntiCovid utilizará únicamente la detección Bluetooth de los teléfonos que estén cerca, nunca la geolocalización.",
"common.understand": "Entendido",
"onboarding.gesturesController.gesture5": "Evita tocarte la cara",
"onboarding.gesturesController.gesture6": "Respeta una distancia mínima interpersonal de 1 metro",
"onboarding.gesturesController.gesture6": "Respeta una distancia mínima interpersonal de 2 metros",
"common.bravo": "Activado",
"proximityController.button.activateProximity": "Activar TousAntiCovid",
"proximityController.button.deactivateProximity": "Desactivar TousAntiCovid",
......@@ -710,7 +710,7 @@
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/actualites/presse/communiques-de-presse/article/le-gouvernement-ouvre-la-vaccination-aux-patients-vulnerables",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.buttonTitle": "Aller sur Santé.fr",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
......@@ -736,6 +736,24 @@
"keyFigureDetailController.section.evolution.subtitle2Charts": "%@.\nDernière valeur du %@ : %@ (France : %@)",
"home.activationExplanation.title": "Attention",
"home.activationExplanation.message": "Votre téléphone ne supportant pas l'advertising, TousAntiCovid va redémarrer le Bluetooth de votre téléphone régulièrement pour fonctionner",
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé"
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé",
"keyfigure.nombrevaccinations.learnMore":"Le nombre d’injections réalisées depuis le début de la campagne de vaccination est dorénavant dénombré par Vaccin Covid (au 26 janvier, 1 136 906 injections réalisées, dont 6 153 deuxièmes injections).\n\nAu 26 janvier, les données issues des Agences Régionales de Santé (ARS) faisaient état de 1 184 510 injections réalisées depuis le début de la campagne de vaccination. Cet écart constaté de 53 757 injections correspond aux injections effectuées mais non encore enregistrées dans Vaccin Covid, et qui seront progressivement rattrapées.",
"vaccinationController.vaccinationLocation.newPostalCode": "Renseigner un code postal",
"vaccinationController.vaccinationLocation.updatePostalCode": "Changer de code postal",
"vaccinationController.vaccinationLocation.footer": "Si vous ne trouvez pas un centre de vaccination qui vous convient, retrouvez tous les centres sur Santé.fr",
"vaccinationCenterCell.openingDate.title": "Horaires",
"vaccinationCenterCell.openingDate.from": "À partir du",
"vaccinationController.vaccinationLocation.section.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing": "Partager les infos",
"vaccinationController.vaccinationCenter.actionSheet.alert.website": "Prendre rdv sur internet",
"vaccinationController.vaccinationCenter.actionSheet.alert.mapLocation": "Localiser sur une carte",
"vaccinationController.vaccinationCenter.actionSheet.alert.call": "Appeler (%@)",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.tel": "Tél : %@",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.url": "Prise de rendez-vous sur le web : %@",
"vaccinationController.vaccinationLocation.vaccinationCenterNotFound": "Aucun centre de vaccination n'a été trouvé",
"vaccinationController.vaccinationLocation.explanation": "Avec un code postal, l'application vous donnera une liste des %d centres de vaccination les plus proches de ce code postal."
}
{
{
"app.name":"TousAntiCovid",
"onboarding.welcomeController.title":"Bienvenue",
"onboarding.welcomeController.mainMessage.title":"Soyez alertés et alertez les autres en cas d’exposition à la COVID-19",
......@@ -198,7 +198,7 @@
"onboarding.proximityController.allowProximity.warning":"Attention, Android va vous demander l’accès à la position de cet appareil. TousAntiCovid utilisera uniquement la détection Bluetooth des téléphones à proximité, et en aucun cas la géolocalisation",
"common.understand":"J'ai compris",
"onboarding.gesturesController.gesture5":"Évitez de vous toucher le visage",
"onboarding.gesturesController.gesture6":"Respectez une distance d'au moins un mètre avec les autres",
"onboarding.gesturesController.gesture6":"Respectez une distance d'au moins 2 mètres avec les autres",
"common.bravo":"Activé",
"proximityController.button.activateProximity":"J’active TousAntiCovid",
"proximityController.button.deactivateProximity":"Je désactive TousAntiCovid",
......@@ -395,7 +395,7 @@
"home.infoSection.newPostalCode.subtitle":"Vous pouvez accéder aux chiffres clés au niveau local, en indiquant un code postal.",
"home.infoSection.newPostalCode.button":"Entrer un code postal",
"home.infoSection.newPostalCode.alert.title":"Code postal",
"home.infoSection.newPostalCode.alert.subtitle":"Veuillez indiquer un code postal pour filtrer les chiffres clés au niveau local. Ce code postal n'est stocké que sur votre téléphone dans l'application.",
"home.infoSection.newPostalCode.alert.subtitle":"Veuillez indiquer un code postal pour filtrer les chiffres clés et d'autres informations au niveau local. Ce code postal n'est stocké que sur votre téléphone dans l'application.",
"home.infoSection.newPostalCode.alert.placeholder":"Votre code postal",
"home.infoSection.newPostalCode.alert.wrongPostalCode":"Veuillez entrer un code postal à 5 chiffres",
"home.infoSection.updatePostalCode":"Changer de code postal",
......@@ -762,7 +762,7 @@
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/actualites/presse/communiques-de-presse/article/le-gouvernement-ouvre-la-vaccination-aux-patients-vulnerables",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.buttonTitle": "Aller sur Santé.fr",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
......@@ -788,7 +788,23 @@
"keyFigureDetailController.section.evolution.subtitle2Charts": "%@.\nDernière valeur du %@ : %@ (France : %@)",
"home.activationExplanation.title": "Attention",
"home.activationExplanation.message": "Votre téléphone ne supportant pas l'advertising, TousAntiCovid va redémarrer le Bluetooth de votre téléphone régulièrement pour fonctionner",
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé"
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé",
"keyfigure.nombrevaccinations.learnMore":"Le nombre d’injections réalisées depuis le début de la campagne de vaccination est dorénavant dénombré par Vaccin Covid (au 26 janvier, 1 136 906 injections réalisées, dont 6 153 deuxièmes injections).\n\nAu 26 janvier, les données issues des Agences Régionales de Santé (ARS) faisaient état de 1 184 510 injections réalisées depuis le début de la campagne de vaccination. Cet écart constaté de 53 757 injections correspond aux injections effectuées mais non encore enregistrées dans Vaccin Covid, et qui seront progressivement rattrapées.",
"vaccinationController.vaccinationLocation.newPostalCode": "Renseigner un code postal",
"vaccinationController.vaccinationLocation.updatePostalCode": "Changer de code postal",
"vaccinationController.vaccinationLocation.footer": "Si vous ne trouvez pas un centre de vaccination qui vous convient, retrouvez tous les centres sur Santé.fr",
"vaccinationCenterCell.openingDate.title": "Horaires",
"vaccinationCenterCell.openingDate.from": "À partir du",
"vaccinationController.vaccinationLocation.section.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing": "Partager les infos",
"vaccinationController.vaccinationCenter.actionSheet.alert.website": "Prendre rdv sur internet",
"vaccinationController.vaccinationCenter.actionSheet.alert.mapLocation": "Localiser sur une carte",
"vaccinationController.vaccinationCenter.actionSheet.alert.call": "Appeler (%@)",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.tel": "Tél : %@",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.url": "Prise de rendez-vous sur le web : %@",
"vaccinationController.vaccinationLocation.vaccinationCenterNotFound": "Aucun centre de vaccination n'a été trouvé",
"vaccinationController.vaccinationLocation.explanation": "Avec un code postal, l'application vous donnera une liste des %d centres de vaccination les plus proches de ce code postal."
}
......@@ -198,7 +198,7 @@
"onboarding.proximityController.allowProximity.warning": "Attenzione, Android ti chiederà l’accesso alla posizione di questo dispositivo. TousAntiCovid utilizzerà unicamente il rilevamento Bluetooth degli smartphone situati in prossimità, e non utilizzerà in nessun caso la geolocalizzazione.",
"common.understand": "Ho capito",
"onboarding.gesturesController.gesture5": "Evita di toccarti il viso",
"onboarding.gesturesController.gesture6": "Rispetta la distanza di almeno un metro con gli altri",
"onboarding.gesturesController.gesture6": "Rispetta la distanza di almeno 2 metri con gli altri",
"common.bravo": "Attivato",
"proximityController.button.activateProximity": "Attivazione di TousAntiCovid",
"proximityController.button.deactivateProximity": "Disattivazione di TousAntiCovid",
......@@ -710,7 +710,7 @@
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/actualites/presse/communiques-de-presse/article/le-gouvernement-ouvre-la-vaccination-aux-patients-vulnerables",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.buttonTitle": "Aller sur Santé.fr",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
......@@ -736,6 +736,24 @@
"keyFigureDetailController.section.evolution.subtitle2Charts": "%@.\nDernière valeur du %@ : %@ (France : %@)",
"home.activationExplanation.title": "Attention",
"home.activationExplanation.message": "Votre téléphone ne supportant pas l'advertising, TousAntiCovid va redémarrer le Bluetooth de votre téléphone régulièrement pour fonctionner",
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé"
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé",
"keyfigure.nombrevaccinations.learnMore":"Le nombre d’injections réalisées depuis le début de la campagne de vaccination est dorénavant dénombré par Vaccin Covid (au 26 janvier, 1 136 906 injections réalisées, dont 6 153 deuxièmes injections).\n\nAu 26 janvier, les données issues des Agences Régionales de Santé (ARS) faisaient état de 1 184 510 injections réalisées depuis le début de la campagne de vaccination. Cet écart constaté de 53 757 injections correspond aux injections effectuées mais non encore enregistrées dans Vaccin Covid, et qui seront progressivement rattrapées.",
"vaccinationController.vaccinationLocation.newPostalCode": "Renseigner un code postal",
"vaccinationController.vaccinationLocation.updatePostalCode": "Changer de code postal",
"vaccinationController.vaccinationLocation.footer": "Si vous ne trouvez pas un centre de vaccination qui vous convient, retrouvez tous les centres sur Santé.fr",
"vaccinationCenterCell.openingDate.title": "Horaires",
"vaccinationCenterCell.openingDate.from": "À partir du",
"vaccinationController.vaccinationLocation.section.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing": "Partager les infos",
"vaccinationController.vaccinationCenter.actionSheet.alert.website": "Prendre rdv sur internet",
"vaccinationController.vaccinationCenter.actionSheet.alert.mapLocation": "Localiser sur une carte",
"vaccinationController.vaccinationCenter.actionSheet.alert.call": "Appeler (%@)",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.tel": "Tél : %@",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.url": "Prise de rendez-vous sur le web : %@",
"vaccinationController.vaccinationLocation.vaccinationCenterNotFound": "Aucun centre de vaccination n'a été trouvé",
"vaccinationController.vaccinationLocation.explanation": "Avec un code postal, l'application vous donnera une liste des %d centres de vaccination les plus proches de ce code postal."
}
......@@ -198,7 +198,7 @@
"onboarding.proximityController.allowProximity.warning": "Atenção: o Android vai solicitar-lhe o acesso à localização deste dispositivo. A TousAntiCovid utilizará apenas a deteção Bluetooth dos telemóveis nas imediações e, em nenhuma hipótese, a geolocalização",
"common.understand": "Compreendi",
"onboarding.gesturesController.gesture5": "Evite tocar no rosto",
"onboarding.gesturesController.gesture6": "Respeite uma distância não inferior a um metro relativamente aos outros",
"onboarding.gesturesController.gesture6": "Respeite uma distância não inferior a 2 metros relativamente aos outros",
"common.bravo": "Ativada",
"proximityController.button.activateProximity": "Ativar a TousAntiCovid",
"proximityController.button.deactivateProximity": "Desativar a TousAntiCovid",
......@@ -710,7 +710,7 @@
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/actualites/presse/communiques-de-presse/article/le-gouvernement-ouvre-la-vaccination-aux-patients-vulnerables",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.buttonTitle": "Aller sur Santé.fr",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
......@@ -736,6 +736,24 @@
"keyFigureDetailController.section.evolution.subtitle2Charts": "%@.\nDernière valeur du %@ : %@ (France : %@)",
"home.activationExplanation.title": "Attention",
"home.activationExplanation.message": "Votre téléphone ne supportant pas l'advertising, TousAntiCovid va redémarrer le Bluetooth de votre téléphone régulièrement pour fonctionner",
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé"
"accessibility.hint.keyFigure.chart.share": "Partager le graphique du chiffre clé",
"keyfigure.nombrevaccinations.learnMore":"Le nombre d’injections réalisées depuis le début de la campagne de vaccination est dorénavant dénombré par Vaccin Covid (au 26 janvier, 1 136 906 injections réalisées, dont 6 153 deuxièmes injections).\n\nAu 26 janvier, les données issues des Agences Régionales de Santé (ARS) faisaient état de 1 184 510 injections réalisées depuis le début de la campagne de vaccination. Cet écart constaté de 53 757 injections correspond aux injections effectuées mais non encore enregistrées dans Vaccin Covid, et qui seront progressivement rattrapées.",
"vaccinationController.vaccinationLocation.newPostalCode": "Renseigner un code postal",
"vaccinationController.vaccinationLocation.updatePostalCode": "Changer de code postal",
"vaccinationController.vaccinationLocation.footer": "Si vous ne trouvez pas un centre de vaccination qui vous convient, retrouvez tous les centres sur Santé.fr",
"vaccinationCenterCell.openingDate.title": "Horaires",
"vaccinationCenterCell.openingDate.from": "À partir du",
"vaccinationController.vaccinationLocation.section.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing": "Partager les infos",
"vaccinationController.vaccinationCenter.actionSheet.alert.website": "Prendre rdv sur internet",
"vaccinationController.vaccinationCenter.actionSheet.alert.mapLocation": "Localiser sur une carte",
"vaccinationController.vaccinationCenter.actionSheet.alert.call": "Appeler (%@)",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.tel": "Tél : %@",
"vaccinationController.vaccinationCenter.actionSheet.alert.sharing.text.url": "Prise de rendez-vous sur le web : %@",
"vaccinationController.vaccinationLocation.vaccinationCenterNotFound": "Aucun centre de vaccination n'a été trouvé",
"vaccinationController.vaccinationLocation.explanation": "Avec un code postal, l'application vous donnera une liste des %d centres de vaccination les plus proches de ce code postal."
}
This diff is collapsed.
......@@ -29,6 +29,9 @@ object Constants {
const val PRIVATE_EVENT_QR_CODE_GENERATION_DATE: String = "Private.Event.QR.Code.Generation.Data"
const val VENUES_ON_BOARDING_DONE: String = "isVenueOnBoardingDone"
const val VENUES_FEATURED_ACTIVATED: String = "venuesFeaturedWasActivatedAtLeastOneTime"
const val CURRENT_VACCINATION_REFERENCE_DEPARTMENT_CODE: String = "currentVaccinationReferenceDepartmentCode"
const val CURRENT_VACCINATION_REFERENCE_LATITUDE: String = "currentVaccinationReferenceLatitude"
const val CURRENT_VACCINATION_REFERENCE_LONGITUDE: String = "currentVaccinationReferenceLongitude"
}
object Notification {
......@@ -61,6 +64,7 @@ object Constants {
object Android {
const val ANIMATION_DELAY: Long = 500L
const val FORCE_LOADING_DELAY: Long = 2000L
}
object Chart {
......
......@@ -62,6 +62,7 @@ import com.lunabeestudio.stopcovid.manager.LinksManager
import com.lunabeestudio.stopcovid.manager.MoreKeyFiguresManager
import com.lunabeestudio.stopcovid.manager.PrivacyManager
import com.lunabeestudio.stopcovid.manager.ProximityManager
import com.lunabeestudio.stopcovid.manager.VaccinationCenterManager
import com.lunabeestudio.stopcovid.manager.VenuesManager
import com.lunabeestudio.stopcovid.model.DeviceSetup
import com.lunabeestudio.stopcovid.service.ProximityService
......@@ -168,6 +169,9 @@ class StopCovid : Application(), LifecycleObserver, RobertApplication, Isolation
appCoroutineScope.launch {
FormManager.initialize(this@StopCovid)
}
appCoroutineScope.launch {
VaccinationCenterManager.initialize(this@StopCovid, sharedPrefs)
}
appCoroutineScope.launch {
AppMaintenanceManager.initialize(
this@StopCovid,
......@@ -213,6 +217,9 @@ class StopCovid : Application(), LifecycleObserver, RobertApplication, Isolation
appCoroutineScope.launch {
FormManager.onAppForeground(this@StopCovid)
}
appCoroutineScope.launch {
VaccinationCenterManager.onAppForeground(this@StopCovid, sharedPrefs)
}
appCoroutineScope.launch {
robertManager.refreshConfig(this@StopCovid)
}
......
......@@ -58,4 +58,42 @@ var SharedPreferences.privateEventQrCode: String?
var SharedPreferences.privateEventQrCodeGenerationDate: Long
get() = getLong(Constants.SharedPrefs.PRIVATE_EVENT_QR_CODE_GENERATION_DATE, 0L)
set(value) = edit { putLong(Constants.SharedPrefs.PRIVATE_EVENT_QR_CODE_GENERATION_DATE, value) }
\ No newline at end of file
set(value) = edit { putLong(Constants.SharedPrefs.PRIVATE_EVENT_QR_CODE_GENERATION_DATE, value) }
var SharedPreferences.currentVaccinationReferenceDepartmentCode: String?
get() = getString(Constants.SharedPrefs.CURRENT_VACCINATION_REFERENCE_DEPARTMENT_CODE, null)
set(value) = edit { putString(Constants.SharedPrefs.CURRENT_VACCINATION_REFERENCE_DEPARTMENT_CODE, value) }
var SharedPreferences.currentVaccinationReferenceLatitude: Double?
get() = if (contains(Constants.SharedPrefs.CURRENT_VACCINATION_REFERENCE_LATITUDE)) {
getFloat(
Constants.SharedPrefs.CURRENT_VACCINATION_REFERENCE_LATITUDE,
0f