Merge pull request #5403 from pangeachat/5401-can-change-vocab-emoji-options

fix: prevent out-of-date lemma loading futures from overriding new fu…
This commit is contained in:
ggurdin 2026-01-23 12:52:36 -05:00 committed by GitHub
commit 49c0485cdd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -36,6 +36,8 @@ class LemmaMeaningBuilderState extends State<LemmaMeaningBuilder> {
final ValueNotifier<AsyncState<LemmaInfoResponse>> _loader =
ValueNotifier(const AsyncState.idle());
int _loadVersion = 0;
@override
void initState() {
super.initState();
@ -75,16 +77,20 @@ class LemmaMeaningBuilderState extends State<LemmaMeaningBuilder> {
);
Future<void> _load() async {
final int version = ++_loadVersion;
_loader.value = const AsyncState.loading();
final result = await LemmaInfoRepo.get(
MatrixState.pangeaController.userController.accessToken,
_request,
);
if (!mounted) return;
result.isError
? _loader.value = AsyncState.error(result.asError!.error)
: _loader.value = AsyncState.loaded(result.asValue!.value);
// Ignore if a newer load started after this one
if (!mounted || version != _loadVersion) return;
_loader.value = result.isError
? AsyncState.error(result.asError!.error)
: AsyncState.loaded(result.asValue!.value);
}
@override