diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/LoginFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/LoginFragment.kt index 4a0e3147d..94d2b38d5 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/LoginFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/LoginFragment.kt @@ -52,7 +52,7 @@ class LoginFragment : Fragment() { private lateinit var binding: AssistantLoginFragmentBinding private val viewModel: AccountLoginViewModel by navGraphViewModels( - R.id.loginFragment + R.id.assistant_nav_graph ) override fun onCreateView( diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt index 85027d961..477b4db87 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt @@ -47,7 +47,7 @@ class QrCodeScannerFragment : Fragment() { private lateinit var binding: AssistantQrCodeScannerFragmentBinding private val viewModel: QrCodeViewModel by navGraphViewModels( - R.id.qrCodeScannerFragment + R.id.assistant_nav_graph ) private val requestPermissionLauncher = registerForActivityResult( @@ -84,11 +84,13 @@ class QrCodeScannerFragment : Fragment() { viewModel.qrCodeFoundEvent.observe(viewLifecycleOwner) { it.consume { isValid -> if (isValid) { + // TODO FIXME: show translated string (requireActivity() as AssistantActivity).showGreenToast( "QR code validated!", R.drawable.check_fat_fill ) } else { + // TODO FIXME: show translated string (requireActivity() as AssistantActivity).showRedToast( "Invalid QR code!", R.drawable.warning_circle diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterCodeConfirmationFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterCodeConfirmationFragment.kt index f09bff8b1..a77590d25 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterCodeConfirmationFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterCodeConfirmationFragment.kt @@ -43,7 +43,7 @@ class RegisterCodeConfirmationFragment : Fragment() { private lateinit var binding: AssistantRegisterConfirmSmsCodeFragmentBinding private val viewModel: AccountCreationViewModel by navGraphViewModels( - R.id.registerCodeConfirmationFragment + R.id.assistant_nav_graph ) override fun onCreateView( diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterFragment.kt index 2cb98025a..df959632f 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/RegisterFragment.kt @@ -52,7 +52,7 @@ class RegisterFragment : Fragment() { private lateinit var binding: AssistantRegisterFragmentBinding private val viewModel: AccountCreationViewModel by navGraphViewModels( - R.id.registerFragment + R.id.assistant_nav_graph ) override fun onCreateView( diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/ThirdPartySipAccountLoginFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/ThirdPartySipAccountLoginFragment.kt index 49a5ede46..4541a6525 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/ThirdPartySipAccountLoginFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/ThirdPartySipAccountLoginFragment.kt @@ -49,7 +49,7 @@ class ThirdPartySipAccountLoginFragment : Fragment() { private lateinit var binding: AssistantThirdPartySipAccountLoginFragmentBinding private val viewModel: ThirdPartySipAccountLoginViewModel by navGraphViewModels( - R.id.thirdPartySipAccountLoginFragment + R.id.assistant_nav_graph ) private val dropdownListener = object : AdapterView.OnItemSelectedListener { diff --git a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountCreationViewModel.kt b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountCreationViewModel.kt index 794794aa0..f2da59699 100644 --- a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountCreationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountCreationViewModel.kt @@ -64,6 +64,8 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic val createEnabled = MediatorLiveData() + val confirmationMessage = MutableLiveData() + val smsCodeFirstDigit = MutableLiveData() val smsCodeSecondDigit = MutableLiveData() val smsCodeThirdDigit = MutableLiveData() @@ -95,6 +97,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic AccountCreator.Status.AccountExist, AccountCreator.Status.AccountExistWithAlias -> { operationInProgress.postValue(false) createEnabled.postValue(false) + // TODO FIXME: use translated string usernameError.postValue("Account already exists") } AccountCreator.Status.AccountNotExist -> { @@ -102,8 +105,10 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic checkPhoneNumber() } else -> { + Log.e("$TAG An unexpected error occurred!") operationInProgress.postValue(false) createEnabled.postValue(false) + // TODO FIXME: use translated string phoneNumberError.postValue(status.name) } } @@ -120,6 +125,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic AccountCreator.Status.AliasExist, AccountCreator.Status.AliasIsAccount -> { operationInProgress.postValue(false) createEnabled.postValue(false) + // TODO FIXME: use translated string phoneNumberError.postValue("Phone number already used") } AccountCreator.Status.AliasNotExist -> { @@ -127,8 +133,10 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic createAccount() } else -> { + Log.e("$TAG An unexpected error occurred!") operationInProgress.postValue(false) createEnabled.postValue(false) + // TODO FIXME: use translated string phoneNumberError.postValue(status.name) } } @@ -149,7 +157,8 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic goToSmsCodeConfirmationViewEvent.postValue(Event(true)) } else -> { - // TODO + Log.e("$TAG Account couldn't be created, an unexpected error occurred!") + // TODO: show error message to user } } } @@ -167,7 +176,8 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic Log.i("$TAG Account has been successfully activated, going to login page") goToLoginPageEvent.postValue(Event(true)) } else { - // TODO + Log.e("$TAG Account couldn't be activated, an unexpected error occurred!") + // TODO: show error message to user } } } @@ -273,20 +283,42 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic prefix } val number = phoneNumber.value.orEmpty().trim() - accountCreator.setPhoneNumber(number, digitsPrefix) - val normalizedPhoneNumber = accountCreator.phoneNumber - if (!normalizedPhoneNumber.isNullOrEmpty()) { - normalizedPhoneNumberEvent.postValue(Event(normalizedPhoneNumber)) + val status = accountCreator.setPhoneNumber(number, digitsPrefix) + if (status == AccountCreator.PhoneNumberStatus.Ok.toInt()) { + val normalizedPhoneNumber = accountCreator.phoneNumber + + // TODO FIXME: use translated string + val message = "We have sent a verification code on your phone number “$normalizedPhoneNumber”.\n\nPlease enter the verification code below:" + confirmationMessage.postValue(message) + + Log.i( + "$TAG Normalized phone number from [$number] and prefix [$digitsPrefix] is [$normalizedPhoneNumber]" + ) + if (!normalizedPhoneNumber.isNullOrEmpty()) { + normalizedPhoneNumberEvent.postValue(Event(normalizedPhoneNumber)) + } else { + Log.e( + "$TAG Failed to compute phone number using international prefix [$digitsPrefix] and number [$number]" + ) + operationInProgress.postValue(false) + // TODO FIXME: use translated string + phoneNumberError.postValue( + "Wrong international prefix / local phone number" + ) + } } else { Log.e( - "$TAG Failed to compute phone number using international prefix [$digitsPrefix] and number [$number]" + "$TAG Failed to set phone number [$number] and prefix [$digitsPrefix] into account creator!" + ) + // TODO FIXME: use translated string + phoneNumberError.postValue( + "Failed to configure phone number and prefix in account creator!" ) - operationInProgress.postValue(false) - phoneNumberError.postValue("Wrong international prefix / local phone number") } } else { Log.e("$TAG Account creator hasn't been initialized!") + // TODO: show error message to user } } } @@ -330,6 +362,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic if (status != AccountCreator.Status.RequestOk) { Log.e("$TAG Can't activate account [$status]") operationInProgress.postValue(false) + // TODO: show error message to user } } } @@ -347,6 +380,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic if (status != AccountCreator.Status.RequestOk) { Log.e("$TAG Can't check if account already exists [$status]") operationInProgress.postValue(false) + // TODO: show error message to user } } @@ -359,6 +393,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic if (status != AccountCreator.Status.RequestOk) { Log.e("$TAG Can't check if phone number is already used [$status]") operationInProgress.postValue(false) + // TODO: show error message to user } } @@ -373,6 +408,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic if (status != AccountCreator.Status.RequestOk) { Log.e("$TAG Can't create account [$status]") operationInProgress.postValue(false) + // TODO: show error message to user } else { Log.i("$TAG createAccount consumed our token, setting it to null") accountCreator.token = null @@ -434,5 +470,6 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic private fun onFlexiApiTokenRequestError() { Log.e("$TAG Flexi API token request by push error!") operationInProgress.postValue(false) + // TODO: show error message to user } } diff --git a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt index 7cc023045..5ae50726e 100644 --- a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt +++ b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt @@ -82,6 +82,7 @@ class AccountLoginViewModel @UiThread constructor() : ViewModel() { } else if (state == RegistrationState.Failed) { registrationInProgress.postValue(false) core.removeListener(this) + // TODO: show translated string accountLoginErrorEvent.postValue(Event(message)) Log.e("$TAG Account failed to REGISTER, removing it") diff --git a/app/src/main/java/org/linphone/ui/assistant/viewmodel/ThirdPartySipAccountLoginViewModel.kt b/app/src/main/java/org/linphone/ui/assistant/viewmodel/ThirdPartySipAccountLoginViewModel.kt index a5fb793af..fe4a276c0 100644 --- a/app/src/main/java/org/linphone/ui/assistant/viewmodel/ThirdPartySipAccountLoginViewModel.kt +++ b/app/src/main/java/org/linphone/ui/assistant/viewmodel/ThirdPartySipAccountLoginViewModel.kt @@ -93,6 +93,7 @@ class ThirdPartySipAccountLoginViewModel @UiThread constructor() : ViewModel() { } else if (state == RegistrationState.Failed) { registrationInProgress.postValue(false) core.removeListener(this) + // TODO: show translated string accountLoginErrorEvent.postValue(Event(message)) Log.e("$TAG Account failed to REGISTER, removing it") diff --git a/app/src/main/java/org/linphone/ui/main/calls/fragment/CallFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallFragment.kt index 3586967fd..66864dda3 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/fragment/CallFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallFragment.kt @@ -118,6 +118,7 @@ class CallFragment : GenericFragment() { it.consume { sharedViewModel.forceRefreshCallLogsListEvent.value = Event(true) + // TODO FIXME: show translated string (requireActivity() as MainActivity).showGreenToast( "Historique supprimé", R.drawable.check_fat_fill @@ -132,6 +133,7 @@ class CallFragment : GenericFragment() { val label = "SIP address" clipboard.setPrimaryClip(ClipData.newPlainText(label, value)) + // TODO FIXME: show translated string (requireActivity() as MainActivity).showGreenToast( "Numéro copié dans le presse-papier", R.drawable.check_fat_fill diff --git a/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListFragment.kt index ed2ab7d17..922429575 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListFragment.kt @@ -158,6 +158,7 @@ class CallsListFragment : GenericFragment() { listViewModel.historyDeletedEvent.observe(viewLifecycleOwner) { it.consume { + // TODO FIXME: show translated string (requireActivity() as MainActivity).showGreenToast( "Historique supprimé", R.drawable.check_fat_fill @@ -227,6 +228,7 @@ class CallsListFragment : GenericFragment() { val label = "SIP address" clipboard.setPrimaryClip(ClipData.newPlainText(label, value)) + // TODO FIXME: show translated string (requireActivity() as MainActivity).showGreenToast( "Numéro copié dans le presse-papier", R.drawable.check_fat_fill diff --git a/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt index 88d799e29..f2bb2ff91 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt @@ -58,11 +58,11 @@ class StartCallFragment : GenericFragment() { private lateinit var binding: CallStartFragmentBinding private val viewModel: StartCallViewModel by navGraphViewModels( - R.id.startCallFragment + R.id.voip_nav_graph ) private val contactsListViewModel: ContactsListViewModel by navGraphViewModels( - R.id.startCallFragment + R.id.voip_nav_graph ) private lateinit var contactsAdapter: ContactsListAdapter diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt index a19f4dbe3..fcf23746e 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt @@ -212,6 +212,7 @@ class ContactFragment : GenericFragment() { val label = if (isSip) "SIP address" else "Phone number" clipboard.setPrimaryClip(ClipData.newPlainText(label, value)) + // TODO FIXME: show translated string (requireActivity() as MainActivity).showGreenToast( "Numéro copié dans le presse-papier", R.drawable.check_fat_fill diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt index 55fe45d0b..3248b2158 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt @@ -56,7 +56,7 @@ class EditContactFragment : GenericFragment() { private lateinit var binding: ContactNewOrEditFragmentBinding private val viewModel: ContactNewOrEditViewModel by navGraphViewModels( - R.id.editContactFragment + R.id.main_nav_graph ) private val args: EditContactFragmentArgs by navArgs() diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt index 62019e1cc..0462aa459 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt @@ -57,7 +57,7 @@ class NewContactFragment : GenericFragment() { private lateinit var binding: ContactNewOrEditFragmentBinding private val viewModel: ContactNewOrEditViewModel by navGraphViewModels( - R.id.newContactFragment + R.id.main_nav_graph ) private val backPressedCallback = object : OnBackPressedCallback(true) { diff --git a/app/src/main/java/org/linphone/ui/main/conversations/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/conversations/ConversationFragment.kt index a9884656d..b50b525cb 100644 --- a/app/src/main/java/org/linphone/ui/main/conversations/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/conversations/ConversationFragment.kt @@ -35,7 +35,7 @@ import org.linphone.ui.main.conversations.viewmodel.ConversationViewModel class ConversationFragment : Fragment() { private lateinit var binding: ConversationFragmentBinding private val viewModel: ConversationViewModel by navGraphViewModels( - R.id.conversationFragment + R.id.main_nav_graph ) private lateinit var adapter: ChatEventLogsListAdapter diff --git a/app/src/main/java/org/linphone/ui/main/conversations/ConversationsFragment.kt b/app/src/main/java/org/linphone/ui/main/conversations/ConversationsFragment.kt index 51bcb6abd..d7b2b7938 100644 --- a/app/src/main/java/org/linphone/ui/main/conversations/ConversationsFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/conversations/ConversationsFragment.kt @@ -41,7 +41,7 @@ import org.linphone.ui.main.conversations.viewmodel.ConversationsListViewModel class ConversationsFragment : Fragment() { private lateinit var binding: ConversationsFragmentBinding private val listViewModel: ConversationsListViewModel by navGraphViewModels( - R.id.conversationsFragment + R.id.main_nav_graph ) private lateinit var adapter: ConversationsListAdapter diff --git a/app/src/main/java/org/linphone/ui/main/conversations/NewConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/conversations/NewConversationFragment.kt index 84bddfdf6..16bd5166d 100644 --- a/app/src/main/java/org/linphone/ui/main/conversations/NewConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/conversations/NewConversationFragment.kt @@ -40,7 +40,7 @@ class NewConversationFragment : Fragment() { private lateinit var binding: ConversationStartFragmentBinding private lateinit var adapter: ContactsSelectionAdapter private val viewModel: NewConversationViewModel by navGraphViewModels( - R.id.conversationsFragment + R.id.main_nav_graph ) override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? { diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt index 559108d9f..7c152ec28 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt @@ -30,7 +30,7 @@ class AccountProfileFragment : GenericFragment() { private lateinit var binding: AccountProfileFragmentBinding private val viewModel: AccountProfileViewModel by navGraphViewModels( - R.id.accountProfileFragment + R.id.main_nav_graph ) private val args: AccountProfileFragmentArgs by navArgs() diff --git a/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt index 8a755406c..93f9e7d5c 100644 --- a/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt +++ b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt @@ -136,9 +136,11 @@ class VoipActivity : AppCompatActivity() { callsViewModel.showLowSignalEvent.observe(this) { it.consume { show -> if (show) { + // TODO FIXME: show translated string showRedToast("Low Wi-Fi signal!", R.drawable.wifi_low) } else { hideRedToast() + // TODO FIXME: show translated string showGreenToast("Wi-Fi signal no longer low", R.drawable.wifi_high) } } diff --git a/app/src/main/res/layout-land/calls_list_fragment.xml b/app/src/main/res/layout-land/calls_list_fragment.xml index d7e46060a..520f84902 100644 --- a/app/src/main/res/layout-land/calls_list_fragment.xml +++ b/app/src/main/res/layout-land/calls_list_fragment.xml @@ -120,7 +120,7 @@ android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="16dp" - android:src="@drawable/plus_circle" + android:src="@drawable/phone_plus" app:tint="@color/gray_8" app:backgroundTint="@color/white" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/assistant_register_confirm_sms_code_fragment.xml b/app/src/main/res/layout/assistant_register_confirm_sms_code_fragment.xml index 713ea9513..2b8c91094 100644 --- a/app/src/main/res/layout/assistant_register_confirm_sms_code_fragment.xml +++ b/app/src/main/res/layout/assistant_register_confirm_sms_code_fragment.xml @@ -14,181 +14,191 @@ type="org.linphone.ui.assistant.viewmodel.AccountCreationViewModel" /> - - + - + - + - + - + - + - + - + - + - + - + + + + + + + \ No newline at end of file