196 lines
4.3 KiB
TypeScript
196 lines
4.3 KiB
TypeScript
import {
|
|
SubmitSettingsPayload,
|
|
SubmitSettingsResponse,
|
|
GetSettingsResponse,
|
|
CodeState,
|
|
GetCodeDetailsResponse,
|
|
UpdateSettingsPayload,
|
|
UpdateSettingsResponse,
|
|
DeleteSettingsResponse,
|
|
} from "../types/codeTypes";
|
|
import axios from "axios";
|
|
|
|
const axiosInstance = axios.create({
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
});
|
|
export const submitSettings = async (
|
|
payload: SubmitSettingsPayload,
|
|
): Promise<SubmitSettingsResponse> => {
|
|
try {
|
|
const response = await axiosInstance.post<SubmitSettingsResponse>(
|
|
"/api/tab",
|
|
payload,
|
|
);
|
|
const data = {
|
|
data: response.data.data,
|
|
success: true,
|
|
message: response.data.message,
|
|
};
|
|
return data;
|
|
} catch (error: any) {
|
|
if (error.response) {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: error.response.data.message || "提交失败",
|
|
};
|
|
} else if (error.request) {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: "未收到服务器响应",
|
|
};
|
|
} else {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: "提交过程中发生错误",
|
|
};
|
|
}
|
|
}
|
|
};
|
|
export const updateCodeDetails = async (
|
|
id: string,
|
|
payload: UpdateSettingsPayload,
|
|
): Promise<UpdateSettingsResponse> => {
|
|
try {
|
|
const response = await axiosInstance.put<UpdateSettingsResponse>(
|
|
`/api/tab/${id}`,
|
|
payload,
|
|
);
|
|
const data = {
|
|
data: response.data.data,
|
|
success: true,
|
|
message: response.data.message,
|
|
};
|
|
return data;
|
|
} catch (error: any) {
|
|
if (error.response) {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: error.response.data.message || "更新失败",
|
|
};
|
|
} else if (error.request) {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: "未收到服务器响应",
|
|
};
|
|
} else {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: "提交过程中发生错误",
|
|
};
|
|
}
|
|
}
|
|
};
|
|
export const getSettings = async (): Promise<GetSettingsResponse> => {
|
|
try {
|
|
const response = await axiosInstance.get<GetSettingsResponse>("api/tab");
|
|
const data = {
|
|
tabs: response.data.tabs,
|
|
success: true,
|
|
message: response.data.message,
|
|
};
|
|
return data;
|
|
} catch (error: any) {
|
|
return {
|
|
success: false,
|
|
tabs: [
|
|
{
|
|
id: "",
|
|
tabs: [],
|
|
activeTabKey: "",
|
|
editorSettings: {
|
|
theme: "vs-dark",
|
|
},
|
|
title: "",
|
|
label: [],
|
|
content: "",
|
|
isEncrypted: false,
|
|
password: "",
|
|
date: "",
|
|
submitTime: "",
|
|
},
|
|
],
|
|
message: "获取代码详情失败。",
|
|
};
|
|
}
|
|
};
|
|
|
|
export const getCodeDetails = async (
|
|
id: string,
|
|
): Promise<GetCodeDetailsResponse> => {
|
|
try {
|
|
const response = await axiosInstance.get<GetCodeDetailsResponse>(
|
|
`/api/tab/${id}`,
|
|
);
|
|
const code: CodeState = response.data.data;
|
|
return {
|
|
success: true,
|
|
data: code,
|
|
message: "获取成功",
|
|
};
|
|
} catch (error: any) {
|
|
console.error("获取代码详情时出错:", error);
|
|
return {
|
|
success: false,
|
|
data: {
|
|
id: "",
|
|
tabs: [],
|
|
activeTabKey: "",
|
|
editorSettings: {
|
|
theme: "vs-dark",
|
|
},
|
|
title: "",
|
|
label: [],
|
|
content: "",
|
|
isEncrypted: false,
|
|
password: "",
|
|
date: "",
|
|
submitTime: "",
|
|
},
|
|
message: "获取代码详情失败。", // 可选的错误消息
|
|
};
|
|
}
|
|
};
|
|
export const deleteSettings = async (
|
|
id: string,
|
|
): Promise<DeleteSettingsResponse> => {
|
|
try {
|
|
const response = await axiosInstance.delete<DeleteSettingsResponse>(
|
|
`/api/tab/${id}`,
|
|
);
|
|
const data = {
|
|
data: response.data.data,
|
|
success: true,
|
|
message: response.data.message,
|
|
};
|
|
return data;
|
|
} catch (error: any) {
|
|
if (error.response) {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: error.response.data.message || "删除失败",
|
|
};
|
|
} else if (error.request) {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: "未收到服务器响应",
|
|
};
|
|
} else {
|
|
return {
|
|
success: false,
|
|
data: "",
|
|
message: "删除过程中发生错误",
|
|
};
|
|
}
|
|
}
|
|
};
|