mirror of
https://github.com/coaidev/coai.git
synced 2025-05-20 05:20:15 +09:00
96 lines
1.9 KiB
TypeScript
96 lines
1.9 KiB
TypeScript
import axios from "axios";
|
|
import { Message } from "./types.tsx";
|
|
|
|
export type SharingForm = {
|
|
status: boolean;
|
|
message: string;
|
|
data: string;
|
|
};
|
|
|
|
export type SharingPreviewForm = {
|
|
name: string;
|
|
conversation_id: number;
|
|
hash: string;
|
|
time: string;
|
|
};
|
|
|
|
export type ViewData = {
|
|
name: string;
|
|
username: string;
|
|
time: string;
|
|
model?: string;
|
|
messages: Message[];
|
|
};
|
|
|
|
export type ViewForm = {
|
|
status: boolean;
|
|
message: string;
|
|
data: ViewData | null;
|
|
};
|
|
|
|
export type ListSharingResponse = {
|
|
status: boolean;
|
|
message: string;
|
|
data?: SharingPreviewForm[];
|
|
};
|
|
|
|
export type DeleteSharingResponse = {
|
|
status: boolean;
|
|
message: string;
|
|
};
|
|
|
|
export async function shareConversation(
|
|
id: number,
|
|
refs: number[] = [-1],
|
|
): Promise<SharingForm> {
|
|
try {
|
|
const resp = await axios.post("/conversation/share", { id, refs });
|
|
return resp.data;
|
|
} catch (e) {
|
|
return { status: false, message: (e as Error).message, data: "" };
|
|
}
|
|
}
|
|
|
|
export async function viewConversation(hash: string): Promise<ViewForm> {
|
|
try {
|
|
const resp = await axios.get(`/conversation/view?hash=${hash}`);
|
|
return resp.data as ViewForm;
|
|
} catch (e) {
|
|
return {
|
|
status: false,
|
|
message: (e as Error).message,
|
|
data: null,
|
|
};
|
|
}
|
|
}
|
|
|
|
export async function listSharing(): Promise<ListSharingResponse> {
|
|
try {
|
|
const resp = await axios.get("/conversation/share/list");
|
|
return resp.data as ListSharingResponse;
|
|
} catch (e) {
|
|
return {
|
|
status: false,
|
|
message: (e as Error).message,
|
|
};
|
|
}
|
|
}
|
|
|
|
export async function deleteSharing(
|
|
hash: string,
|
|
): Promise<DeleteSharingResponse> {
|
|
try {
|
|
const resp = await axios.get(`/conversation/share/delete?hash=${hash}`);
|
|
return resp.data as DeleteSharingResponse;
|
|
} catch (e) {
|
|
return {
|
|
status: false,
|
|
message: (e as Error).message,
|
|
};
|
|
}
|
|
}
|
|
|
|
export function getSharedLink(hash: string): string {
|
|
return `${location.origin}/share/${hash}`;
|
|
}
|