UI: выбор игрока при создании партии — выпадашка в стиле подсказок
Вместо нативного select — кнопка-триггер (аватар + ник) с выпадающим списком всех игроков группы в стилистике подсказок инвайта; игроки, уже выбранные в других строках, не предлагаются (заодно исключены дубли). Для аватаров в списке MemberRead теперь отдаёт avatar_url. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ from app.services import (
|
||||
notification_service,
|
||||
notify,
|
||||
stats_service,
|
||||
user_service,
|
||||
)
|
||||
|
||||
router = APIRouter(prefix="/groups", tags=["groups"])
|
||||
@@ -127,7 +128,12 @@ def list_members(
|
||||
) -> list[s.MemberRead]:
|
||||
group_service.assert_member(session, group_id, user.id) # type: ignore[arg-type]
|
||||
return [
|
||||
s.MemberRead(user_id=u.id, nickname=u.nickname, role=m.role)
|
||||
s.MemberRead(
|
||||
user_id=u.id,
|
||||
nickname=u.nickname,
|
||||
role=m.role,
|
||||
avatar_url=user_service.avatar_url_for(u.id, u.avatar_path, u.updated_at),
|
||||
)
|
||||
for m, u in membership_service.list_members(session, group_id)
|
||||
]
|
||||
|
||||
@@ -195,10 +201,13 @@ def change_member_role(
|
||||
group_service.assert_owner(session, group_id, user.id) # type: ignore[arg-type]
|
||||
group = group_service.get_group(session, group_id)
|
||||
member = membership_service.change_role(session, group, user_id, body.role)
|
||||
from app.services.user_service import get_user
|
||||
|
||||
u = get_user(session, user_id)
|
||||
return s.MemberRead(user_id=u.id, nickname=u.nickname, role=member.role)
|
||||
u = user_service.get_user(session, user_id)
|
||||
return s.MemberRead(
|
||||
user_id=u.id,
|
||||
nickname=u.nickname,
|
||||
role=member.role,
|
||||
avatar_url=user_service.avatar_url_for(u.id, u.avatar_path, u.updated_at),
|
||||
)
|
||||
|
||||
|
||||
# ─── Партии и статистика группы ──────────────────────────────────────────────
|
||||
|
||||
@@ -147,6 +147,7 @@ class MemberRead(BaseModel):
|
||||
user_id: int
|
||||
nickname: str
|
||||
role: str
|
||||
avatar_url: str | None = None
|
||||
|
||||
|
||||
class MemberAdd(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user