diff --git a/src/backend/models/items.py b/src/backend/models/items.py index 08177971..8896bc47 100644 --- a/src/backend/models/items.py +++ b/src/backend/models/items.py @@ -168,7 +168,6 @@ class Event(ModelItem): id: str = field() event_id: str = field() event_type: Type[nio.Event] = field() - source: Optional[nio.Event] = field() date: datetime = field() sender_id: str = field() sender_name: str = field() @@ -185,8 +184,8 @@ class Event(ModelItem): target_name: str = "" target_avatar: str = "" - is_local_echo: bool = False - local_event_type: Optional[Type[nio.Event]] = None + is_local_echo: bool = False + source: Optional[nio.Event] = None media_url: str = "" media_title: str = "" @@ -216,11 +215,11 @@ class Event(ModelItem): return [link[2] for link in lxml.html.iterlinks(text)] - @property - def serialized(self) -> Dict[str, Any]: - dct = super().serialized - dct["source"] = dct["source"].__dict__ - return dct + def serialize_field(self, field: str) -> Any: + if field == "source": + return self.source.__dict__ if self.source else {} + + return super().serialize_field(field) @dataclass diff --git a/src/backend/models/model_item.py b/src/backend/models/model_item.py index 7d44780c..6105fe12 100644 --- a/src/backend/models/model_item.py +++ b/src/backend/models/model_item.py @@ -43,7 +43,11 @@ class ModelItem: new_index = self.parent_model._sorted_data.index(self) ModelItemFieldChanged( - self.parent_model.sync_id, old_index, new_index, name, value, + self.parent_model.sync_id, + old_index, + new_index, + name, + self.serialize_field(name), ) @@ -51,13 +55,16 @@ class ModelItem: raise NotImplementedError() + def serialize_field(self, field: str) -> Any: + return serialize_value_for_qml(getattr(self, field), json_lists=True) + + @property def serialized(self) -> Dict[str, Any]: """Return this item as a dict ready to be passed to QML.""" return { - name: serialize_value_for_qml(getattr(self, name), json_lists=True) - for name in dir(self) + name: self.serialize_field(name) for name in dir(self) if not ( name.startswith("_") or name in ("parent_model", "serialized") ) diff --git a/src/gui/PythonBridge/Privates/EventHandlers.qml b/src/gui/PythonBridge/Privates/EventHandlers.qml index 3bc041a1..3e3ce09e 100644 --- a/src/gui/PythonBridge/Privates/EventHandlers.qml +++ b/src/gui/PythonBridge/Privates/EventHandlers.qml @@ -83,7 +83,7 @@ QtObject { function onModelItemFieldChanged(syncId, oldIndex, newIndex, field, value){ - // print("change", syncId, oldIndex, newIndex, field, value) + print("change", syncId, oldIndex, newIndex, field, value) const model = ModelStore.get(syncId) model.setProperty(oldIndex, field, value)