Skip to content

Commit ff9c822

Browse files
committed
fix: Revalidate profile from API (#1904)
1 parent b7ea75b commit ff9c822

File tree

3 files changed

+56
-22
lines changed

3 files changed

+56
-22
lines changed

app/src/main/java/org/fossasia/openevent/general/auth/AuthService.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ class AuthService(
7676
}
7777
}
7878

79+
fun updateProfile(id: Long = authHolder.getId()): Single<User> {
80+
return authApi.getProfile(id)
81+
.map {
82+
userDao.insertUser(it)
83+
it
84+
}
85+
}
86+
7987
fun sendResetPasswordEmail(email: String): Single<RequestTokenResponse> {
8088
val requestToken = RequestToken(Email(email))
8189
return authApi.requestToken(requestToken)

app/src/main/java/org/fossasia/openevent/general/auth/ProfileFragment.kt

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ class ProfileFragment : Fragment() {
7575
savedInstanceState: Bundle?
7676
): View? {
7777
rootView = inflater.inflate(R.layout.fragment_profile, container, false)
78-
if (profileViewModel.isLoggedIn())
78+
if (profileViewModel.isLoggedIn()) {
7979
profileViewModel.fetchProfile()
80+
profileViewModel.updateProfile()
81+
}
8082

8183
val progressDialog = progressDialog(context, getString(R.string.loading_message))
8284
profileViewModel.progress
@@ -95,31 +97,42 @@ class ProfileFragment : Fragment() {
9597
.nonNull()
9698
.observe(viewLifecycleOwner, Observer {
9799
user = it
98-
rootView.name.text = "${it.firstName.nullToEmpty()} ${it.lastName.nullToEmpty()}"
99-
rootView.email.text = it.email
100-
emailSettings = it.email
101-
rootView.verifiedTick.isVisible = it.isVerified
102-
rootView.resendEmailTextView.isVisible = !it.isVerified
103-
rootView.verifiedTextView.text =
104-
if (it.isVerified) getString(R.string.verified) else getString(R.string.not_verified)
105-
if (it.isVerified)
106-
rootView.verifiedTextView.setTextColor(
107-
resources.getColorStateList(android.R.color.holo_green_light)
108-
)
109-
110-
Picasso.get()
111-
.load(it.avatarUrl)
112-
.placeholder(requireDrawable(requireContext(), R.drawable.ic_account_circle_grey))
113-
.transform(CircleTransform())
114-
.into(rootView.avatar)
115-
116-
rootView.editProfileRL.setOnClickListener {
117-
findNavController(rootView).navigate(ProfileFragmentDirections.actionProfileToEditProfile())
118-
}
100+
updateProfile(it)
119101
})
102+
103+
profileViewModel.updatedUser
104+
.nonNull()
105+
.observe(viewLifecycleOwner, Observer {
106+
user = it
107+
updateProfile(it)
108+
})
109+
110+
rootView.editProfileRL.setOnClickListener {
111+
findNavController(rootView).navigate(ProfileFragmentDirections.actionProfileToEditProfile())
112+
}
120113
return rootView
121114
}
122115

116+
private fun updateProfile(it: User) {
117+
rootView.name.text = "${it.firstName.nullToEmpty()} ${it.lastName.nullToEmpty()}"
118+
rootView.email.text = it.email
119+
emailSettings = it.email
120+
rootView.verifiedTick.isVisible = it.isVerified
121+
rootView.resendEmailTextView.isVisible = !it.isVerified
122+
rootView.verifiedTextView.text =
123+
if (it.isVerified) getString(R.string.verified) else getString(R.string.not_verified)
124+
if (it.isVerified)
125+
rootView.verifiedTextView.setTextColor(
126+
resources.getColorStateList(android.R.color.holo_green_light)
127+
)
128+
129+
Picasso.get()
130+
.load(it.avatarUrl)
131+
.placeholder(requireDrawable(requireContext(), R.drawable.ic_account_circle_grey))
132+
.transform(CircleTransform())
133+
.into(rootView.avatar)
134+
}
135+
123136
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
124137
super.onViewCreated(view, savedInstanceState)
125138

app/src/main/java/org/fossasia/openevent/general/auth/ProfileViewModel.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ class ProfileViewModel(private val authService: AuthService, private val resourc
2121
val user: LiveData<User> = mutableUser
2222
private val mutableMessage = SingleLiveEvent<String>()
2323
val message: LiveData<String> = mutableMessage
24+
private val mutableUpdatedUser = MutableLiveData<User>()
25+
val updatedUser: LiveData<User> = mutableUpdatedUser
2426

2527
fun isLoggedIn() = authService.isLoggedIn()
2628

@@ -50,6 +52,17 @@ class ProfileViewModel(private val authService: AuthService, private val resourc
5052
}
5153
}
5254

55+
fun updateProfile() {
56+
compositeDisposable += authService.updateProfile()
57+
.withDefaultSchedulers()
58+
.subscribe({ user ->
59+
Timber.d("Response Success")
60+
this.mutableUpdatedUser.value = user
61+
}) {
62+
Timber.e(it, "Failure")
63+
}
64+
}
65+
5366
fun resendVerificationEmail(email: String) {
5467
compositeDisposable += authService.resendVerificationEmail(email)
5568
.withDefaultSchedulers()

0 commit comments

Comments
 (0)