Commit 44f24ca
authored
RS comments fixes (#23118)
* Guard write/entry actions in the RS comments screens
A review of the wordpress-rs comments feature surfaced four defects sharing one
root cause: write and entry actions missing the in-flight / lifecycle guards the
like and reply paths already have.
- Detail: guard moderation against a double-tap that derives its target from the
optimistic status, which fired two racing writes and could desync UI vs server.
- Edit: on a load error keep the progress spinner up instead of flashing an empty
editable form (which also opened a save-clobber window).
- Edit: ignore back/discard while a save is in flight — the edit is already
dispatched and would land regardless.
- List: bail out of the first-page fetch when no site is selected so the site
getter can't throw while init races its async Finish.
* Suppress ReturnCount on moderateComment
The added in-flight guard gives moderateComment a third early return; suppress
ReturnCount to match the neighboring onLikeClicked / onReplyClicked handlers.
* Address review feedback on the RS comments guards
Follow-up to the write/entry-action guards, fixing gaps a reviewer found:
- List: move the no-selected-site guard from fetchFirstPage up to the initTab
and refreshTab entry points. The old placement let initTab register a
permanently-loading tab and let refreshTab reach clearPostTitles(site) — the
same requireNotNull crash — before the deeper guard ran.
- Edit: pressing back while a save is in flight now surfaces a "saving" message
instead of silently swallowing the press, so a stalled save no longer feels
frozen.
- Edit: a failed comment load now records a terminal state in the retained ui
state (rendered as an error, never the empty form) rather than delegating the
close to a one-shot snackbar/action event, which could be dropped on a null
context or an Activity recreation and strand the screen on a spinner.
* Tighten RS comments guards after self-review
- Add a test that a second moderation is allowed once the first completes,
covering the in-flight flag's finally reset (a stuck flag would otherwise
silently ignore all later moderations with green tests).
- Show the "saving" back-press message only once per in-flight save so
repeated presses don't queue a stack of identical snackbars.
- Fix a now-stale doc comment: only the comment-detail load-error holder
still relies on onDismissAction to close the screen.
* Guard the implicit approve-after-reply against racing moderations
approveAfterReply() called moderate(APPROVED) directly, bypassing the
isModerationInProgress guard, so an approve/spam/trash tapped during the
auto-approve's network call could fire a second, conflicting updateStatus and
desync the UI from the server. Hold the same guard across approveAfterReply's
moderate() call, and add a test that a moderation tapped during that window is
ignored.1 parent c3f35fb commit 44f24ca
8 files changed
Lines changed: 209 additions & 34 deletions
File tree
- WordPress/src
- main/java/org/wordpress/android/ui
- commentsrs
- comments/unified
- compose
- compose/utils
- test/java/org/wordpress/android/ui
- commentsrs
- comments/viewmodels
Lines changed: 44 additions & 23 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| 103 | + | |
103 | 104 | | |
104 | 105 | | |
105 | 106 | | |
| |||
283 | 284 | | |
284 | 285 | | |
285 | 286 | | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
296 | 305 | | |
| 306 | + | |
| 307 | + | |
297 | 308 | | |
298 | 309 | | |
299 | 310 | | |
| 311 | + | |
300 | 312 | | |
301 | 313 | | |
302 | 314 | | |
303 | 315 | | |
304 | 316 | | |
305 | 317 | | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
306 | 322 | | |
| 323 | + | |
307 | 324 | | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
321 | 340 | | |
| 341 | + | |
| 342 | + | |
322 | 343 | | |
323 | 344 | | |
324 | 345 | | |
| |||
Lines changed: 30 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
74 | 77 | | |
75 | 78 | | |
76 | 79 | | |
| |||
86 | 89 | | |
87 | 90 | | |
88 | 91 | | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
89 | 95 | | |
90 | 96 | | |
91 | 97 | | |
| |||
171 | 177 | | |
172 | 178 | | |
173 | 179 | | |
| 180 | + | |
174 | 181 | | |
175 | 182 | | |
176 | 183 | | |
| |||
183 | 190 | | |
184 | 191 | | |
185 | 192 | | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
186 | 204 | | |
187 | 205 | | |
188 | 206 | | |
| |||
216 | 234 | | |
217 | 235 | | |
218 | 236 | | |
| 237 | + | |
| 238 | + | |
219 | 239 | | |
220 | | - | |
221 | | - | |
222 | | - | |
223 | | - | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
224 | 250 | | |
225 | | - | |
226 | | - | |
227 | 251 | | |
228 | 252 | | |
229 | 253 | | |
| |||
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
108 | 116 | | |
109 | 117 | | |
110 | 118 | | |
| |||
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
216 | 216 | | |
217 | 217 | | |
218 | 218 | | |
| 219 | + | |
219 | 220 | | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
220 | 225 | | |
221 | 226 | | |
222 | 227 | | |
| |||
234 | 239 | | |
235 | 240 | | |
236 | 241 | | |
| 242 | + | |
237 | 243 | | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
238 | 247 | | |
239 | 248 | | |
240 | 249 | | |
| |||
467 | 476 | | |
468 | 477 | | |
469 | 478 | | |
| 479 | + | |
470 | 480 | | |
471 | 481 | | |
472 | 482 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| |||
Lines changed: 53 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
282 | 335 | | |
283 | 336 | | |
284 | 337 | | |
| |||
Lines changed: 46 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
| 13 | + | |
12 | 14 | | |
13 | 15 | | |
14 | 16 | | |
| |||
172 | 174 | | |
173 | 175 | | |
174 | 176 | | |
175 | | - | |
| 177 | + | |
176 | 178 | | |
177 | 179 | | |
178 | 180 | | |
179 | 181 | | |
180 | 182 | | |
181 | | - | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
182 | 190 | | |
183 | 191 | | |
184 | 192 | | |
185 | | - | |
| 193 | + | |
186 | 194 | | |
187 | 195 | | |
188 | 196 | | |
189 | 197 | | |
190 | | - | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
191 | 202 | | |
192 | 203 | | |
193 | 204 | | |
| |||
421 | 432 | | |
422 | 433 | | |
423 | 434 | | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
424 | 465 | | |
425 | 466 | | |
426 | 467 | | |
| |||
619 | 660 | | |
620 | 661 | | |
621 | 662 | | |
| 663 | + | |
622 | 664 | | |
623 | 665 | | |
624 | 666 | | |
| |||
0 commit comments