feat: 1-to-1 message render + web data-lake backend
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
import { request } from "$lib/api/client";
|
||||
import type {
|
||||
Account,
|
||||
Chat,
|
||||
Folder,
|
||||
JobView,
|
||||
MediaVersion,
|
||||
MediaView,
|
||||
MessageVersion,
|
||||
MessageView,
|
||||
PeerView,
|
||||
} from "$lib/api/types";
|
||||
import { accounts } from "$lib/stores/accounts.svelte";
|
||||
|
||||
interface Page {
|
||||
limit?: number;
|
||||
offset?: number;
|
||||
}
|
||||
|
||||
export function listAccounts(): Promise<Account[]> {
|
||||
return request<Account[]>("/accounts");
|
||||
}
|
||||
|
||||
export function listChats(page: Page = {}): Promise<Chat[]> {
|
||||
return request<Chat[]>("/chats", { account: true, query: { ...page } });
|
||||
}
|
||||
|
||||
export function listFolders(): Promise<Folder[]> {
|
||||
return request<Folder[]>("/folders", { account: true });
|
||||
}
|
||||
|
||||
export function listMessages(
|
||||
chatId: number,
|
||||
options: Page & { include_deleted?: boolean } = {}
|
||||
): Promise<MessageView[]> {
|
||||
return request<MessageView[]>(`/chats/${chatId}/messages`, {
|
||||
account: true,
|
||||
query: { ...options },
|
||||
});
|
||||
}
|
||||
|
||||
export function listMessageVersions(
|
||||
chatId: number,
|
||||
messageId: number
|
||||
): Promise<MessageVersion[]> {
|
||||
return request<MessageVersion[]>(
|
||||
`/chats/${chatId}/messages/${messageId}/versions`,
|
||||
{ account: true }
|
||||
);
|
||||
}
|
||||
|
||||
export function listDeleted(
|
||||
options: Page & { chat_id?: number } = {}
|
||||
): Promise<MessageView[]> {
|
||||
return request<MessageView[]>("/deleted", {
|
||||
account: true,
|
||||
query: { ...options },
|
||||
});
|
||||
}
|
||||
|
||||
export function getPeer(peerId: number): Promise<PeerView> {
|
||||
return request<PeerView>(`/peers/${peerId}`, { account: true });
|
||||
}
|
||||
|
||||
export function getPeers(ids: number[]): Promise<PeerView[]> {
|
||||
if (ids.length === 0) {
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
return request<PeerView[]>("/peers/batch", {
|
||||
account: true,
|
||||
query: { ids: ids.join(",") },
|
||||
});
|
||||
}
|
||||
|
||||
export function enrichChat(chatId: number): Promise<{ job_id: number }> {
|
||||
return request<{ job_id: number }>(`/chats/${chatId}/enrich`, {
|
||||
method: "POST",
|
||||
body: { account_id: accounts.selectedId },
|
||||
});
|
||||
}
|
||||
|
||||
export function getJob(jobId: number): Promise<JobView> {
|
||||
return request<JobView>(`/jobs/${jobId}`, { account: true });
|
||||
}
|
||||
|
||||
export function getMediaVersions(
|
||||
chatId: number,
|
||||
messageId: number
|
||||
): Promise<MediaVersion[]> {
|
||||
return request<MediaVersion[]>(`/media/versions/${chatId}/${messageId}`, {
|
||||
account: true,
|
||||
});
|
||||
}
|
||||
|
||||
export function getMediaMeta(mediaId: number): Promise<MediaView> {
|
||||
return request<MediaView>(`/media/${mediaId}/meta`);
|
||||
}
|
||||
|
||||
export function getMessageMedia(
|
||||
chatId: number,
|
||||
messageId: number
|
||||
): Promise<MediaView> {
|
||||
return request<MediaView>(`/media/message/${chatId}/${messageId}`, {
|
||||
account: true,
|
||||
});
|
||||
}
|
||||
|
||||
export function fetchMedia(
|
||||
chatId: number,
|
||||
messageId: number
|
||||
): Promise<{ job_id: number }> {
|
||||
return request<{ job_id: number }>("/media/fetch", {
|
||||
method: "POST",
|
||||
body: {
|
||||
account_id: accounts.selectedId,
|
||||
chat_id: chatId,
|
||||
message_id: messageId,
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user