36 lines
945 B
JavaScript
36 lines
945 B
JavaScript
|
import { useMemo, useState } from "react";
|
||
|
|
||
|
import accountsService from "../../services/accountsService";
|
||
|
import skynetClient from "../../services/skynetClient";
|
||
|
|
||
|
export const useSkylinkOptions = ({ skylink, onUpdated }) => {
|
||
|
const [inProgress, setInProgress] = useState(false);
|
||
|
|
||
|
const options = useMemo(
|
||
|
() => [
|
||
|
{
|
||
|
label: "Preview",
|
||
|
callback: async () => window.open(await skynetClient.getSkylinkUrl(skylink)),
|
||
|
},
|
||
|
{
|
||
|
label: "Download",
|
||
|
callback: () => skynetClient.downloadFile(skylink),
|
||
|
},
|
||
|
{
|
||
|
label: "Unpin",
|
||
|
callback: async () => {
|
||
|
setInProgress(true);
|
||
|
await accountsService.delete(`user/uploads/${skylink}`);
|
||
|
await onUpdated(); // No need to setInProgress(false), since at this point this hook should already be unmounted
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
[skylink, onUpdated]
|
||
|
);
|
||
|
|
||
|
return {
|
||
|
inProgress,
|
||
|
options,
|
||
|
};
|
||
|
};
|