mirror of
https://github.com/AU-COVIDSafe/mobile-android.git
synced 2025-01-18 08:46:35 +00:00
COVIDSafe code from version 1.14 (#29)
This commit is contained in:
parent
415682238d
commit
6bf46ded07
18 changed files with 312 additions and 27 deletions
|
@ -29,8 +29,8 @@ android {
|
|||
applicationId "au.gov.health.covidsafe"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 78
|
||||
versionName "1.13.0"
|
||||
versionCode 80
|
||||
versionName "1.14.0"
|
||||
buildConfigField "String", "GITHASH", "\"${getGitHash()}\""
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
|
|
@ -134,7 +134,9 @@ class PeekActivity : AppCompatActivity() {
|
|||
stop.visibility = View.GONE
|
||||
delete.visibility = View.GONE
|
||||
}
|
||||
|
||||
btn_de_active_token.setOnClickListener {
|
||||
Preference.putEncrypterJWTToken(this, "123456789" )
|
||||
}
|
||||
}
|
||||
|
||||
private fun showPushTokenOnDebugBuild() {
|
||||
|
|
|
@ -16,14 +16,17 @@ import au.gov.health.covidsafe.ui.utils.Utils
|
|||
import au.gov.health.covidsafe.utils.NetworkConnectionCheck
|
||||
import com.google.android.gms.tasks.OnCompleteListener
|
||||
import com.google.firebase.iid.FirebaseInstanceId
|
||||
import kotlinx.android.synthetic.main.view_home_setup_incomplete.*
|
||||
|
||||
private const val TAG = "HomeActivity"
|
||||
private const val UNAUTHORIZED = "Unauthorized"
|
||||
|
||||
class HomeActivity : FragmentActivity(), NetworkConnectionCheck.NetworkConnectionListener {
|
||||
|
||||
var isAppUpdateAvailableLiveData = MutableLiveData<Boolean>()
|
||||
var appUpdateAvailableMessageResponseLiveData = MutableLiveData<MessagesResponse>()
|
||||
var isWindowFocusChangeLiveData = MutableLiveData<Boolean>()
|
||||
var isJWTCorrupted = MutableLiveData<Boolean>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -60,6 +63,13 @@ class HomeActivity : FragmentActivity(), NetworkConnectionCheck.NetworkConnectio
|
|||
|
||||
private fun checkAndUpdateHealthStatus() {
|
||||
GetMessagesScheduler.scheduleGetMessagesJob {
|
||||
|
||||
if (it.errorBodyMessage.equals(UNAUTHORIZED)) {
|
||||
isJWTCorrupted.postValue(true)
|
||||
} else{
|
||||
isJWTCorrupted.postValue(false)
|
||||
}
|
||||
|
||||
val isAppWithLatestVersion = it.messages.isNullOrEmpty()
|
||||
isAppUpdateAvailableLiveData.postValue(isAppWithLatestVersion)
|
||||
CentralLog.d(TAG, "isAppWithLatestVersion: $it")
|
||||
|
@ -75,7 +85,7 @@ class HomeActivity : FragmentActivity(), NetworkConnectionCheck.NetworkConnectio
|
|||
body,
|
||||
"https://play.google.com/store/apps/details?id=au.gov.health.covidsafe")
|
||||
)
|
||||
))
|
||||
, it.message, it.forceappupgrade, it.errorBodyMessage))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,10 @@ package au.gov.health.covidsafe.networking.response
|
|||
import androidx.annotation.Keep
|
||||
|
||||
@Keep
|
||||
data class MessagesResponse(val messages: List<Message>?)
|
||||
data class MessagesResponse(val messages: List<Message>?, val message: String?, val forceappupgrade: Boolean?, val errorBodyMessage:String?)
|
||||
|
||||
@Keep
|
||||
data class Message(val title: String, val body: String, val destination: String)
|
||||
|
||||
@Keep
|
||||
data class ErrorMessage(val message: String?)
|
||||
|
|
|
@ -37,6 +37,7 @@ object Preference {
|
|||
private const val IS_DEVICE_NAME_CHANGE_PROMPT_DISPLAYED = "IS_DEVICE_NAME_CHANGE_DISPLAYED"
|
||||
private const val BUILD_NUMBER_FOR_POP_UP_NOTIFICATION = "BUILD_NUMBER_FOR_POP_UP_NOTIFICATION"
|
||||
private const val TURN_CASE_NUMBER = "TURN_CASE_NUMBER"
|
||||
private const val IS_REREGISTER = "IS_REREGISTER"
|
||||
|
||||
fun putDeviceID(context: Context, value: String) {
|
||||
context.getSharedPreferences(PREF_ID, Context.MODE_PRIVATE)
|
||||
|
@ -126,6 +127,16 @@ object Preference {
|
|||
.getBoolean(IS_ONBOARDED, false)
|
||||
}
|
||||
|
||||
fun putIsReRegister(context: Context, value: Boolean) {
|
||||
context.getSharedPreferences(PREF_ID, Context.MODE_PRIVATE)
|
||||
.edit().putBoolean(IS_REREGISTER, value).apply()
|
||||
}
|
||||
|
||||
fun isReRegister(context: Context): Boolean {
|
||||
return context.getSharedPreferences(PREF_ID, Context.MODE_PRIVATE)
|
||||
.getBoolean(IS_REREGISTER, false)
|
||||
}
|
||||
|
||||
fun putHasDeviceNameNotificationDisplayed(context: Context, value: Boolean) {
|
||||
context.getSharedPreferences(PREF_ID, Context.MODE_PRIVATE)
|
||||
.edit().putBoolean(HAS_DEVICE_NAME_NOTIFICATION_DISPLAYED, value).apply()
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.app.job.JobService
|
|||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import au.gov.health.covidsafe.BuildConfig
|
||||
import au.gov.health.covidsafe.preference.Preference
|
||||
import au.gov.health.covidsafe.app.TracerApp
|
||||
import au.gov.health.covidsafe.extensions.isBatteryOptimizationDisabled
|
||||
import au.gov.health.covidsafe.extensions.isBlueToothEnabled
|
||||
|
@ -15,10 +14,13 @@ import au.gov.health.covidsafe.extensions.isLocationEnabledOnDevice
|
|||
import au.gov.health.covidsafe.extensions.isLocationPermissionAllowed
|
||||
import au.gov.health.covidsafe.factory.NetworkFactory.Companion.awsClient
|
||||
import au.gov.health.covidsafe.logging.CentralLog
|
||||
import au.gov.health.covidsafe.networking.response.ErrorMessage
|
||||
import au.gov.health.covidsafe.networking.response.MessagesResponse
|
||||
import au.gov.health.covidsafe.preference.Preference
|
||||
import au.gov.health.covidsafe.scheduler.GetMessagesScheduler.mostRecentRecordTimestamp
|
||||
import au.gov.health.covidsafe.streetpass.persistence.StreetPassRecord
|
||||
import au.gov.health.covidsafe.streetpass.persistence.StreetPassRecordDatabase
|
||||
import com.google.gson.Gson
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.delay
|
||||
|
@ -175,9 +177,14 @@ object GetMessagesScheduler {
|
|||
|
||||
response.body()?.let {
|
||||
CentralLog.d(TAG, "onResponse() MessagesResponse = $it")
|
||||
|
||||
messagesResponseCallback?.invoke(it)
|
||||
}
|
||||
} else if (responseCode == 401) {
|
||||
response.errorBody()?.let {
|
||||
val errorMessage: ErrorMessage = Gson().fromJson(it.string(), ErrorMessage::class.java)
|
||||
val messageResponse = MessagesResponse(emptyList(), null, false, errorMessage.message)
|
||||
messagesResponseCallback?.invoke(messageResponse)
|
||||
}
|
||||
} else {
|
||||
CentralLog.w(TAG, "onResponse() got error response code = $responseCode.")
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ fun setDateFormat(textView: TextView, dateString: String?) {
|
|||
val convertedDateString = SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()).format(cal.time)
|
||||
val convertedTimeString = SimpleDateFormat("h a", Locale.getDefault()).format(cal.time)
|
||||
|
||||
val finalDisplayDateFormat = "$convertedDateString at $convertedTimeString AEST"
|
||||
val finalDisplayDateFormat = "$convertedDateString at $convertedTimeString"
|
||||
textView.text = finalDisplayDateFormat
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import android.view.View.GONE
|
|||
import android.view.View.VISIBLE
|
||||
import android.view.ViewGroup
|
||||
import android.view.accessibility.AccessibilityEvent
|
||||
import androidx.constraintlayout.solver.GoalRow
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.viewModels
|
||||
|
@ -34,6 +35,7 @@ import au.gov.health.covidsafe.notifications.NotificationBuilder
|
|||
import au.gov.health.covidsafe.preference.Preference
|
||||
import au.gov.health.covidsafe.talkback.setHeading
|
||||
import au.gov.health.covidsafe.ui.base.BaseFragment
|
||||
import au.gov.health.covidsafe.ui.onboarding.OnboardingActivity
|
||||
import au.gov.health.covidsafe.utils.AnimationUtils.slideAnimation
|
||||
import au.gov.health.covidsafe.utils.NetworkConnectionCheck
|
||||
import au.gov.health.covidsafe.utils.SlideDirection
|
||||
|
@ -67,6 +69,7 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
private var mIsBroadcastListenerRegistered = false
|
||||
|
||||
private var counter: Int = 0
|
||||
private var jwtExpired: Boolean = false
|
||||
|
||||
private var checkIsInternetConnected = false
|
||||
private var isAppWithLatestVersion = false
|
||||
|
@ -95,8 +98,8 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
initializeDebugTestActivity()
|
||||
initializeNoNetworkError()
|
||||
initializeRefreshButton()
|
||||
|
||||
initializePullToRefresh()
|
||||
initialiseReRegistration()
|
||||
|
||||
NetworkConnectionCheck.addNetworkChangedListener(requireContext(), this)
|
||||
}
|
||||
|
@ -119,6 +122,14 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
}
|
||||
}
|
||||
|
||||
private fun initialiseReRegistration() {
|
||||
registration_layout.setOnClickListener {
|
||||
Preference.putIsOnBoarded(requireContext(), false)
|
||||
Preference.putIsReRegister(requireContext(), true)
|
||||
startActivity(Intent(requireContext(), OnboardingActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
private fun initiateFetchingCaseNumbers() {
|
||||
lifecycleScope.launch {
|
||||
homeFragmentViewModel.fetchGetCaseStatistics(lifecycle)
|
||||
|
@ -127,6 +138,7 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
|
||||
private fun initializeObservers() {
|
||||
(activity as HomeActivity?)?.run {
|
||||
isJWTCorrupted.observe(this@HomeFragment, isJwtExpired)
|
||||
isAppUpdateAvailableLiveData.observe(this@HomeFragment, latestAppAvailable)
|
||||
isWindowFocusChangeLiveData.observe(this@HomeFragment, refreshUiObserver)
|
||||
}
|
||||
|
@ -166,6 +178,10 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
}
|
||||
}
|
||||
|
||||
private val isJwtExpired = Observer<Boolean> { expired ->
|
||||
jwtExpired = expired
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
|
@ -337,12 +353,12 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
CentralLog.d(TAG, "refreshSetupCompleteOrIncompleteUi")
|
||||
context?.let {
|
||||
val isAllPermissionsEnabled = it.allPermissionsEnabled()
|
||||
val isAllPermissionsEnabled = it.allPermissionsEnabled() && !jwtExpired
|
||||
if (!isAllPermissionsEnabled) {
|
||||
NotificationBuilder.clearPossibleIssueNotificationCheck()
|
||||
updateJwtExpiredHeader()
|
||||
}
|
||||
val isDataUploadedInPast14Days = isDataUploadedInPast14Days(it)
|
||||
|
||||
updateSetupCompleteStatus(isAllPermissionsEnabled)
|
||||
updateSetupCompleteHeaderTitle1(it, isAllPermissionsEnabled, isDataUploadedInPast14Days)
|
||||
updateSetupCompleteHeaderTitle2(isAllPermissionsEnabled)
|
||||
|
@ -379,6 +395,16 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
}
|
||||
}
|
||||
|
||||
private fun updateJwtExpiredHeader() {
|
||||
if (jwtExpired) {
|
||||
permissions_card_subtitle.visibility = GONE
|
||||
registration_layout.visibility = VISIBLE
|
||||
} else {
|
||||
permissions_card_subtitle.visibility = VISIBLE
|
||||
registration_layout.visibility = GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun showLastDataUploadedInfo(context: Context, isDataUploadedInPast14Days: Boolean) {
|
||||
if (isDataUploadedInPast14Days) {
|
||||
data_last_uploaded_layout.visibility = VISIBLE
|
||||
|
@ -430,7 +456,7 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
|
||||
private fun updateBlueToothStatus() {
|
||||
requireContext().isBlueToothEnabled()?.let {
|
||||
if (!it) {
|
||||
if (!it && !jwtExpired) {
|
||||
bluetooth_card_view_layout.visibility = VISIBLE
|
||||
bluetooth_card_view.render(formatBlueToothTitle(it), it)
|
||||
} else {
|
||||
|
@ -443,7 +469,7 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
|
||||
private fun updateBatteryOptimizationStatus() {
|
||||
requireContext().isBatteryOptimizationDisabled()?.let {
|
||||
if (!it) {
|
||||
if (!it && !jwtExpired) {
|
||||
battery_card_view_layout.visibility = VISIBLE
|
||||
battery_card_view.render(
|
||||
formatNonBatteryOptimizationTitle(!it),
|
||||
|
@ -462,7 +488,7 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks, Networ
|
|||
requireContext().isLocationPermissionAllowed()?.let {
|
||||
val locationWorking = it && requireContext().isLocationEnabledOnDevice()
|
||||
val locationOffPrompts = getString(R.string.home_set_location_why)
|
||||
if (!locationWorking) {
|
||||
if (!locationWorking && !jwtExpired) {
|
||||
location_card_view_layout.visibility = VISIBLE
|
||||
location_card_view.render(formatLocationTitle(locationWorking), locationWorking, locationOffPrompts)
|
||||
} else {
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
package au.gov.health.covidsafe.ui.home
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.*
|
||||
import au.gov.health.covidsafe.BuildConfig
|
||||
import au.gov.health.covidsafe.R
|
||||
import au.gov.health.covidsafe.extensions.LOCATION
|
||||
import au.gov.health.covidsafe.extensions.askForLocationPermission
|
||||
import au.gov.health.covidsafe.factory.RetrofitServiceGenerator
|
||||
import au.gov.health.covidsafe.interactor.usecase.GetCaseStatisticsUseCase
|
||||
import au.gov.health.covidsafe.logging.CentralLog
|
||||
|
@ -18,8 +14,6 @@ import au.gov.health.covidsafe.preference.Preference
|
|||
import com.google.gson.Gson
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import pub.devrel.easypermissions.EasyPermissions
|
||||
import pub.devrel.easypermissions.PermissionRequest
|
||||
|
||||
private const val TAG = "HomeFragmentViewModel"
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import androidx.core.content.ContextCompat
|
|||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import au.gov.health.covidsafe.ui.base.HasBlockingState
|
||||
import au.gov.health.covidsafe.preference.Preference
|
||||
import au.gov.health.covidsafe.R
|
||||
|
@ -33,6 +34,16 @@ class OnboardingActivity : FragmentActivity(), HasBlockingState, PagerContainer
|
|||
if (isUiBlocked) {
|
||||
loadingProgressBarFrame?.isVisible = true
|
||||
}
|
||||
|
||||
val myNavHostFragment: NavHostFragment = fragment_nav_host as NavHostFragment
|
||||
val inflater = myNavHostFragment.navController.navInflater
|
||||
if (Preference.isReRegister(this)) {
|
||||
val graph = inflater.inflate(R.navigation.nav_re_register)
|
||||
myNavHostFragment.navController.graph = graph
|
||||
} else {
|
||||
val graph = inflater.inflate(R.navigation.nav_onboarding)
|
||||
myNavHostFragment.navController.graph = graph
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachFragment(fragment: Fragment) {
|
||||
|
|
|
@ -10,6 +10,7 @@ import android.view.accessibility.AccessibilityEvent
|
|||
import au.gov.health.covidsafe.HomeActivity
|
||||
import au.gov.health.covidsafe.R
|
||||
import au.gov.health.covidsafe.links.LinkBuilder
|
||||
import au.gov.health.covidsafe.preference.Preference
|
||||
import au.gov.health.covidsafe.talkback.setHeading
|
||||
import au.gov.health.covidsafe.ui.base.PagerChildFragment
|
||||
import au.gov.health.covidsafe.ui.base.UploadButtonLayout
|
||||
|
@ -28,6 +29,12 @@ class PermissionSuccessFragment : PagerChildFragment() {
|
|||
permission_success_headline.setHeading()
|
||||
permission_success_headline.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
|
||||
|
||||
if (Preference.isReRegister(requireContext())) {
|
||||
permission_success_headline.text = requireContext().getString(R.string.jwt_success)
|
||||
} else {
|
||||
permission_success_headline.text = requireContext().getString(R.string.permission_success_headline)
|
||||
}
|
||||
|
||||
permission_success_content.text = LinkBuilder.getHowPermissionSuccessContent(requireContext())
|
||||
permission_success_content.movementMethod = LinkMovementMethod.getInstance()
|
||||
|
||||
|
|
13
app/src/main/res/drawable/ic_vector.xml
Normal file
13
app/src/main/res/drawable/ic_vector.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="8dp"
|
||||
android:height="14dp"
|
||||
android:viewportWidth="8"
|
||||
android:viewportHeight="14">
|
||||
<path
|
||||
android:pathData="M1,13L7,7L1,1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#A31919"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
|
@ -37,8 +37,7 @@
|
|||
android:layout_height="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_weight="1"
|
||||
app:defaultNavHost="true"
|
||||
app:navGraph="@navigation/nav_onboarding" />
|
||||
app:defaultNavHost="true"/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/loadingProgressBarFrame"
|
||||
|
|
|
@ -23,9 +23,17 @@
|
|||
<Space
|
||||
android:id="@+id/push_token_space"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/space_24"
|
||||
android:layout_height="@dimen/space_4"
|
||||
app:layout_constraintTop_toBottomOf="@+id/home_push_notification_token" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_de_active_token"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="De-Active Token"
|
||||
android:layout_margin="16dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/push_token_space"/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerview"
|
||||
android:layout_width="0dp"
|
||||
|
@ -35,7 +43,7 @@
|
|||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/push_token_space"
|
||||
app:layout_constraintTop_toBottomOf="@+id/btn_de_active_token"
|
||||
tools:listitem="@layout/recycler_view_item" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/home_setup_incomplete_permissions_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -40,7 +41,7 @@
|
|||
style="@style/fontRobotoRegular16"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/space_16"
|
||||
android:padding="@dimen/space_16"
|
||||
android:text="@string/home_app_permission_status_subtitle"
|
||||
android:textColor="@color/slate_black_1" />
|
||||
|
||||
|
@ -98,4 +99,58 @@
|
|||
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/jwt_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/registration_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:padding="@dimen/space_16"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_register_again"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ic_vector"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/re_register"
|
||||
style="@style/fontRobotoRegular20"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start"
|
||||
android:maxLines="2"
|
||||
android:textColor="@color/error_red"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/permission_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:text="@string/jwt_heading"
|
||||
tools:text="Please register again" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/register_body"
|
||||
style="@style/fontRobotoRegular16"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="start"
|
||||
android:paddingTop="@dimen/space_8"
|
||||
android:textColor="@color/error_red"
|
||||
app:layout_constraintTop_toBottomOf="@id/re_register"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/ic_register_again"
|
||||
tools:visibility="visible"
|
||||
android:text="@string/jwt_description"
|
||||
tools:text="There is an issue with your registration details." />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
138
app/src/main/res/navigation/nav_re_register.xml
Normal file
138
app/src/main/res/navigation/nav_re_register.xml
Normal file
|
@ -0,0 +1,138 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/nav_onboarding"
|
||||
app:startDestination="@id/personalDetailsFragment">
|
||||
|
||||
<include app:graph="@navigation/nav_register" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/introFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.introduction.IntroductionFragment"
|
||||
android:label="IntroductionFragment"
|
||||
tools:layout="@layout/fragment_intro">
|
||||
<action
|
||||
android:id="@+id/action_introFragment_to_howItWorksFragment"
|
||||
app:destination="@id/howItWorksFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/howItWorksFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.howitworks.HowItWorksFragment"
|
||||
android:label="HowItWorksFragment"
|
||||
tools:layout="@layout/fragment_how_it_works">
|
||||
<action
|
||||
android:id="@+id/action_howItWorksFragment_to_dataPrivacy"
|
||||
app:destination="@id/dataPrivacyFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/dataPrivacyFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.dataprivacy.DataPrivacyFragment"
|
||||
android:label="DataPrivacyFragment"
|
||||
tools:layout="@layout/fragment_data_privacy">
|
||||
<action
|
||||
android:id="@+id/action_dataPrivacy_to_registrationConsentFragment"
|
||||
app:destination="@id/resistrationConsentFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/resistrationConsentFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.registrationconsent.RegistrationConsentFragment"
|
||||
android:label="RegistrationContentFragment"
|
||||
tools:layout="@layout/fragment_registration_consent">
|
||||
<action
|
||||
android:id="@+id/action_registrationConsentFragment_to_personalDetailsFragment"
|
||||
app:destination="@id/personalDetailsFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/personalDetailsFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.personal.PersonalDetailsFragment"
|
||||
android:label="PersonalDetailsFragment"
|
||||
tools:layout="@layout/fragment_personal_details">
|
||||
<action
|
||||
android:id="@+id/action_personalDetails_to_enterNumberFragment"
|
||||
app:destination="@id/nav_register"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
<action
|
||||
android:id="@+id/action_personalDetails_to_underSixteenFragment"
|
||||
app:destination="@id/underSixteenFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/underSixteenFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.undersixteen.UnderSixteenFragment"
|
||||
android:label="UnderSixteenFragment"
|
||||
tools:layout="@layout/fragment_under_sixteen" >
|
||||
<action
|
||||
android:id="@+id/action_underSixteenFragment_to_enterNumberFragment"
|
||||
app:destination="@id/nav_register"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/permissionFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.permission.PermissionFragment"
|
||||
android:label="PermissionFragment"
|
||||
tools:layout="@layout/fragment_permission">
|
||||
<action
|
||||
android:id="@+id/action_permissionFragment_to_permissionDeviceNameFragment"
|
||||
app:destination="@id/permissionDeviceNameFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/permissionDeviceNameFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.permission.PermissionDeviceNameFragment"
|
||||
android:label="PermissionDeviceNameFragment"
|
||||
tools:layout="@layout/fragment_permission_device_name">
|
||||
<action
|
||||
android:id="@+id/action_permissionDeviceNameFragment_to_permissionSuccessFragment"
|
||||
app:destination="@id/permissionSuccessFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/permissionSuccessFragment"
|
||||
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.permissionsuccess.PermissionSuccessFragment"
|
||||
android:label="PermissionSuccessFragment"
|
||||
app:enterAnim="@anim/slide_in_right"
|
||||
app:exitAnim="@anim/slide_out_left"
|
||||
app:popEnterAnim="@anim/slide_in_left"
|
||||
app:popExitAnim="@anim/slide_out_right"
|
||||
tools:layout="@layout/fragment_permission_success" />
|
||||
</navigation>
|
|
@ -253,7 +253,7 @@
|
|||
<string name="enter_number_button">Nhận mã PIN</string>
|
||||
<string name="enter_number_content">Chúng tôi sẽ gửi cho bạn mã PIN gồm 6 chữ số để xác minh số điện thoại của bạn.</string>
|
||||
<string name="enter_number_for_example">Ví dụ:</string>
|
||||
<string name="enter_number_headline">Nhập sô điện thoại di động của bạn</string>
|
||||
<string name="enter_number_headline">Nhập số điện thoại di động của bạn</string>
|
||||
<string name="enter_number_prefix">+61</string>
|
||||
<string name="enter_number_relative">Đăng ký dùm bạn bè hoặc người thân? \n\nHọ cần phải đăng ký bằng máy điện thoại và số điện thoại của riêng họ để COVIDSafe có thể hoạt động cho họ.</string>
|
||||
<string name="enter_pin_button">Xác minh</string>
|
||||
|
|
|
@ -347,6 +347,7 @@
|
|||
<string name="IssueFooter">We may contact you for further details about your feedback. Your email address won’t be used for any other purpose.</string>
|
||||
<string name="jwt_description">There is an issue with your registration details.</string>
|
||||
<string name="jwt_heading">Please register again</string>
|
||||
<string name="jwt_success">Registration successfully renewed</string>
|
||||
<string name="loading_numbers">Loading latest numbers</string>
|
||||
<!-- Splash Screen -->
|
||||
<string name="migration_in_progress"> COVIDSafe update in progress. \n\n Please make sure you phone is not switched off until the update is complete.</string>
|
||||
|
|
Loading…
Reference in a new issue