mirror of
https://github.com/open-webui/open-webui.git
synced 2026-08-25 17:21:00 -05:00
refac
This commit is contained in:
@@ -142,7 +142,8 @@ export const getChannelMembersById = async (
|
||||
query?: string,
|
||||
orderBy?: string,
|
||||
direction?: string,
|
||||
page = 1
|
||||
page = 1,
|
||||
signal?: AbortSignal
|
||||
) => {
|
||||
let error = null;
|
||||
let res = null;
|
||||
@@ -167,6 +168,7 @@ export const getChannelMembersById = async (
|
||||
`${WEBUI_API_BASE_URL}/channels/${channel_id}/members?${searchParams.toString()}`,
|
||||
{
|
||||
method: 'GET',
|
||||
signal,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${token}`
|
||||
@@ -178,6 +180,7 @@ export const getChannelMembersById = async (
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
if (signal?.aborted) return null;
|
||||
console.error(err);
|
||||
error = err.detail;
|
||||
return null;
|
||||
|
||||
@@ -198,7 +198,8 @@ export const searchUsers = async (
|
||||
query?: string,
|
||||
orderBy?: string,
|
||||
direction?: string,
|
||||
page = 1
|
||||
page = 1,
|
||||
signal?: AbortSignal
|
||||
) => {
|
||||
let error = null;
|
||||
let res = null;
|
||||
@@ -221,6 +222,7 @@ export const searchUsers = async (
|
||||
|
||||
res = await fetch(`${WEBUI_API_BASE_URL}/users/search?${searchParams.toString()}`, {
|
||||
method: 'GET',
|
||||
signal,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${token}`
|
||||
@@ -231,6 +233,7 @@ export const searchUsers = async (
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
if (signal?.aborted) return null;
|
||||
console.error(err);
|
||||
error = err.detail;
|
||||
return null;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { getContext, onDestroy, onMount } from 'svelte';
|
||||
import { getAbortSignal, getContext, onMount } from 'svelte';
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
import { channels, models } from '$lib/stores';
|
||||
@@ -40,22 +40,35 @@
|
||||
.map((u) => ({ type: 'user', id: u.id, label: u.name }))
|
||||
.sort((a, b) => a.label.localeCompare(b.label));
|
||||
|
||||
const getUserList = async () => {
|
||||
const getUserList = async (requestQuery: string, requestChannelId: string | null) => {
|
||||
const signal = getAbortSignal();
|
||||
const [channelMembers, searchResults] = await Promise.all([
|
||||
channelId
|
||||
? getChannelMembersById(localStorage.token, channelId, query, 'name', 'asc').catch(
|
||||
(error) => {
|
||||
console.error('Error loading channel members:', error);
|
||||
return null;
|
||||
}
|
||||
)
|
||||
requestChannelId
|
||||
? getChannelMembersById(
|
||||
localStorage.token,
|
||||
requestChannelId,
|
||||
requestQuery,
|
||||
'name',
|
||||
'asc',
|
||||
1,
|
||||
signal
|
||||
).catch((error) => {
|
||||
if (signal.aborted) return null;
|
||||
console.error('Error loading channel members:', error);
|
||||
return null;
|
||||
})
|
||||
: Promise.resolve(null),
|
||||
searchUsers(localStorage.token, query).catch((error) => {
|
||||
console.error('Error searching users:', error);
|
||||
return null;
|
||||
})
|
||||
searchUsers(localStorage.token, requestQuery, undefined, undefined, 1, signal).catch(
|
||||
(error) => {
|
||||
if (signal.aborted) return null;
|
||||
console.error('Error searching users:', error);
|
||||
return null;
|
||||
}
|
||||
)
|
||||
]);
|
||||
|
||||
if (signal.aborted) return;
|
||||
|
||||
const memberUsers = (channelMembers?.users ?? []) as UserSuggestion[];
|
||||
const searchedUsers = (searchResults?.users ?? []) as UserSuggestion[];
|
||||
const memberIds = new Set(memberUsers.map((u) => u.id));
|
||||
@@ -65,7 +78,7 @@
|
||||
};
|
||||
|
||||
$: if (query !== null && userSuggestions) {
|
||||
getUserList();
|
||||
getUserList(query, channelId);
|
||||
}
|
||||
|
||||
const select = (index: number) => {
|
||||
|
||||
Reference in New Issue
Block a user