Merge pull request #2553 from dlvoy/dagger3-patient-name

Introduced Patient name, refactored SMS OTP and Prefs Export to use it
This commit is contained in:
Milos Kozak 2020-04-06 09:44:20 +02:00 committed by GitHub
commit 9f58270f88
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 32 additions and 21 deletions

View file

@ -125,13 +125,13 @@ class ImportExportPrefs @Inject constructor(
val n5 = Settings.Secure.getString(context.contentResolver, "lock_screen_owner_info") val n5 = Settings.Secure.getString(context.contentResolver, "lock_screen_owner_info")
val n6 = Settings.Global.getString(context.contentResolver, "device_name") val n6 = Settings.Global.getString(context.contentResolver, "device_name")
// name we use for SMS OTP token in communicator // name provided (hopefully) by user
val otpName = otp.name().trim() val patientName = sp.getString(R.string.key_patient_name, "")
val defaultOtpName = resourceHelper.gs(R.string.smscommunicator_default_user_display_name) val defaultPatientName = resourceHelper.gs(R.string.patient_name_default)
// name we detect from OS // name we detect from OS
val systemName = n1 ?: n2 ?: n3 ?: n4 ?: n5 ?: n6 ?: defaultOtpName val systemName = n1 ?: n2 ?: n3 ?: n4 ?: n5 ?: n6 ?: defaultPatientName
val name = if (otpName.length > 0 && otpName != defaultOtpName) otpName else systemName val name = if (patientName.isNotEmpty() && patientName != defaultPatientName) patientName else systemName
return name return name
} }

View file

@ -48,8 +48,8 @@ class OneTimePassword @Inject constructor(
* Name of master device (target of OTP) * Name of master device (target of OTP)
*/ */
fun name(): String { fun name(): String {
val defaultUserName = resourceHelper.gs(R.string.smscommunicator_default_user_display_name) val defaultUserName = resourceHelper.gs(R.string.patient_name_default)
var userName = sp.getString(R.string.key_smscommunicator_otp_name, defaultUserName).replace(":", "").trim() var userName = sp.getString(R.string.key_patient_name, defaultUserName).replace(":", "").trim()
if (userName.isEmpty()) if (userName.isEmpty())
userName = defaultUserName userName = defaultUserName
return userName return userName
@ -119,6 +119,6 @@ class OneTimePassword @Inject constructor(
* Return URI used to provision Authenticator apps * Return URI used to provision Authenticator apps
*/ */
fun provisioningURI(): String? = fun provisioningURI(): String? =
key?.let { "otpauth://totp/AndroidAPS:" + URLEncoder.encode(name(), "utf-8") + "?secret=" + BaseEncoding.base32().encode(it.encoded).replace("=", "") + "&issuer=AndroidAPS" } key?.let { "otpauth://totp/AndroidAPS:" + URLEncoder.encode(name(), "utf-8").replace("+", "%20") + "?secret=" + BaseEncoding.base32().encode(it.encoded).replace("=", "") + "&issuer=AndroidAPS" }
} }

View file

@ -198,6 +198,14 @@ class SWDefinition @Inject constructor(
.add(SWBreak(injector)) .add(SWBreak(injector))
.validator(SWValidator { nsClientPlugin.nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth }) .validator(SWValidator { nsClientPlugin.nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth })
.visibility(SWValidator { !(nsClientPlugin.nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth) }) .visibility(SWValidator { !(nsClientPlugin.nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth) })
private val screenPatientName = SWScreen(injector, R.string.patient_name)
.skippable(true)
.add(SWInfotext(injector)
.label(R.string.patient_name_summary))
.add(SWEditString(injector)
.validator(SWTextValidator { text: String -> text.length > 0 })
.preferenceId(R.string.key_patient_name)
.updateDelay(5))
private val screenAge = SWScreen(injector, R.string.patientage) private val screenAge = SWScreen(injector, R.string.patientage)
.skippable(false) .skippable(false)
.add(SWBreak(injector)) .add(SWBreak(injector))
@ -389,6 +397,7 @@ class SWDefinition @Inject constructor(
.add(screenUnits) .add(screenUnits)
.add(displaySettings) .add(displaySettings)
.add(screenNsClient) .add(screenNsClient)
.add(screenPatientName)
.add(screenAge) .add(screenAge)
.add(screenInsulin) .add(screenInsulin)
.add(screenBgSource) .add(screenBgSource)
@ -415,6 +424,7 @@ class SWDefinition @Inject constructor(
.add(screenUnits) .add(screenUnits)
.add(displaySettings) .add(displaySettings)
.add(screenNsClient) .add(screenNsClient)
.add(screenPatientName)
.add(screenAge) .add(screenAge)
.add(screenInsulin) .add(screenInsulin)
.add(screenBgSource) .add(screenBgSource)
@ -437,6 +447,7 @@ class SWDefinition @Inject constructor(
.add(displaySettings) .add(displaySettings)
.add(screenNsClient) .add(screenNsClient)
.add(screenBgSource) .add(screenBgSource)
.add(screenPatientName)
.add(screenAge) .add(screenAge)
.add(screenInsulin) .add(screenInsulin)
.add(screenSensitivity) .add(screenSensitivity)

View file

@ -276,7 +276,7 @@
<string name="metadata_label_created_at">Created at</string> <string name="metadata_label_created_at">Created at</string>
<string name="metadata_label_aaps_version">AAPS Version</string> <string name="metadata_label_aaps_version">AAPS Version</string>
<string name="metadata_label_aaps_flavour">Build Variant</string> <string name="metadata_label_aaps_flavour">Build Variant</string>
<string name="metadata_label_device_name">Exporting device name</string> <string name="metadata_label_device_name">Exporting device patient name</string>
<string name="metadata_label_device_model">Exporting device model</string> <string name="metadata_label_device_model">Exporting device model</string>
<string name="metadata_label_encryption">File encryption</string> <string name="metadata_label_encryption">File encryption</string>
@ -611,6 +611,10 @@
<string name="key_adult" translatable="false">adult</string> <string name="key_adult" translatable="false">adult</string>
<string name="key_resistantadult" translatable="false">resistantadult</string> <string name="key_resistantadult" translatable="false">resistantadult</string>
<string name="patientage_summary">Please select patient age to setup safety limits</string> <string name="patientage_summary">Please select patient age to setup safety limits</string>
<string name="patient_name">Patient name</string>
<string name="patient_name_summary">Please provide patient name or nickname to differentiate among multiple setups</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">User</string>
<string name="key_patient_name" translatable="false">patient_name</string>
<string name="key_i_understand" translatable="false">I_understand</string> <string name="key_i_understand" translatable="false">I_understand</string>
<string name="Glimp">Glimp</string> <string name="Glimp">Glimp</string>
<string name="needwhitelisting">%1$s needs battery optimalization whitelisting for proper performance</string> <string name="needwhitelisting">%1$s needs battery optimalization whitelisting for proper performance</string>
@ -1755,19 +1759,15 @@
<!-- SMS Communicator & OTP Authenticator --> <!-- SMS Communicator & OTP Authenticator -->
<string name="key_smscommunicator_otp_enabled" translatable="false">smscommunicator_otp_enabled</string> <string name="key_smscommunicator_otp_enabled" translatable="false">smscommunicator_otp_enabled</string>
<string name="key_smscommunicator_otp_name" translatable="false">smscommunicator_otp_name</string>
<string name="key_smscommunicator_otp_password" translatable="false">smscommunicator_otp_password</string> <string name="key_smscommunicator_otp_password" translatable="false">smscommunicator_otp_password</string>
<string name="key_smscommunicator_otp_secret" translatable="false">smscommunicator_otp_secret</string> <string name="key_smscommunicator_otp_secret" translatable="false">smscommunicator_otp_secret</string>
<string name="smscommunicator_default_user_display_name" comment="This is default user display name, shown by Authenticators">User</string>
<string name="smscommunicator_code_from_authenticator_for" comment="This is continuation of sentence: To [ACTION] reply with code">from Authenticator app for: %1$s</string> <string name="smscommunicator_code_from_authenticator_for" comment="This is continuation of sentence: To [ACTION] reply with code">from Authenticator app for: %1$s</string>
<string name="smscommunicator_otp_enabled">Enable Authenticator</string> <string name="smscommunicator_otp_enabled">Enable Authenticator</string>
<string name="smscommunicator_otp_enabled_summary">Authenticate commands using One Time Passwords generated by Google Authenticator or similar 2FA apps.</string> <string name="smscommunicator_otp_enabled_summary">Authenticate commands using One Time Passwords generated by Google Authenticator or similar 2FA apps.</string>
<string name="smscommunicator_otp_pin">Additional PIN at token end</string> <string name="smscommunicator_otp_pin">Additional PIN at token end</string>
<string name="smscommunicator_otp_pin_summary">Additional digits that should be memorised and glued at end of each generated One Time Password</string> <string name="smscommunicator_otp_pin_summary">Additional digits that should be memorised and glued at end of each generated One Time Password</string>
<string name="smscommunicator_otp_name">User name for Authenticator</string>
<string name="smscommunicator_otp_name_summary">User name displayed along with generated OTP on Authenticator App</string>
<string name="smscomunicator_tab_otp_label">Authenticator setup</string> <string name="smscomunicator_tab_otp_label">Authenticator setup</string>

View file

@ -20,6 +20,14 @@
android:key="@string/key_language" android:key="@string/key_language"
android:title="@string/language" /> android:title="@string/language" />
<EditTextPreference
android:inputType="textPersonName"
android:key="@string/key_patient_name"
android:title="@string/patient_name"
android:summary="@string/patient_name_summary"
/>
<PreferenceCategory android:title="@string/protection"> <PreferenceCategory android:title="@string/protection">
<Preference <Preference

View file

@ -49,14 +49,6 @@
android:title="@string/smscommunicator_otp_pin" android:title="@string/smscommunicator_otp_pin"
validate:testType="pinStrength" /> validate:testType="pinStrength" />
<info.nightscout.androidaps.utils.textValidator.ValidatingEditTextPreference
android:dependency="@string/key_smscommunicator_remotecommandsallowed"
android:key="@string/key_smscommunicator_otp_name"
android:summary="@string/smscommunicator_otp_name_summary"
android:title="@string/smscommunicator_otp_name"
validate:testType="personName" />
</PreferenceCategory> </PreferenceCategory>
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>