This commit is contained in:
Timothy Jaeryang Baek
2026-06-16 23:59:24 +02:00
parent ec86ce5cf7
commit fbcdcf146b
2 changed files with 36 additions and 6 deletions

View File

@@ -31,9 +31,7 @@ from open_webui.models.messages import (
from open_webui.models.users import (
UserIdNameResponse,
UserIdNameStatusResponse,
UserListResponse,
UserModel,
UserModelResponse,
UserNameResponse,
Users,
)
@@ -440,7 +438,40 @@ async def get_channel_by_id(
PAGE_ITEM_COUNT = 30
@router.get('/{id}/members', response_model=UserListResponse)
class ChannelMemberResponse(BaseModel):
id: str
email: str
name: str
role: str
profile_image_url: str | None = None
presence_state: str | None = None
status_emoji: str | None = None
status_message: str | None = None
status_expires_at: int | None = None
is_active: bool = False
class ChannelMemberListResponse(BaseModel):
users: list[ChannelMemberResponse]
total: int
def serialize_channel_member(user: UserModel) -> ChannelMemberResponse:
return ChannelMemberResponse(
id=user.id,
email=user.email,
name=user.name,
role=user.role,
profile_image_url=user.profile_image_url,
presence_state=user.presence_state,
status_emoji=user.status_emoji,
status_message=user.status_message,
status_expires_at=user.status_expires_at,
is_active=Users.is_active(user),
)
@router.get('/{id}/members', response_model=ChannelMemberListResponse)
async def get_channel_members_by_id(
request: Request,
id: str,
@@ -475,7 +506,7 @@ async def get_channel_members_by_id(
total = len(fetched_users)
return {
'users': [UserModelResponse(**u.model_dump(), is_active=Users.is_active(u)) for u in fetched_users],
'users': [serialize_channel_member(u) for u in fetched_users],
'total': total,
}
else:
@@ -503,7 +534,7 @@ async def get_channel_members_by_id(
total = result['total']
return {
'users': [UserModelResponse(**u.model_dump(), is_active=Users.is_active(u)) for u in fetched_users],
'users': [serialize_channel_member(u) for u in fetched_users],
'total': total,
}

View File

@@ -15,7 +15,6 @@
import Pagination from '$lib/components/common/Pagination.svelte';
import Tooltip from '$lib/components/common/Tooltip.svelte';
import Badge from '$lib/components/common/Badge.svelte';
import Plus from '$lib/components/icons/Plus.svelte';
import Spinner from '$lib/components/common/Spinner.svelte';