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" />
) : (
+2
View File
@@ -31,6 +31,8 @@
"Customise link": "Customise link",
"Customised": "Customised",
"Customised and encoded": "Customised and encoded",
"Copy selected files permalink": "Copy selected files permalink",
"Copied selected files permalink.": "Copied selected files permalink.",
"Default": "Default",
"Do not pretend to be the site owner": "Do not pretend to be the site owner",
"Don't worry, after storing them, onedrive-vercel-index will take care of token refreshes and updates after your site goes live.": "Don't worry, after storing them, onedrive-vercel-index will take care of token refreshes and updates after your site goes live.",
+2
View File
@@ -29,6 +29,8 @@
"Customise link": "自定义直链",
"Customised": "自定义链接",
"Customised and encoded": "URL 编码的自定义链接",
"Copy selected files permalink": "复制选定文件永久链接",
"Copied selected files permalink.": "已复制选定文件永久链接。",
"Default": "默认",
"Do not pretend to be the site owner": "你不是网站所有者",
"Don't worry, after storing them, onedrive-vercel-index will take care of token refreshes and updates after your site goes live.": "别担心,存储它们之后,onedrive-vercel-index 会在帮助你定时更新 token",