mirror of
https://github.com/Nezumi-2711/onedrive-vercel-index.git
synced 2026-09-22 13:38:45 +00:00
add bulk copy permalink
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
@@ -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" />
|
||||
) : (
|
||||
|
||||
@@ -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" />
|
||||
) : (
|
||||
|
||||
Reference in New Issue
Block a user