From b38fbc6d9b8a2cebc22910c0d6030a691d9000c2 Mon Sep 17 00:00:00 2001 From: miruka Date: Fri, 30 Oct 2020 01:21:18 -0400 Subject: [PATCH] Fix filtered_members models updates --- src/backend/models/proxy.py | 3 ++- src/backend/presence.py | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/backend/models/proxy.py b/src/backend/models/proxy.py index 7511599f..e1da3d12 100644 --- a/src/backend/models/proxy.py +++ b/src/backend/models/proxy.py @@ -1,6 +1,7 @@ # Copyright Mirage authors & contributors # SPDX-License-Identifier: LGPL-3.0-or-later +from copy import copy from typing import TYPE_CHECKING, Any, Dict, Optional from . import SyncId @@ -40,7 +41,7 @@ class ModelProxy(Model): they should be converted to a same `ModelItem` subclass by overriding this function. """ - return item + return copy(item) def source_item_set( diff --git a/src/backend/presence.py b/src/backend/presence.py index 22d381ea..0f3b461e 100644 --- a/src/backend/presence.py +++ b/src/backend/presence.py @@ -11,9 +11,13 @@ if TYPE_CHECKING: from .models.items import Account, Member ORDER: Dict[str, int] = { - "online": 0, - "unavailable": 1, - "offline": 2, + "online": 0, + "echo_online": 1, + "unavailable": 2, + "echo_unavailable": 3, + "invisible": 4, + "echo_invisible": 5, + "offline": 6, } @@ -50,7 +54,6 @@ class Presence: cleared when client stops (`MatrixClient._start()`). """ - class State(AutoStrEnum): offline = auto() # can mean offline, invisible or unknwon unavailable = auto() @@ -64,7 +67,6 @@ class Presence: def __lt__(self, other: "Presence.State") -> bool: return ORDER[self.value] < ORDER[other.value] - presence: State = State.offline currently_active: bool = False last_active_at: datetime = datetime.fromtimestamp(0)