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