Skip to content
This repository was archived by the owner on Jan 7, 2025. It is now read-only.

Commit a1ee773

Browse files
committed
added verification email resending
(needs checking on a real email, just in case)
1 parent db1a2be commit a1ee773

File tree

5 files changed

+60
-1
lines changed

5 files changed

+60
-1
lines changed

app/src/main/java/com/fictadvisor/android/ui/ContinueRegistrationFragment.kt

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import androidx.navigation.Navigation
1212
import com.fictadvisor.android.data.dto.*
1313
import com.fictadvisor.android.databinding.FragmentContinueRegistrationBinding
1414
import com.fictadvisor.android.repository.AuthRepository
15+
import com.fictadvisor.android.utils.StorageUtil
1516
import com.fictadvisor.android.validator.RegistrationInputValidator
1617
import com.fictadvisor.android.viewmodel.AuthViewModel
1718
import com.fictadvisor.android.viewmodel.AuthViewModelFactory
@@ -25,6 +26,7 @@ class ContinueRegistrationFragment : Fragment() {
2526
private lateinit var authViewModel: AuthViewModel
2627
private val authRepository = AuthRepository()
2728
private lateinit var inputValidator: RegistrationInputValidator
29+
private lateinit var storageUtil: StorageUtil
2830

2931

3032
override fun onCreateView(
@@ -36,6 +38,8 @@ class ContinueRegistrationFragment : Fragment() {
3638

3739
inputValidator = RegistrationInputValidator(requireContext())
3840

41+
storageUtil = StorageUtil(requireActivity())
42+
3943
authViewModel = ViewModelProvider(
4044
this,
4145
AuthViewModelFactory(authRepository)
@@ -188,6 +192,7 @@ class ContinueRegistrationFragment : Fragment() {
188192
when (registerResponse) {
189193
is BaseResponse.Success -> {
190194
showSuccessLog("Реєстрація успішна")
195+
storageUtil.setEmail(binding.editTextTextEmail.text.toString())
191196
val action = ContinueRegistrationFragmentDirections.actionContinueRegistrationFragmentToVerifyEmailFragment()
192197
Navigation.findNavController(requireView()).navigate(action)
193198
}

app/src/main/java/com/fictadvisor/android/ui/VerifyEmailFragment.kt

+32-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class VerifyEmailFragment : Fragment() {
3939
binding = FragmentVerifyEmailBinding.inflate(inflater, container, false)
4040
val view = binding.root
4141

42-
storageUtil = StorageUtil(requireContext())
42+
storageUtil = StorageUtil(requireActivity())
4343

4444
authViewModel = ViewModelProvider(
4545
this,
@@ -53,9 +53,18 @@ class VerifyEmailFragment : Fragment() {
5353
sendEmailVerificationRequest(token)
5454
}
5555

56+
setResendButtonOnClickListener()
57+
5658
return view
5759
}
5860

61+
private fun setResendButtonOnClickListener() {
62+
binding.resendEmailButton.setOnClickListener {
63+
val email = storageUtil.getEmail()!!
64+
resendEmailVerificationRequest(email)
65+
}
66+
}
67+
5968
private fun sendEmailVerificationRequest(token: String) {
6069
CoroutineScope(Dispatchers.IO).launch {
6170
authViewModel.verifyEmailToken(token)
@@ -68,6 +77,28 @@ class VerifyEmailFragment : Fragment() {
6877
}
6978
}
7079

80+
private fun resendEmailVerificationRequest(email: String) {
81+
CoroutineScope(Dispatchers.IO).launch {
82+
authViewModel.verifyEmail(email)
83+
}
84+
85+
authViewModel.authVerifyEmailResponse.observe(viewLifecycleOwner) { response ->
86+
response?.let {
87+
when (response) {
88+
is BaseResponse.Success -> {
89+
binding.messageTV.text = "Повторний запит на підтвердження email відправлено на адресу $email"
90+
}
91+
92+
is BaseResponse.Error -> {
93+
binding.messageTV.text = "Помилка при повторному відправленні email: ${response.error?.message}"
94+
}
95+
96+
is BaseResponse.Loading -> {}
97+
}
98+
}
99+
}
100+
}
101+
71102
private fun handleVerificationEmailResponse(response: BaseResponse<AuthLoginResponse>) {
72103
when (response) {
73104
is BaseResponse.Success -> {

app/src/main/java/com/fictadvisor/android/utils/StorageKeys.kt

+1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ enum class StorageKeys {
44
ACCESS_TOKEN,
55
REFRESH_TOKEN,
66
TELEGRAM_INFO,
7+
EMAIL
78
}

app/src/main/java/com/fictadvisor/android/utils/StorageUtil.kt

+12
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,16 @@ class StorageUtil(private val context: Context) {
6767
null
6868
}
6969
}
70+
71+
fun setEmail(email: String) {
72+
context.getSharedPreferences(prefName, Context.MODE_PRIVATE).edit().apply {
73+
putString(StorageKeys.EMAIL.name, email)
74+
apply()
75+
}
76+
}
77+
78+
fun getEmail(): String? {
79+
val prefs = context.getSharedPreferences(prefName, Context.MODE_PRIVATE)
80+
return prefs.getString(StorageKeys.EMAIL.name, null)
81+
}
7082
}

app/src/main/res/layout/fragment_verify_email.xml

+10
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,14 @@
1818
app:layout_constraintStart_toStartOf="parent"
1919
app:layout_constraintTop_toTopOf="parent" />
2020

21+
<Button
22+
android:id="@+id/resendEmailButton"
23+
android:layout_width="wrap_content"
24+
android:layout_height="wrap_content"
25+
android:layout_marginTop="50dp"
26+
android:text="Відправити знову"
27+
app:layout_constraintEnd_toEndOf="parent"
28+
app:layout_constraintStart_toStartOf="parent"
29+
app:layout_constraintTop_toBottomOf="@+id/messageTV" />
30+
2131
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)