This repository has been archived on 2022-10-07. You can view files and clone it, but cannot push or open issues or pull requests.
skynet-webportal/packages/dashboard-v2/src/components/FileList/useSkylinkSharing.js

41 lines
883 B
JavaScript

import { useEffect, useMemo, useState } from "react";
import copy from "copy-text-to-clipboard";
import skynetClient from "../../services/skynetClient";
const COPY_LINK_LABEL = "Copy link";
export const useSkylinkSharing = (skylink) => {
const [copied, setCopied] = useState(false);
const [copyLabel, setCopyLabel] = useState(COPY_LINK_LABEL);
useEffect(() => {
if (copied) {
setCopyLabel("Copied!");
const timeout = setTimeout(() => setCopied(false), 1500);
return () => clearTimeout(timeout);
} else {
setCopyLabel(COPY_LINK_LABEL);
}
}, [copied]);
const options = useMemo(
() => [
{
label: copyLabel,
callback: async () => {
setCopied(true);
copy(await skynetClient.getSkylinkUrl(skylink));
},
},
],
[skylink, copyLabel]
);
return {
options,
};
};