Skip to content
Snippets Groups Projects
Unverified Commit 11f0adbc authored by Thomas Klingbeil's avatar Thomas Klingbeil Committed by GitHub
Browse files

Add persistance of timestamp and whether user is allowed to submit keys (#74)


* Store timestamp of receiving registration token

* also reset this timestamp when deleting the registration token

* use correct timestamp for display of test time

* replace tracing activation time by test result reception time

* rename TAN request to match context

* set isAllowedToSubmitDiagnosisKeys properly

Co-authored-by: default avatarJakob Möller <jakob.moeller@sap.com>
parent 0302bf9d
No related branches found
No related tags found
No related merge requests found
...@@ -192,7 +192,7 @@ object WebRequestBuilder { ...@@ -192,7 +192,7 @@ object WebRequestBuilder {
) = ) =
suspendCoroutine<String> { cont -> suspendCoroutine<String> { cont ->
val requestID = UUID.randomUUID() val requestID = UUID.randomUUID()
val getTestResultRequest = val getTANRequest =
TanRequest( TanRequest(
url, url,
requestID, requestID,
...@@ -209,7 +209,7 @@ object WebRequestBuilder { ...@@ -209,7 +209,7 @@ object WebRequestBuilder {
}, },
RequestErrorListener(requestID, cont) RequestErrorListener(requestID, cont)
) )
RequestQueueHolder.addToRequestQueue(getTestResultRequest) RequestQueueHolder.addToRequestQueue(getTANRequest)
Log.d(TAG, "$requestID: Added $url to queue.") Log.d(TAG, "$requestID: Added $url to queue.")
} }
......
...@@ -22,6 +22,7 @@ object SubmissionService { ...@@ -22,6 +22,7 @@ object SubmissionService {
testTAN != null -> asyncRegisterDeviceViaTAN(testTAN) testTAN != null -> asyncRegisterDeviceViaTAN(testTAN)
else -> throw NoGUIDOrTANSetException() else -> throw NoGUIDOrTANSetException()
} }
LocalData.devicePairingSuccessfulTimestamp(System.currentTimeMillis())
} }
private suspend fun asyncRegisterDeviceViaGUID(guid: String) { private suspend fun asyncRegisterDeviceViaGUID(guid: String) {
...@@ -73,6 +74,7 @@ object SubmissionService { ...@@ -73,6 +74,7 @@ object SubmissionService {
fun deleteRegistrationToken() { fun deleteRegistrationToken() {
LocalData.registrationToken(null) LocalData.registrationToken(null)
LocalData.devicePairingSuccessfulTimestamp(0L)
} }
private fun deleteAuthCode() { private fun deleteAuthCode() {
......
...@@ -386,6 +386,24 @@ object LocalData { ...@@ -386,6 +386,24 @@ object LocalData {
return timestamp return timestamp
} }
fun devicePairingSuccessfulTimestamp(value: Long) =
with(getSharedPreferenceInstance().edit()) {
putLong(
CoronaWarnApplication.getAppContext()
.getString(R.string.preference_device_pairing_successful_time),
value
)
commit()
}
fun devicePairingSuccessfulTimestamp(): Long? {
return getSharedPreferenceInstance().getLong(
CoronaWarnApplication.getAppContext()
.getString(R.string.preference_device_pairing_successful_time),
0L
)
}
fun numberOfSuccessfulSubmissions(value: Int) = fun numberOfSuccessfulSubmissions(value: Int) =
getSharedPreferenceInstance().edit(true) { getSharedPreferenceInstance().edit(true) {
putInt( putInt(
......
...@@ -19,12 +19,14 @@ object SubmissionRepository { ...@@ -19,12 +19,14 @@ object SubmissionRepository {
val testResultValue = val testResultValue =
WebRequestBuilder.asyncGetTestResult(TEST_RESULT_URL, registrationToken) WebRequestBuilder.asyncGetTestResult(TEST_RESULT_URL, registrationToken)
testResult.value = TestResult.fromInt(testResultValue) testResult.value = TestResult.fromInt(testResultValue)
if (testResult == TestResult.POSITIVE) {
LocalData.isAllowedToSubmitDiagnosisKeys(true)
}
val initialTestResultReceivedTimestamp = LocalData.inititalTestResultReceivedTimestamp() val initialTestResultReceivedTimestamp = LocalData.inititalTestResultReceivedTimestamp()
if (initialTestResultReceivedTimestamp == null) { if (initialTestResultReceivedTimestamp == null) {
val currentTime = System.currentTimeMillis() val currentTime = System.currentTimeMillis()
LocalData.initialTracingActivationTimestamp(currentTime) LocalData.inititalTestResultReceivedTimestamp(currentTime)
testResultReceivedDate.value = Date(currentTime) testResultReceivedDate.value = Date(currentTime)
} else { } else {
testResultReceivedDate.value = Date(initialTestResultReceivedTimestamp) testResultReceivedDate.value = Date(initialTestResultReceivedTimestamp)
......
...@@ -60,6 +60,8 @@ class SubmissionViewModel : ViewModel() { ...@@ -60,6 +60,8 @@ class SubmissionViewModel : ViewModel() {
fun deregisterTestFromDevice() { fun deregisterTestFromDevice() {
deleteTestGUID() deleteTestGUID()
SubmissionService.deleteRegistrationToken() SubmissionService.deleteRegistrationToken()
LocalData.isAllowedToSubmitDiagnosisKeys(false)
LocalData.inititalTestResultReceivedTimestamp(0L)
} }
private fun executeRequestWithState(apiRequest: suspend () -> Unit, state: MutableLiveData<ApiRequestState>) { private fun executeRequestWithState(apiRequest: suspend () -> Unit, state: MutableLiveData<ApiRequestState>) {
......
...@@ -47,6 +47,9 @@ ...@@ -47,6 +47,9 @@
<string name="preference_m_registration_token"> <string name="preference_m_registration_token">
<xliff:g id="preference">preference_m_registration_token</xliff:g> <xliff:g id="preference">preference_m_registration_token</xliff:g>
</string> </string>
<string name="preference_device_pairing_successful_time">
<xliff:g id="preference">preference_device_pairing_successful_time</xliff:g>
</string>
<string name="preference_initial_tracing_activation_time"> <string name="preference_initial_tracing_activation_time">
<xliff:g id="preference">preference_initial_tracing_activation_time</xliff:g> <xliff:g id="preference">preference_initial_tracing_activation_time</xliff:g>
</string> </string>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment