2026-06-04 15:16:53 -04:00
|
|
|
import { authApi, handleApiError } from "@/main-axios";
|
|
|
|
|
|
2026-08-19 14:12:06 -05:00
|
|
|
/** Row shape shared by the recent / pinned / shortcut list endpoints. */
|
|
|
|
|
export interface FileManagerEntry {
|
|
|
|
|
id: number;
|
|
|
|
|
name: string;
|
|
|
|
|
path: string;
|
|
|
|
|
lastOpened?: string;
|
|
|
|
|
[key: string]: unknown;
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-04 15:16:53 -04:00
|
|
|
// FILE MANAGER DATA
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
|
|
|
|
export async function getRecentFiles(
|
|
|
|
|
hostId: number,
|
2026-08-19 14:12:06 -05:00
|
|
|
): Promise<FileManagerEntry[]> {
|
2026-06-04 15:16:53 -04:00
|
|
|
try {
|
|
|
|
|
const response = await authApi.get("/host/file_manager/recent", {
|
|
|
|
|
params: { hostId },
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "get recent files");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function addRecentFile(
|
|
|
|
|
hostId: number,
|
|
|
|
|
path: string,
|
|
|
|
|
name?: string,
|
|
|
|
|
): Promise<Record<string, unknown>> {
|
|
|
|
|
try {
|
|
|
|
|
const response = await authApi.post("/host/file_manager/recent", {
|
|
|
|
|
hostId,
|
|
|
|
|
path,
|
|
|
|
|
name,
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "add recent file");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function removeRecentFile(
|
|
|
|
|
hostId: number,
|
|
|
|
|
path: string,
|
|
|
|
|
): Promise<Record<string, unknown>> {
|
|
|
|
|
try {
|
|
|
|
|
const response = await authApi.delete("/host/file_manager/recent", {
|
|
|
|
|
data: { hostId, path },
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "remove recent file");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function getPinnedFiles(
|
|
|
|
|
hostId: number,
|
2026-08-19 14:12:06 -05:00
|
|
|
): Promise<FileManagerEntry[]> {
|
2026-06-04 15:16:53 -04:00
|
|
|
try {
|
|
|
|
|
const response = await authApi.get("/host/file_manager/pinned", {
|
|
|
|
|
params: { hostId },
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "get pinned files");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function addPinnedFile(
|
|
|
|
|
hostId: number,
|
|
|
|
|
path: string,
|
|
|
|
|
name?: string,
|
|
|
|
|
): Promise<Record<string, unknown>> {
|
|
|
|
|
try {
|
|
|
|
|
const response = await authApi.post("/host/file_manager/pinned", {
|
|
|
|
|
hostId,
|
|
|
|
|
path,
|
|
|
|
|
name,
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "add pinned file");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function removePinnedFile(
|
|
|
|
|
hostId: number,
|
|
|
|
|
path: string,
|
|
|
|
|
): Promise<Record<string, unknown>> {
|
|
|
|
|
try {
|
|
|
|
|
const response = await authApi.delete("/host/file_manager/pinned", {
|
|
|
|
|
data: { hostId, path },
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "remove pinned file");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function getFolderShortcuts(
|
|
|
|
|
hostId: number,
|
2026-08-19 14:12:06 -05:00
|
|
|
): Promise<FileManagerEntry[]> {
|
2026-06-04 15:16:53 -04:00
|
|
|
try {
|
|
|
|
|
const response = await authApi.get("/host/file_manager/shortcuts", {
|
|
|
|
|
params: { hostId },
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "get folder shortcuts");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function addFolderShortcut(
|
|
|
|
|
hostId: number,
|
|
|
|
|
path: string,
|
|
|
|
|
name?: string,
|
|
|
|
|
): Promise<Record<string, unknown>> {
|
|
|
|
|
try {
|
|
|
|
|
const response = await authApi.post("/host/file_manager/shortcuts", {
|
|
|
|
|
hostId,
|
|
|
|
|
path,
|
|
|
|
|
name,
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "add folder shortcut");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function removeFolderShortcut(
|
|
|
|
|
hostId: number,
|
|
|
|
|
path: string,
|
|
|
|
|
): Promise<Record<string, unknown>> {
|
|
|
|
|
try {
|
|
|
|
|
const response = await authApi.delete("/host/file_manager/shortcuts", {
|
|
|
|
|
data: { hostId, path },
|
|
|
|
|
});
|
|
|
|
|
return response.data;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
handleApiError(error, "remove folder shortcut");
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ============================================================================
|