feat: クラスにaction propertyを追加

pull/22/head
yupix 2 years ago
parent 2e6b29709a
commit f936f04d10
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -9,7 +9,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Added
- `User` クラスに `get_profile_link` メソッドを追加しました
- `LiteUser``action` プロパティを追加しました。
- これにより `UserDetailed` の方から `action`が削除されていますが、`UserDetailed` は `LiteUser` を継承しているため今まで通りご利用いただけます
- `UserActions` クラスに `get_profile_link` メソッドを追加しました
## [0.2.7] 2022-12-23

@ -11,6 +11,7 @@ from mipac.util import cache, check_multi_arg, remove_dict_empty
if TYPE_CHECKING:
from mipac.manager.client import ClientActions
from mipac.models.note import Note
from mipac.models.lite.user import LiteUser
__all__ = ['UserActions']
@ -20,10 +21,10 @@ class UserActions:
self,
session: HTTPClient,
client: ClientActions,
user: Optional[UserDetailed] = None,
user: Optional[LiteUser] = None,
):
self.__session: HTTPClient = session
self.__user: Optional[UserDetailed] = user
self.__user: Optional[LiteUser] = user
self.__client: ClientActions = client
self.note: NoteManager = NoteManager(session=session, client=client)
@ -161,7 +162,7 @@ class UserActions:
)
return [Note(i, client=self.__client) for i in res]
def get_mention(self, user: Optional[UserDetailed] = None) -> str:
def get_mention(self, user: Optional[LiteUser] = None) -> str:
"""
Get mention name of user.

@ -15,6 +15,8 @@ from mipac.manager.user import UserManager
if TYPE_CHECKING:
from mipac.config import Config
from mipac.models.user import UserDetailed
from mipac.models.lite.user import LiteUser
__all__ = ('ClientActions',)
@ -34,7 +36,7 @@ class ClientActions:
self.chart: ChartManager = ChartManager(session=session, client=self)
self._config: Config = config
def _create_user_instance(self, user: UserDetailed) -> UserManager:
def _create_user_instance(self, user: LiteUser) -> UserManager:
return UserManager(session=self.__session, client=self, user=user)
def _create_note_instance(self, note_id: str) -> NoteManager:

@ -74,7 +74,7 @@ class ReactionManager(AbstractManager):
auth=True,
lower=True,
)
return [NoteReaction(i) for i in res]
return [NoteReaction(i, client=self.__client) for i in res]
async def get_emoji_list(self) -> list[CustomEmoji]:
data: IInstanceMetaLite = await self.__session.request(

@ -8,7 +8,8 @@ from mipac.http import HTTPClient
if TYPE_CHECKING:
from mipac.manager.client import ClientActions
from mipac.models.user import UserDetailed
from mipac.models.lite.user import LiteUser
__all__ = ('UserManager',)
@ -16,14 +17,14 @@ __all__ = ('UserManager',)
class UserManager(AbstractManager):
def __init__(
self,
user: Optional[UserDetailed] = None,
user: Optional[LiteUser] = None,
*,
session: HTTPClient,
client: ClientActions
):
self.__session: HTTPClient = session
self.__client: ClientActions = client
self.user: Optional[UserDetailed] = user
self.user: Optional[LiteUser] = user
@property
def action(self) -> UserActions:

@ -77,7 +77,7 @@ class ChatMessage:
@property
def user(self) -> LiteUser:
return LiteUser(self.__chat['user'])
return LiteUser(self.__chat['user'], client=self.__client)
@property
def recipient_id(self) -> str:

@ -22,8 +22,12 @@ class FollowRequest:
@property
def follower(self) -> LiteUser:
return LiteUser(self.__follow_request['follower'])
return LiteUser(
self.__follow_request['follower'], client=self.__client
)
@property
def followee(self) -> LiteUser:
return LiteUser(self.__follow_request['followee'])
return LiteUser(
self.__follow_request['followee'], client=self.__client
)

@ -1,16 +1,22 @@
from typing import Literal
from __future__ import annotations
from typing import TYPE_CHECKING, Literal
from mipac.models.lite.instance import LiteInstance
from mipac.types.emoji import ICustomEmojiLite
from mipac.types.user import ILiteUser
from mipac.util import deprecated
if TYPE_CHECKING:
from mipac.manager.client import ClientActions
from mipac.actions.user import UserActions
class LiteUser:
__slots__ = ('__user',)
__slots__ = ('__user', '__client')
def __init__(self, user: ILiteUser) -> None:
def __init__(self, user: ILiteUser, *, client: ClientActions) -> None:
self.__user: ILiteUser = user
self.__client: ClientActions = client
@property
def id(self) -> str:
@ -58,3 +64,7 @@ class LiteUser:
if 'instance' in self.__user
else None
)
@property
def action(self) -> UserActions:
return self.__client._create_user_instance(self).action

@ -74,10 +74,11 @@ class Header:
class NoteReaction:
__slots__ = ('__reaction',)
__slots__ = ('__reaction', '__client')
def __init__(self, reaction: INoteReaction):
def __init__(self, reaction: INoteReaction, *, client: ClientActions):
self.__reaction: INoteReaction = reaction
self.__client: ClientActions = client
@property
def id(self) -> str | None:
@ -99,7 +100,7 @@ class NoteReaction:
@property
def user(self) -> LiteUser:
return LiteUser(self.__reaction['user'])
return LiteUser(self.__reaction['user'], client=self.__client)
class Note:
@ -149,7 +150,7 @@ class Note:
@property
def author(self) -> LiteUser:
return LiteUser(self.__note['user'])
return LiteUser(self.__note['user'], client=self._client)
@property
def reply_id(self) -> str:

@ -39,7 +39,7 @@ class NotificationReaction:
@property
def user(self) -> LiteUser:
return LiteUser(self.__reaction['user'])
return LiteUser(self.__reaction['user'], client=self.__client)
@property
def note(self) -> Note:

@ -8,7 +8,6 @@ from mipac.types.page import IPage
from mipac.types.user import IFollowRequest, IUserDetailed, IUserDetailedField
if TYPE_CHECKING:
from mipac.actions.user import UserActions
from mipac.manager.client import ClientActions
__all__ = ('UserDetailed', 'FollowRequest')
@ -25,11 +24,11 @@ class FollowRequest:
@property
def follower(self) -> LiteUser:
return LiteUser(self.__request['follower'])
return LiteUser(self.__request['follower'], client=self.__client)
@property
def followee(self) -> LiteUser:
return LiteUser(self.__request['followee'])
return LiteUser(self.__request['followee'], client=self.__client)
class UserDetailed(LiteUser):
@ -39,9 +38,8 @@ class UserDetailed(LiteUser):
)
def __init__(self, user: IUserDetailed, *, client: ClientActions):
super().__init__(user=user)
super().__init__(user=user, client=client)
self.__detail = user
self.__client: ClientActions = client
@property
def fields(self) -> list[IUserDetailedField]:
@ -199,7 +197,3 @@ class UserDetailed(LiteUser):
@property
def url(self) -> str | None:
return self.__detail.get('url')
@property
def action(self) -> UserActions:
return self.__client._create_user_instance(self).action

Loading…
Cancel
Save