| | import { WEBUI_API_BASE_URL } from '$lib/constants'; |
| |
|
| | type ChannelForm = { |
| | type?: string; |
| | name: string; |
| | is_private?: boolean | null; |
| | data?: object; |
| | meta?: object; |
| | access_grants?: object[]; |
| | group_ids?: string[]; |
| | user_ids?: string[]; |
| | }; |
| |
|
| | export const createNewChannel = async (token: string = '', channel: ChannelForm) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/create`, { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...channel }) |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getChannels = async (token: string = '') => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/`, { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getChannelById = async (token: string = '', channel_id: string) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}`, { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getDMChannelByUserId = async (token: string = '', user_id: string) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/users/${user_id}`, { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getChannelMembersById = async ( |
| | token: string, |
| | channel_id: string, |
| | query?: string, |
| | orderBy?: string, |
| | direction?: string, |
| | page = 1 |
| | ) => { |
| | let error = null; |
| | let res = null; |
| |
|
| | const searchParams = new URLSearchParams(); |
| |
|
| | searchParams.set('page', `${page}`); |
| |
|
| | if (query) { |
| | searchParams.set('query', query); |
| | } |
| |
|
| | if (orderBy) { |
| | searchParams.set('order_by', orderBy); |
| | } |
| |
|
| | if (direction) { |
| | searchParams.set('direction', direction); |
| | } |
| |
|
| | res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/members?${searchParams.toString()}`, |
| | { |
| | method: 'GET', |
| | headers: { |
| | 'Content-Type': 'application/json', |
| | Authorization: `Bearer ${token}` |
| | } |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .catch((err) => { |
| | console.error(err); |
| | error = err.detail; |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const updateChannelMemberActiveStatusById = async ( |
| | token: string = '', |
| | channel_id: string, |
| | is_active: boolean |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/members/active`, { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ is_active }) |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | type UpdateMembersForm = { |
| | user_ids?: string[]; |
| | group_ids?: string[]; |
| | }; |
| |
|
| | export const addMembersById = async ( |
| | token: string = '', |
| | channel_id: string, |
| | formData: UpdateMembersForm |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/update/members/add`, { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...formData }) |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | type RemoveMembersForm = { |
| | user_ids?: string[]; |
| | group_ids?: string[]; |
| | }; |
| |
|
| | export const removeMembersById = async ( |
| | token: string = '', |
| | channel_id: string, |
| | formData: RemoveMembersForm |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/update/members/remove`, { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...formData }) |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const updateChannelById = async ( |
| | token: string = '', |
| | channel_id: string, |
| | channel: ChannelForm |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/update`, { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...channel }) |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const deleteChannelById = async (token: string = '', channel_id: string) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/delete`, { |
| | method: 'DELETE', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getChannelMessages = async ( |
| | token: string = '', |
| | channel_id: string, |
| | skip: number = 0, |
| | limit: number = 50 |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages?skip=${skip}&limit=${limit}`, |
| | { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getChannelPinnedMessages = async ( |
| | token: string = '', |
| | channel_id: string, |
| | page: number = 1 |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/pinned?page=${page}`, |
| | { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getChannelThreadMessages = async ( |
| | token: string = '', |
| | channel_id: string, |
| | message_id: string, |
| | skip: number = 0, |
| | limit: number = 50 |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/thread?skip=${skip}&limit=${limit}`, |
| | { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const getMessageData = async ( |
| | token: string = '', |
| | channel_id: string, |
| | message_id: string |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/data`, |
| | { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | type MessageForm = { |
| | temp_id?: string; |
| | reply_to_id?: string; |
| | parent_id?: string; |
| | content: string; |
| | data?: object; |
| | meta?: object; |
| | }; |
| |
|
| | export const sendMessage = async (token: string = '', channel_id: string, message: MessageForm) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/post`, { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...message }) |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const pinMessage = async ( |
| | token: string = '', |
| | channel_id: string, |
| | message_id: string, |
| | is_pinned: boolean |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/pin`, |
| | { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ is_pinned }) |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const updateMessage = async ( |
| | token: string = '', |
| | channel_id: string, |
| | message_id: string, |
| | message: MessageForm |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/update`, |
| | { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...message }) |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const addReaction = async ( |
| | token: string = '', |
| | channel_id: string, |
| | message_id: string, |
| | name: string |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/reactions/add`, |
| | { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ name }) |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const removeReaction = async ( |
| | token: string = '', |
| | channel_id: string, |
| | message_id: string, |
| | name: string |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/reactions/remove`, |
| | { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ name }) |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const deleteMessage = async (token: string = '', channel_id: string, message_id: string) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/delete`, |
| | { |
| | method: 'DELETE', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | |
| |
|
| | type WebhookForm = { |
| | name: string; |
| | profile_image_url?: string; |
| | }; |
| |
|
| | export const getChannelWebhooks = async (token: string = '', channel_id: string) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/webhooks`, { |
| | method: 'GET', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const createChannelWebhook = async ( |
| | token: string = '', |
| | channel_id: string, |
| | formData: WebhookForm |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch(`${WEBUI_API_BASE_URL}/channels/${channel_id}/webhooks/create`, { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...formData }) |
| | }) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const updateChannelWebhook = async ( |
| | token: string = '', |
| | channel_id: string, |
| | webhook_id: string, |
| | formData: WebhookForm |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/webhooks/${webhook_id}/update`, |
| | { |
| | method: 'POST', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | }, |
| | body: JSON.stringify({ ...formData }) |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|
| | export const deleteChannelWebhook = async ( |
| | token: string = '', |
| | channel_id: string, |
| | webhook_id: string |
| | ) => { |
| | let error = null; |
| |
|
| | const res = await fetch( |
| | `${WEBUI_API_BASE_URL}/channels/${channel_id}/webhooks/${webhook_id}/delete`, |
| | { |
| | method: 'DELETE', |
| | headers: { |
| | Accept: 'application/json', |
| | 'Content-Type': 'application/json', |
| | authorization: `Bearer ${token}` |
| | } |
| | } |
| | ) |
| | .then(async (res) => { |
| | if (!res.ok) throw await res.json(); |
| | return res.json(); |
| | }) |
| | .then((json) => { |
| | return json; |
| | }) |
| | .catch((err) => { |
| | error = err.detail; |
| | console.error(err); |
| | return null; |
| | }); |
| |
|
| | if (error) { |
| | throw error; |
| | } |
| |
|
| | return res; |
| | }; |
| |
|