Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions app/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,10 @@ License.
<string name="personalid_configuration_process_failed_title">Échec du processus</string>
<string name="personalid_configuration_process_failed_subtitle">Votre appareil n\'est pas compatible avec PersonalID pour le moment. Veuillez réessayer sur un autre appareil.</string>
<string name="personalid_configuration_process_failed_security_subtitle">Votre appareil n\'est pas compatible avec PersonalID pour le moment en raison de l\'indisponibilité de la fonctionnalité de sécurité. Veuillez réessayer sur un autre appareil.</string>
<string name="personalid_configuration_process_failed_play_services">Veuillez vous assurer que le Play Store est disponible sur votre appareil et qu\'il est à jour.</string>
<string name="personalid_configuration_process_failed_temporary_unavailable">Erreur temporaire lors de la vérification de l\'éligibilité de votre appareil. Veuillez réessayer après un jour.</string>
<string name="personalid_configuration_process_failed_network_error">Erreur réseau lors de la vérification de l\'éligibilité de votre appareil. Veuillez vous assurer que vous disposez d\'une bonne connexion réseau et réessayez.</string>
<string name="personalid_configuration_process_failed_unexpected_error">Impossible de vérifier l\'éligibilité de l\'appareil en raison d\'une erreur inattendue. Veuillez contacter le support client si le problème persiste.</string>
<string name="personalid_photo_capture_title">Bienvenue %1$s</string>
<string name="personalid_photo_capture_subtitle">Veuillez prendre une photo de vous pour terminer la configuration de votre compte</string>
<string name="personalid_photo_capture_take_photo_button">Prendre une photo</string>
Expand All @@ -450,7 +454,9 @@ License.
<string name="personalid_this_is_not_me"><u>Ce n\'est pas moi</u></string>
<string name="personalid_welcome_back_msg">Bon retour %s</string>
<string name="personalid_recovery_failed_title">La récupération a échoué</string>
<string name="personalid_recovery_lockout_title">Compte Verrouillé</string>
<string name="personalid_recovery_failed_message">Il semble que vous ayez oublié votre code de sauvegarde, nous créons un nouveau compte pour vous</string>
<string name="personalid_recovery_lockout_message">Vous avez saisi le mauvais code de sauvegarde trop de fois et votre compte a été verrouillé.</string>
<string name="personalid_wrong_backup_message">Vous avez saisi un code de secours erroné. Veuillez réessayer. Vous devrez créer un nouveau compte après %d tentatives incorrectes.</string>
<string name="personalid_camera_permission_title">Autorisation pour la caméra</string>
<string name="personalid_camera_permission_msg">Afin de prendre une photo, CommCare a besoin de l\'autorisation d\'utiliser l\'appareil photo de votre appareil.</string>
Expand Down
6 changes: 6 additions & 0 deletions app/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,10 @@
<string name="personalid_configuration_process_failed_title">Falha no processo</string>
<string name="personalid_configuration_process_failed_subtitle">De momento, o seu dispositivo não está qualificado para se inscrever no PersonalID. Tente novamente noutro dispositivo.</string>
<string name="personalid_configuration_process_failed_security_subtitle">De momento, o seu dispositivo não está qualificado para se inscrever no PersonalID devido à indisponibilidade da funcionalidade de segurança %s. Tente novamente noutro dispositivo.</string>
<string name="personalid_configuration_process_failed_play_services">Certifique-se de que a Play Store está disponível no seu dispositivo e está atualizada.</string>
<string name="personalid_configuration_process_failed_temporary_unavailable">Erro temporário ao verificar a elegibilidade do seu dispositivo. Por favor, tente novamente depois de um dia.</string>
<string name="personalid_configuration_process_failed_network_error">Erro de rede ao verificar a elegibilidade do seu dispositivo. Por favor, certifique-se de que tem uma boa conexão de rede e tente novamente.</string>
<string name="personalid_configuration_process_failed_unexpected_error">Não foi possível verificar a elegibilidade do dispositivo devido a um erro inesperado. Por favor, entre em contato com o suporte ao cliente se o problema persistir.</string>
<string name="personalid_photo_capture_title">Bem-vindo %1$s</string>
<string name="personalid_photo_capture_subtitle">Por favor, tire uma fotografia sua para concluir a configuração da sua conta</string>
<string name="personalid_photo_capture_take_photo_button">Tirar foto</string>
Expand All @@ -456,7 +460,9 @@
<string name="personalid_this_is_not_me"><u>Este não sou eu</u></string>
<string name="personalid_welcome_back_msg">Bem-vindo de volta %s</string>
<string name="personalid_recovery_failed_title">Falha na recuperação</string>
<string name="personalid_recovery_lockout_title">Conta Bloqueada</string>
<string name="personalid_recovery_failed_message">Parece que se esqueceu do seu código de backup, estamos a criar uma nova conta para si</string>
<string name="personalid_recovery_lockout_message">Introduziu o Código de Backup errado muitas vezes e a sua conta foi bloqueada.</string>
<string name="personalid_wrong_backup_message">Introduziu o Código de Backup errado. Tente novamente. Terá de criar uma nova conta após %d tentativas incorretas.</string>
<string name="personalid_camera_permission_title">Permissão para câmara</string>
<string name="personalid_camera_permission_msg">Para tirar uma fotografia, o CommCare precisa de permissão para utilizar a câmara do seu dispositivo.</string>
Expand Down
6 changes: 6 additions & 0 deletions app/res/values-sw/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,10 @@
<string name="personalid_configuration_process_failed_title">Mchakato Umeshindwa</string>
<string name="personalid_configuration_process_failed_subtitle">Kifaa chako hakijatimiza masharti ya kujisajili kwa Kitambulisho cha Kibinafsi kwa wakati huu. Tafadhali jaribu tena kwenye kifaa tofauti.</string>
<string name="personalid_configuration_process_failed_security_subtitle">Kifaa chako hakijatimiza masharti ya kujisajili kwa Kitambulisho cha Kibinafsi kwa wakati huu kwa sababu ya kutopatikana kwa kipengele cha usalama cha %s. Tafadhali jaribu tena kwenye kifaa tofauti.</string>
<string name="personalid_configuration_process_failed_play_services">Tafadhali hakikisha kuwa Play Store inapatikana kwenye kifaa chako na imesasishwa.</string>
<string name="personalid_configuration_process_failed_temporary_unavailable">Hitilafu ya muda katika kuthibitisha ustahiki wa kifaa chako. Tafadhali jaribu tena baada ya siku moja.</string>
<string name="personalid_configuration_process_failed_network_error">Hitilafu ya mtandao katika kuthibitisha ustahiki wa kifaa chako. Tafadhali hakikisha una muunganisho mzuri wa mtandao na jaribu tena.</string>
<string name="personalid_configuration_process_failed_unexpected_error">Imeshindikana kuthibitisha ustahiki wa kifaa kutokana na hitilafu isiyotarajiwa. Tafadhali wasiliana na huduma kwa wateja ikiwa tatizo litaendelea.</string>
<string name="personalid_photo_capture_title">Karibu %1$s</string>
<string name="personalid_photo_capture_subtitle">Tafadhali jipige picha ili ukamilishe kusanidi akaunti yako</string>
<string name="personalid_photo_capture_take_photo_button">Piga Picha</string>
Expand All @@ -456,8 +460,10 @@
<string name="personalid_this_is_not_me"><u>Huyu si mimi</u></string>
<string name="personalid_welcome_back_msg">Karibu tena %s</string>
<string name="personalid_recovery_failed_title">Urejeshaji haukufaulu</string>
<string name="personalid_recovery_lockout_title">Akaunti Imefungwa</string>
<string name="personalid_recovery_failed_message">Inaonekana umesahau Nambari yako ya Hifadhi Nambari, tunakuundia akaunti mpya</string>
<string name="personalid_wrong_backup_message">Umeweka Nambari ya Hifadhi Nambari isiyo sahihi, tafadhali jaribu tena. Utahitaji kuunda akaunti mpya baada ya majaribio %d zaidi yasiyo sahihi.</string>
<string name="personalid_recovery_lockout_message">Umeweka Nambari ya Hifadhi Nambari isiyo sahihi mara nyingi sana na akaunti yako imefungwa.</string>
<string name="personalid_camera_permission_title">Ruhusa ya kamera</string>
<string name="personalid_camera_permission_msg">Ili kupiga picha, CommCare inahitaji ruhusa ya kutumia kamera ya kifaa chako.</string>
<string name="personalid_capture_photo">Piga Picha</string>
Expand Down
6 changes: 6 additions & 0 deletions app/res/values-ti/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,10 @@
<string name="personalid_configuration_process_failed_title">መስርሕ ፈሺሉ።</string>
<string name="personalid_configuration_process_failed_subtitle">መሳርሒኻ ኣብዚ እዋን\'ዚ ን PersonalID ንምምዝጋብ ብቑዕ ኣይኮነን። በጃኹም ኣብ ካልእ መሳርሒ እንደገና ፈትኑ።</string>
<string name="personalid_configuration_process_failed_security_subtitle">መሳርሒኻ ኣብዚ እዋን እዚ ብሰንኪ %s ናይ ጸጥታ ባህሪ ዘይምህላዉ ንPersonalID ክምዝገብ ብቑዕ ኣይኮነን። በጃኹም ኣብ ካልእ መሳርሒ እንደገና ፈትኑ።</string>
<string name="personalid_configuration_process_failed_play_services">እባኮም ኣረጋግጹ ፡ እቲ ፕሌይ ስቶር ኣብ መሳርሒ እትርከቡ እንተሎ እና ትሓዘ እንተኾነ።</string>
<string name="personalid_configuration_process_failed_temporary_unavailable">ሓፋሽ ጸገብ ኣብ ምርግጋን ብትኽክል መሳርሒ እንተሃለወ። እባኮም ኣብ ሓደ መዓልቲ ደጊሞ ፈትኑ።</string>
<string name="personalid_configuration_process_failed_network_error">ጸገኒ መረብ ኣብ ምርግጋን ብትኽክል መሳርሒ እንተሃለወ። እባኮም ዝሓለፈ መርበብ ክርከቡ እንተኾነ ኣረጋግጹ እና ደጊሞ ፈትኑ።</string>
<string name="personalid_configuration_process_failed_unexpected_error">ብምኽንያት ዘይተገመተ ጸገብ ብትኽክል መሳርሒ ምርግጋን ኣይተሳነየን። ብቑጽሪ እቲ ጸገብ እንተተዓቐበ እባኮም ምምዕራያ ተሳትፎ ውሳነ ምግባር ድሕሪት ንደገና ተራኺቡ።</string>
<string name="personalid_photo_capture_title">እንቋዕ ብደሓን መጻእኩም %1$s</string>
<string name="personalid_photo_capture_subtitle">ምድላው ኣካውንትኩም ንምዝዛም ፎቶኹም ውሰዱ</string>
<string name="personalid_photo_capture_take_photo_button">ፎቶ ውሰድ</string>
Expand All @@ -442,7 +446,9 @@
<string name="personalid_this_is_not_me"><u>እዚ ኣነ ኣይኮንኩን።</u></string>
<string name="personalid_welcome_back_msg">እንቋዕ ብደሓን መጻእኩም %s</string>
<string name="personalid_recovery_failed_title">ምሕዋይ ኣይተዓወተን</string>
<string name="personalid_recovery_lockout_title">ኣካውንት ተዓጽዩ።</string>
<string name="personalid_recovery_failed_message">Backup Code ናትካ ዝረሳዕካዮ ይመስል፣ ሓድሽ ኣካውንት ንፈጥር ኣለና።</string>
<string name="personalid_recovery_lockout_message">ጌጋ Backup Code ብዙሕ ግዜ ኣእቲኻ ኣካውንትካ ተዓጽዩ ኣሎ።</string>
<string name="personalid_wrong_backup_message">ጌጋ Backup Code ኣእቲኻ፡ በጃኻ ደጊምካ ፈትን። ድሕሪ %d ዝያዳ ዘይቅኑዕ ፈተነታት ሓድሽ ኣካውንት ክትፈጥር ከድልየካ እዩ።</string>
<string name="personalid_camera_permission_title">ፍቓድ ንካሜራ</string>
<string name="personalid_camera_permission_msg">ስእሊ ንምውሳድ፡ ኮምኬር ናይ መሳርሒኻ ካሜራ ንኽጥቀም ፍቓድ የድልዮ።</string>
Expand Down
6 changes: 6 additions & 0 deletions app/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,10 @@
<string name="personalid_name_empty_error">Name field cannot be empty</string>
<string name="personalid_configuration_process_failed_title">Process Failed</string>
<string name="personalid_configuration_process_failed_subtitle">Your device isn\'t eligible to sign up for PersonalID at this time. Please try again on a different device.</string>
<string name="personalid_configuration_process_failed_play_services">Please make sure Play Store is available on your device and is updated.</string>
<string name="personalid_configuration_process_failed_temporary_unavailable">Temporary error in establishing your device eligibility. Please try again after a day.</string>
<string name="personalid_configuration_process_failed_network_error">Network error in establishing your device eligibility. Please make sure you have a good network connection and try again.</string>
<string name="personalid_configuration_process_failed_unexpected_error">Unable to establish device eligibility due to an unexpected error. Please contact customer support if the problem persists</string>
<string name="personalid_configuration_process_failed_security_subtitle">Your device isn\'t eligible to sign up for PersonalID at this time due to non availability of %s security feature. Please try again on a different device.</string>
<string name="personalid_photo_capture_title">Welcome %1$s</string>
<string name="personalid_photo_capture_subtitle">Please take a photo of yourself to complete your account setup</string>
Expand All @@ -608,7 +612,9 @@
<string name="personalid_this_is_not_me"><u>This is not me</u></string>
<string name="personalid_welcome_back_msg">Welcome back %s</string>
<string name="personalid_recovery_failed_title">Recovery failed</string>
<string name="personalid_recovery_lockout_title">Account Locked</string>
<string name="personalid_recovery_failed_message">Looks like you’ve forgotten your Backup Code, we’re creating a new account for you</string>
<string name="personalid_recovery_lockout_message">You have entered the wrong Backup Code too many times and your account has been locked.</string>
<string name="personalid_wrong_backup_message">You entered the wrong Backup Code, please try again. You will need to create a new account after %d more incorrect attempts.</string>
<string name="personalid_camera_permission_title">Permission for camera</string>
<string name="personalid_camera_permission_msg">In order to take a picture, CommCare needs permission to use your device camera.</string>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package org.commcare.android.integrity

import android.content.Context
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer
import com.google.android.play.core.integrity.StandardIntegrityException
import com.google.android.play.core.integrity.model.StandardIntegrityErrorCode.*
import org.commcare.android.CommCareViewModelProvider
import org.commcare.utils.HashUtils
import kotlin.jvm.functions.Function2
import org.commcare.dalvik.R;
import org.json.JSONObject
import java.util.LinkedList
import java.util.HashMap
Expand All @@ -16,10 +19,11 @@ class IntegrityTokenApiRequestHelper(
lifecycleOwner: LifecycleOwner
) {
private val integrityTokenViewModel : IntegrityTokenViewModel = CommCareViewModelProvider.getIntegrityTokenViewModel()
private val pendingRequests = LinkedList<Pair<HashMap<String, String>, Function2<String?, String, Unit>>>()
private val pendingRequests = LinkedList<Pair<HashMap<String, String>, IntegrityTokenViewModel.IntegrityTokenCallback>>()

private var providerInitialized = false
private var providerFailed = false
private var providerFailedException = Exception("Integrity Token Provider failed to initialize")

init {
integrityTokenViewModel.providerState.observe(lifecycleOwner, object : Observer<IntegrityTokenViewModel.TokenProviderState> {
Expand All @@ -31,6 +35,7 @@ class IntegrityTokenApiRequestHelper(
}
is IntegrityTokenViewModel.TokenProviderState.Failure -> {
providerFailed = true
providerFailedException = state.exception
failPendingRequests()
}
}
Expand All @@ -40,19 +45,17 @@ class IntegrityTokenApiRequestHelper(

fun withIntegrityToken(
requestBody: HashMap<String, String>,
onTokenReady: Function2<String?, String, Unit>
callback: IntegrityTokenViewModel.IntegrityTokenCallback
) {
val jsonBody = JSONObject(requestBody as Map<*, *>).toString()
val requestHash = HashUtils.computeHash(jsonBody, HashUtils.HashAlgorithm.SHA256)

if (providerInitialized) {
integrityTokenViewModel.requestIntegrityToken(requestHash) { token ->
onTokenReady.invoke(token, requestHash)
}
integrityTokenViewModel.requestIntegrityToken(requestHash, false, callback)
} else if (providerFailed) {
onTokenReady.invoke(null, requestHash)
callback.onTokenFailure(providerFailedException)
} else {
pendingRequests.add(Pair(requestBody, onTokenReady))
pendingRequests.add(Pair(requestBody, callback))
}
}

Expand All @@ -61,18 +64,53 @@ class IntegrityTokenApiRequestHelper(
val (body, callback) = pendingRequests.removeFirst()
val jsonBody = JSONObject(body as Map<*, *>).toString()
val requestHash = HashUtils.computeHash(jsonBody, HashUtils.HashAlgorithm.SHA256)
integrityTokenViewModel.requestIntegrityToken(requestHash) { token ->
callback.invoke(token, requestHash)
}
integrityTokenViewModel.requestIntegrityToken(requestHash, false, callback)
}
}

private fun failPendingRequests() {
while (pendingRequests.isNotEmpty()) {
val (body, callback) = pendingRequests.removeFirst()
val jsonBody = JSONObject(body as Map<*, *>).toString()
val requestHash = HashUtils.computeHash(jsonBody, HashUtils.HashAlgorithm.SHA256)
callback.invoke(null, requestHash)
val (_, callback) = pendingRequests.removeFirst()
callback.onTokenFailure(providerFailedException)
}
}

fun getErrorForException(context: Context, exception: Exception): String {
var errorMessage = context.getString(R.string.personalid_configuration_process_failed_subtitle)
if (exception is StandardIntegrityException) {
val integrityErrorCode = exception.errorCode
when (integrityErrorCode) {
API_NOT_AVAILABLE,
PLAY_STORE_NOT_FOUND,
PLAY_SERVICES_NOT_FOUND,
PLAY_STORE_VERSION_OUTDATED,
PLAY_SERVICES_VERSION_OUTDATED,
CANNOT_BIND_TO_SERVICE -> {
errorMessage = context.getString(R.string.personalid_configuration_process_failed_play_services)
}

CLOUD_PROJECT_NUMBER_IS_INVALID,
REQUEST_HASH_TOO_LONG,
APP_UID_MISMATCH -> {
throw RuntimeException(exception)
}

TOO_MANY_REQUESTS,
GOOGLE_SERVER_UNAVAILABLE -> {
errorMessage = context.getString(R.string.personalid_configuration_process_failed_temporary_unavailable)
}

CLIENT_TRANSIENT_ERROR,
INTEGRITY_TOKEN_PROVIDER_INVALID -> {
errorMessage = context.getString(R.string.personalid_configuration_process_failed_unexpected_error)
}

NETWORK_ERROR -> {
errorMessage = context.getString(R.string.personalid_configuration_process_failed_network_error)
}
}
}
return errorMessage
}

}
Loading
Loading