add bulk copy permalink

This commit is contained in:
opoet
2022-09-20 16:42:20 +08:00
parent 250b5e683c
commit 8bf97d01c4
5 changed files with 41 additions and 0 deletions
+13
View File
@@ -268,6 +268,18 @@ const FileListing: FC<{ query?: ParsedUrlQuery }> = ({ query }) => {
}
}
// Get selected file permalink
const handleSelectedPermalink = (baseUrl: string) => {
return getFiles()
.filter(c => selected[c.id])
.map(
c =>
`${baseUrl}/api/raw/?path=${path}/${encodeURIComponent(c.name)}${hashedToken ? `&odpt=${hashedToken}` : ''}`
)
.reduce((urls, cur) => urls + cur + '\n', '')
.slice(0, -1)
}
// Folder recursive download
const handleFolderDownload = (path: string, id: string, name?: string) => () => {
const files = (async function* () {
@@ -324,6 +336,7 @@ const FileListing: FC<{ query?: ParsedUrlQuery }> = ({ query }) => {
totalGenerating,
handleSelectedDownload,
folderGenerating,
handleSelectedPermalink,
handleFolderDownload,
}
+12
View File
@@ -64,6 +64,7 @@ const FolderGridLayout = ({
totalGenerating,
handleSelectedDownload,
folderGenerating,
handleSelectedPermalink,
handleFolderDownload,
toast,
}) => {
@@ -86,6 +87,17 @@ const FolderGridLayout = ({
indeterminate={true}
title={t('Select all files')}
/>
<button
title={t('Copy selected files permalink')}
className="cursor-pointer rounded p-1.5 hover:bg-gray-300 disabled:cursor-not-allowed disabled:text-gray-400 disabled:hover:bg-white dark:hover:bg-gray-600 disabled:dark:text-gray-600 disabled:hover:dark:bg-gray-900"
disabled={totalSelected === 0}
onClick={() => {
clipboard.copy(handleSelectedPermalink(getBaseUrl()))
toast.success(t('Copied selected files permalink.'))
}}
>
<FontAwesomeIcon icon={['far', 'copy']} size="lg" />
</button>
{totalGenerating ? (
<Downloading title={t('Downloading selected files, refresh page to cancel')} style="p-1.5" />
) : (
+12
View File
@@ -41,6 +41,7 @@ const FolderListLayout = ({
totalGenerating,
handleSelectedDownload,
folderGenerating,
handleSelectedPermalink,
handleFolderDownload,
toast,
}) => {
@@ -75,6 +76,17 @@ const FolderListLayout = ({
indeterminate={true}
title={t('Select files')}
/>
<button
title={t('Copy selected files permalink')}
className="cursor-pointer rounded p-1.5 hover:bg-gray-300 disabled:cursor-not-allowed disabled:text-gray-400 disabled:hover:bg-white dark:hover:bg-gray-600 disabled:dark:text-gray-600 disabled:hover:dark:bg-gray-900"
disabled={totalSelected === 0}
onClick={() => {
clipboard.copy(handleSelectedPermalink(getBaseUrl()))
toast.success(t('Copied selected files permalink.'))
}}
>
<FontAwesomeIcon icon={['far', 'copy']} size="lg" />
</button>
{totalGenerating ? (
<Downloading title={t('Downloading selected files, refresh page to cancel')} style="p-1.5" />
) : (