50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
import { fetchURL, fetchJSON, adjustedData } from "./utils";
|
|
import { notify } from "@/notify";
|
|
import { getApiPath } from "@/utils/url.js";
|
|
import { externalUrl } from "@/utils/constants";
|
|
|
|
export async function list() {
|
|
const apiPath = getApiPath("api/shares");
|
|
return fetchJSON(apiPath);
|
|
}
|
|
|
|
export async function get(path, hash) {
|
|
try {
|
|
const params = { path, hash };
|
|
const apiPath = getApiPath("api/share",params);
|
|
let data = fetchJSON(apiPath);
|
|
return adjustedData(data, `api/share${path}`);
|
|
} catch (err) {
|
|
notify.showError(err.message || "Error fetching data");
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
export async function remove(hash) {
|
|
const params = { hash };
|
|
const apiPath = getApiPath("api/share",params);
|
|
await fetchURL(apiPath, {
|
|
method: "DELETE",
|
|
});
|
|
}
|
|
|
|
export async function create(path, password = "", expires = "", unit = "hours") {
|
|
const params = { path };
|
|
const apiPath = getApiPath("api/share",params);
|
|
let body = "{}";
|
|
if (password != "" || expires !== "" || unit !== "hours") {
|
|
body = JSON.stringify({ password: password, expires: expires, unit: unit });
|
|
}
|
|
return fetchJSON(apiPath, {
|
|
method: "POST",
|
|
body: body,
|
|
});
|
|
}
|
|
|
|
export function getShareURL(share) {
|
|
if (externalUrl) {
|
|
return externalUrl+getApiPath(`share/${share.hash}`);
|
|
}
|
|
return window.origin+getApiPath(`share/${share.hash}`);
|
|
}
|