feat!: MeRoleを削除

pull/109/head
yupix 7 months ago
parent bfce899e36
commit a4c878c83c
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -3,12 +3,11 @@ from __future__ import annotations
from typing import TYPE_CHECKING, AsyncGenerator
from mipac.abstract.action import AbstractAction
from mipac.config import config
from mipac.http import HTTPClient, Route
from mipac.models.note import Note
from mipac.models.roles import MeRole, Role, RoleUser
from mipac.models.roles import Role, RoleUser
from mipac.types.note import INote
from mipac.types.roles import IMeRole, IRole, IRoleUser, is_me_role
from mipac.types.roles import IRole, IRoleUser
from mipac.utils.pagination import Pagination
if TYPE_CHECKING:
@ -64,7 +63,7 @@ class RoleActions(AbstractAction):
limit: int = 10,
*,
get_all: bool = False,
) -> AsyncGenerator[MeRole | RoleUser, None]:
) -> AsyncGenerator[RoleUser, None]:
"""
Get users in a role.
Endpoint: `/api/roles/users`
@ -84,7 +83,7 @@ class RoleActions(AbstractAction):
Yields
------
AsyncGenerator[MeRole | RoleUser, None]
AsyncGenerator[RoleUser, None]
The role user data.
"""
@ -96,17 +95,13 @@ class RoleActions(AbstractAction):
body = {"roleId": role_id, "limit": limit, "sinceId": since_id, "untilId": until_id}
pagination = Pagination[IRoleUser | IMeRole](
pagination = Pagination[IRoleUser](
self.__session, Route("POST", "/api/roles/users"), auth=True, json=body
)
while True:
raw_users = await pagination.next()
for raw_user in raw_users:
yield (
MeRole(raw_user, client=self.__client)
if is_me_role(raw_user, config.account_id)
else RoleUser(raw_user, client=self.__client)
)
yield RoleUser(raw_user, client=self.__client)
if pagination.is_final or get_all is False:
break

@ -5,12 +5,11 @@ from typing import TYPE_CHECKING
from mipac.models.lite.role import PartialRole
from mipac.models.user import MeDetailed, UserDetailedNotMe, packed_user
from mipac.types.roles import IMeRole, IRole, IRolePolicies, IRoleUser
from mipac.types.roles import IRole, IRolePolicies, IRoleUser
from mipac.utils.format import str_to_datetime
if TYPE_CHECKING:
from mipac.manager.client import ClientManager
from mipac.manager.user import UserManager
class RoleUser:
@ -23,40 +22,12 @@ class RoleUser:
return self.__role_user["id"]
@property
def user(self) -> UserDetailedNotMe | MeDetailed:
return packed_user(self.__role_user["user"], client=self.__client)
def created_at(self) -> datetime:
return str_to_datetime(self.__role_user["created_at"])
@property
def expires_at(self) -> datetime | None:
return (
str_to_datetime(self.__role_user["expires_at"])
if self.__role_user["expires_at"]
else None
)
@property
def action(self) -> UserManager:
return self.__client._create_user_instance(self.user)
def __eq__(self, __value: object) -> bool:
return isinstance(__value, RoleUser) and self.id == __value.id
def __ne__(self, __value: object) -> bool:
return not self.__eq__(__value)
class MeRole:
def __init__(self, data: IMeRole, *, client: ClientManager) -> None:
self.__role_user = data
self.__client = client
@property
def id(self) -> str:
return self.__role_user["id"]
@property
def user(self) -> MeDetailed:
return MeDetailed(self.__role_user["user"], client=self.__client)
def user(self) -> UserDetailedNotMe | MeDetailed:
return packed_user(self.__role_user["user"], client=self.__client)
@property
def expires_at(self) -> datetime | None:
@ -66,10 +37,6 @@ class MeRole:
else None
)
@property
def action(self) -> UserManager:
return self.__client._create_user_instance(self.user)
def __eq__(self, __value: object) -> bool:
return isinstance(__value, RoleUser) and self.id == __value.id

@ -1,20 +1,17 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Literal, TypedDict, TypeGuard
from typing import TYPE_CHECKING, Literal, TypedDict
from mipac.types.user import IUserDetailedNotMeSchema
if TYPE_CHECKING:
from mipac.types.user import IMeDetailedSchema, IUserDetailed
from mipac.types.user import IMeDetailedSchema
class IRoleUser(TypedDict):
id: str
user: IUserDetailed
expires_at: str | None
class IMeRole(TypedDict):
id: str
user: IMeDetailedSchema
created_at: str
user: IUserDetailedNotMeSchema | IMeDetailedSchema
expires_at: str | None
@ -67,7 +64,3 @@ class IRole(IPartialRole):
can_edit_members_by_moderator: bool
policies: IRolePolicies
users_count: int
def is_me_role(data: IMeRole | IRoleUser, me_id: str) -> TypeGuard[IMeRole]:
return data["user"]["id"] == me_id and data["user"].get("avatar_id") is not None

Loading…
Cancel
Save