@@ -49,6 +49,7 @@ import com.keylesspalace.tusky.util.Error
49
49
import com.keylesspalace.tusky.util.Loading
50
50
import com.keylesspalace.tusky.util.Success
51
51
import com.keylesspalace.tusky.util.await
52
+ import com.keylesspalace.tusky.util.observe
52
53
import com.keylesspalace.tusky.util.show
53
54
import com.keylesspalace.tusky.util.viewBinding
54
55
import com.keylesspalace.tusky.viewmodel.EditProfileViewModel
@@ -152,85 +153,79 @@ class EditProfileActivity : BaseActivity(), Injectable {
152
153
153
154
viewModel.obtainProfile()
154
155
155
- lifecycleScope.launch {
156
- viewModel.profileData.collect { profileRes ->
157
- if (profileRes == null ) return @collect
158
- when (profileRes) {
159
- is Success -> {
160
- val me = profileRes.data
161
- if (me != null ) {
162
- binding.displayNameEditText.setText(me.displayName)
163
- binding.noteEditText.setText(me.source?.note)
164
- binding.lockedCheckBox.isChecked = me.locked
165
-
166
- accountFieldEditAdapter.setFields(me.source?.fields.orEmpty())
167
- binding.addFieldButton.isVisible =
168
- (me.source?.fields?.size ? : 0 ) < maxAccountFields
169
-
170
- if (viewModel.avatarData.value == null ) {
171
- Glide .with (this @EditProfileActivity)
172
- .load(me.avatar)
173
- .placeholder(R .drawable.avatar_default)
174
- .transform(
175
- FitCenter (),
176
- RoundedCorners (
177
- resources.getDimensionPixelSize(R .dimen.avatar_radius_80dp)
178
- )
156
+ viewModel.profileData.observe { profileRes ->
157
+ if (profileRes == null ) return @observe
158
+ when (profileRes) {
159
+ is Success -> {
160
+ val me = profileRes.data
161
+ if (me != null ) {
162
+ binding.displayNameEditText.setText(me.displayName)
163
+ binding.noteEditText.setText(me.source?.note)
164
+ binding.lockedCheckBox.isChecked = me.locked
165
+
166
+ accountFieldEditAdapter.setFields(me.source?.fields.orEmpty())
167
+ binding.addFieldButton.isVisible =
168
+ (me.source?.fields?.size ? : 0 ) < maxAccountFields
169
+
170
+ if (viewModel.avatarData.value == null ) {
171
+ Glide .with (this @EditProfileActivity)
172
+ .load(me.avatar)
173
+ .placeholder(R .drawable.avatar_default)
174
+ .transform(
175
+ FitCenter (),
176
+ RoundedCorners (
177
+ resources.getDimensionPixelSize(R .dimen.avatar_radius_80dp)
179
178
)
180
- .into(binding.avatarPreview )
181
- }
182
-
183
- if (viewModel.headerData.value == null ) {
184
- Glide . with ( this @EditProfileActivity)
185
- .load(me.header )
186
- .into(binding.headerPreview )
187
- }
179
+ )
180
+ .into(binding.avatarPreview)
181
+ }
182
+
183
+ if (viewModel.headerData.value == null ) {
184
+ Glide . with ( this @EditProfileActivity )
185
+ .load(me.header )
186
+ .into(binding.headerPreview)
188
187
}
189
188
}
190
- is Error -> {
191
- Snackbar .make(
192
- binding.avatarButton,
193
- R .string.error_generic,
194
- Snackbar .LENGTH_LONG
195
- )
196
- .setAction(R .string.action_retry) {
197
- viewModel.obtainProfile()
198
- }
199
- .show()
200
- }
201
- is Loading -> { }
202
189
}
190
+ is Error -> {
191
+ Snackbar .make(
192
+ binding.avatarButton,
193
+ R .string.error_generic,
194
+ Snackbar .LENGTH_LONG
195
+ )
196
+ .setAction(R .string.action_retry) {
197
+ viewModel.obtainProfile()
198
+ }
199
+ .show()
200
+ }
201
+ is Loading -> { }
203
202
}
204
203
}
205
204
206
- lifecycleScope.launch {
207
- viewModel.instanceData.collect { instanceInfo ->
208
- maxAccountFields = instanceInfo.maxFields
209
- accountFieldEditAdapter.setFieldLimits(
210
- instanceInfo.maxFieldNameLength,
211
- instanceInfo.maxFieldValueLength
212
- )
213
- binding.addFieldButton.isVisible =
214
- accountFieldEditAdapter.itemCount < maxAccountFields
215
- }
205
+ viewModel.instanceData.observe { instanceInfo ->
206
+ maxAccountFields = instanceInfo.maxFields
207
+ accountFieldEditAdapter.setFieldLimits(
208
+ instanceInfo.maxFieldNameLength,
209
+ instanceInfo.maxFieldValueLength
210
+ )
211
+ binding.addFieldButton.isVisible =
212
+ accountFieldEditAdapter.itemCount < maxAccountFields
216
213
}
217
214
218
215
observeImage(viewModel.avatarData, binding.avatarPreview, true )
219
216
observeImage(viewModel.headerData, binding.headerPreview, false )
220
217
221
- lifecycleScope.launch {
222
- viewModel.saveData.collect {
223
- if (it == null ) return @collect
224
- when (it) {
225
- is Success -> {
226
- finish()
227
- }
228
- is Loading -> {
229
- binding.saveProgressBar.visibility = View .VISIBLE
230
- }
231
- is Error -> {
232
- onSaveFailure(it.errorMessage)
233
- }
218
+ viewModel.saveData.observe {
219
+ if (it == null ) return @observe
220
+ when (it) {
221
+ is Success -> {
222
+ finish()
223
+ }
224
+ is Loading -> {
225
+ binding.saveProgressBar.visibility = View .VISIBLE
226
+ }
227
+ is Error -> {
228
+ onSaveFailure(it.errorMessage)
234
229
}
235
230
}
236
231
}
@@ -258,10 +253,8 @@ class EditProfileActivity : BaseActivity(), Injectable {
258
253
}
259
254
260
255
onBackPressedDispatcher.addCallback(this , onBackCallback)
261
- lifecycleScope.launch {
262
- viewModel.isChanged.collect { dataWasChanged ->
263
- onBackCallback.isEnabled = dataWasChanged
264
- }
256
+ viewModel.isChanged.observe { dataWasChanged ->
257
+ onBackCallback.isEnabled = dataWasChanged
265
258
}
266
259
}
267
260
@@ -277,26 +270,23 @@ class EditProfileActivity : BaseActivity(), Injectable {
277
270
imageView : ImageView ,
278
271
roundedCorners : Boolean
279
272
) {
280
- lifecycleScope.launch {
281
- flow.collect { imageUri ->
282
-
283
- // skipping all caches so we can always reuse the same uri
284
- val glide = Glide .with (imageView)
285
- .load(imageUri)
286
- .skipMemoryCache(true )
287
- .diskCacheStrategy(DiskCacheStrategy .NONE )
288
-
289
- if (roundedCorners) {
290
- glide.transform(
291
- FitCenter (),
292
- RoundedCorners (resources.getDimensionPixelSize(R .dimen.avatar_radius_80dp))
293
- ).into(imageView)
294
- } else {
295
- glide.into(imageView)
296
- }
297
-
298
- imageView.show()
273
+ flow.observe { imageUri ->
274
+ // skipping all caches so we can always reuse the same uri
275
+ val glide = Glide .with (imageView)
276
+ .load(imageUri)
277
+ .skipMemoryCache(true )
278
+ .diskCacheStrategy(DiskCacheStrategy .NONE )
279
+
280
+ if (roundedCorners) {
281
+ glide.transform(
282
+ FitCenter (),
283
+ RoundedCorners (resources.getDimensionPixelSize(R .dimen.avatar_radius_80dp))
284
+ ).into(imageView)
285
+ } else {
286
+ glide.into(imageView)
299
287
}
288
+
289
+ imageView.show()
300
290
}
301
291
}
302
292
0 commit comments