Move StateStore to its own file
This commit is contained in:
@@ -23,56 +23,7 @@ from aiohttp import web
|
||||
from functools import partial
|
||||
from contextlib import contextmanager
|
||||
from .intent_api import HTTPAPI
|
||||
|
||||
|
||||
class StateStore:
|
||||
def __init__(self):
|
||||
self.memberships = {}
|
||||
self.power_levels = {}
|
||||
|
||||
def _get_membership(self, room, user):
|
||||
return self.memberships.get(room, {}).get(user, "left")
|
||||
|
||||
def is_joined(self, room, user):
|
||||
return self._get_membership(room, user) == "join"
|
||||
|
||||
def _set_membership(self, room, user, membership):
|
||||
if room not in self.memberships:
|
||||
self.memberships[room] = {}
|
||||
self.memberships[room][user] = membership
|
||||
|
||||
def joined(self, room, user):
|
||||
return self._set_membership(room, user, "join")
|
||||
|
||||
def invited(self, room, user):
|
||||
return self._set_membership(room, user, "invite")
|
||||
|
||||
def left(self, room, user):
|
||||
return self._set_membership(room, user, "left")
|
||||
|
||||
def has_power_level_data(self, room):
|
||||
return room in self.power_levels
|
||||
|
||||
def has_power_level(self, room, user, event):
|
||||
room_levels = self.power_levels.get(room, {})
|
||||
required = room_levels["events"].get(event, 95)
|
||||
has = room_levels["users"].get(user, 0)
|
||||
return has >= required
|
||||
|
||||
def set_power_level(self, room, user, level):
|
||||
if not room in self.power_levels:
|
||||
self.power_levels[room] = {
|
||||
"users": {},
|
||||
"events": {},
|
||||
}
|
||||
self.power_levels[room]["users"][user] = level
|
||||
|
||||
def set_power_levels(self, room, content):
|
||||
if "events" not in content:
|
||||
content["events"] = {}
|
||||
if "users" not in content:
|
||||
content["users"] = {}
|
||||
self.power_levels[room] = content
|
||||
from .state_store import StateStore
|
||||
|
||||
|
||||
class AppService:
|
||||
|
||||
Reference in New Issue
Block a user