11import 'package:json_annotation/json_annotation.dart' ;
2+ import 'package:flutter/foundation.dart' ;
23
34import 'events.dart' ;
45import 'initial_snapshot.dart' ;
@@ -541,8 +542,15 @@ sealed class Message {
541542 final String contentType;
542543
543544 // final List<MessageEditHistory> editHistory; // TODO handle
544- @JsonKey (readValue: MessageEditState ._readFromMessage, fromJson: Message ._messageEditStateFromJson)
545- MessageEditState editState;
545+ @JsonKey (readValue: MessageEditState ._readFromMessage, fromJson: _messageEditStateFromJson)
546+ final ValueNotifier <MessageEditState > _editStateNotifier;
547+
548+ MessageEditState get editState => _editStateNotifier.value;
549+ set editState (MessageEditState value) {
550+ _editStateNotifier.value = value;
551+ }
552+
553+ ValueNotifier <MessageEditState > get editStateNotifier => _editStateNotifier;
546554
547555 final int id;
548556 bool isMeMessage;
@@ -572,7 +580,7 @@ sealed class Message {
572580 @JsonKey (name: 'match_subject' )
573581 final String ? matchTopic;
574582
575- static MessageEditState _messageEditStateFromJson (Object ? json) {
583+ static MessageEditState _messageEditStateFromJson (dynamic json) {
576584 // This is a no-op so that [MessageEditState._readFromMessage]
577585 // can return the enum value directly.
578586 return json as MessageEditState ;
@@ -603,7 +611,7 @@ sealed class Message {
603611 required this .client,
604612 required this .content,
605613 required this .contentType,
606- required this . editState,
614+ required MessageEditState editState,
607615 required this .id,
608616 required this .isMeMessage,
609617 required this .lastEditTimestamp,
@@ -617,7 +625,7 @@ sealed class Message {
617625 required this .flags,
618626 required this .matchContent,
619627 required this .matchTopic,
620- });
628+ }) : _editStateNotifier = ValueNotifier (editState) ;
621629
622630 factory Message .fromJson (Map <String , dynamic > json) {
623631 final type = json['type' ] as String ;
@@ -863,7 +871,9 @@ class DmMessage extends Message {
863871enum MessageEditState {
864872 none,
865873 edited,
866- moved;
874+ moved,
875+ editing,
876+ editError;
867877
868878 /// Whether the given topic move reflected either a "resolve topic"
869879 /// or "unresolve topic" operation.
0 commit comments