coai/app/src/api/sharing.ts

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}`;
}