Store member presence information

This commit is contained in:
miruka
2020-06-01 21:00:22 -04:00
parent e91a1f93e0
commit 50e17e950d
4 changed files with 46 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ from typing import Any, Dict, List, Optional, Tuple, Type, Union
from uuid import UUID
import lxml # nosec
import nio
from ..utils import AutoStrEnum, auto
@@ -28,6 +29,12 @@ class TypeSpecifier(AutoStrEnum):
MembershipChange = auto()
class Presence(AutoStrEnum):
Offline = auto() # can mean offline, invisible or unknwon
Unavailable = auto()
Online = auto()
@dataclass
class Account(ModelItem):
"""A logged in matrix account."""
@@ -172,9 +179,16 @@ class Member(ModelItem):
power_level: int = 0
invited: bool = False
profile_updated: datetime = ZeroDate
last_read_event: str = ""
last_read_at: datetime = ZeroDate
last_active_ago: int = -1
currently_active: bool = False
presence: Presence = Presence.Offline
status_message: str = ""
def __lt__(self, other: "Member") -> bool:
"""Sort by power level, then by display name/user ID."""