feat(SPA): screens for Sites and Authors
This commit is contained in:
1 parent
b34a173d83
commit
3d81d2c717
82 files changed
+10676
-37
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import { useApi } from '@/composables/useApi'
|
||||
import type { LinkableUser } from '@/lib/directoryTypes'
|
||||
|
||||
export type UserListItem =
|
||||
| {
|
||||
@@ -50,6 +51,17 @@ export function useUsers() {
|
||||
return request<UserListItem[]>('/v1/user/')
|
||||
}
|
||||
|
||||
async function listLinkableUsers(
|
||||
takenUserIds: ReadonlySet<number | null>,
|
||||
): Promise<LinkableUser[]> {
|
||||
const users = await listUsers()
|
||||
return users.flatMap((user) =>
|
||||
user.kind === 'user' && !takenUserIds.has(user.id)
|
||||
? [{ id: user.id, label: user.display_name || user.username, email: user.email }]
|
||||
: [],
|
||||
)
|
||||
}
|
||||
|
||||
function inviteUser(email: string): Promise<CreatedInvite> {
|
||||
return request<CreatedInvite>('/v1/user/invite', {
|
||||
method: 'POST',
|
||||
@@ -66,5 +78,5 @@ export function useUsers() {
|
||||
return request<CreatedInvite>(`/v1/user/invite/${id}/renew`, { method: 'POST' })
|
||||
}
|
||||
|
||||
return { listUsers, inviteUser, cancelInvite, renewInvite }
|
||||
return { listUsers, listLinkableUsers, inviteUser, cancelInvite, renewInvite }
|
||||
}
|
||||
Reference in new issue
Block a user