Skip to content

Commit

Permalink
feat: adapt delete policy in offline download
Browse files Browse the repository at this point in the history
  • Loading branch information
xhofe committed Nov 24, 2023
1 parent 8142c05 commit 80595bf
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/components/ModalInput.tsx
Expand Up @@ -30,6 +30,7 @@ export type ModalInputProps = {
loading?: boolean
tips?: string
topSlot?: JSXElement
bottomSlot?: JSXElement
}
export const ModalInput = (props: ModalInputProps) => {
const [value, setValue] = createSignal(props.defaultValue ?? "")
Expand Down Expand Up @@ -122,6 +123,7 @@ export const ModalInput = (props: ModalInputProps) => {
<Show when={props.tips}>
<FormHelperText>{props.tips}</FormHelperText>
</Show>
<Show when={props.bottomSlot}>{props.bottomSlot}</Show>
</ModalBody>
<ModalFooter display="flex" gap="$2">
<Button onClick={props.onClose} colorScheme="neutral">
Expand Down
6 changes: 6 additions & 0 deletions src/lang/en/home.json
Expand Up @@ -50,6 +50,12 @@
"cancel_select": "Cancel Select",
"offline_download": "Offline download",
"offline_download-tips": "One URL per line",
"delete_policy": {
"delete_on_upload_succeed": "Delete on upload succeed",
"delete_on_upload_failed": "Delete on upload failed",
"delete_never": "Never delete",
"delete_always": "Always delete"
},
"download": "Download",
"batch_download": "Batch Download",
"package_download": "Package Download",
Expand Down
26 changes: 26 additions & 0 deletions src/pages/home/toolbar/OfflineDownload.tsx
Expand Up @@ -11,13 +11,25 @@ import {
import { createSignal, onCleanup, onMount } from "solid-js"
import { PResp } from "~/types"

const deletePolicies = [
"delete_on_upload_succeed",
"delete_on_upload_failed",
"delete_never",
"delete_always",
] as const

type DeletePolicy = (typeof deletePolicies)[number]

export const OfflineDownload = () => {
const t = useT()
const [tools, setTools] = createSignal([] as string[])
const [toolsLoading, reqTool] = useFetch((): PResp<string[]> => {
return r.get("/public/offline_download_tools")
})
const [tool, setTool] = createSignal("")
const [deletePolicy, setDeletePolicy] = createSignal<DeletePolicy>(
"delete_on_upload_succeed",
)
onMount(async () => {
const resp = await reqTool()
handleResp(resp, (data) => {
Expand Down Expand Up @@ -57,6 +69,20 @@ export const OfflineDownload = () => {
/>
</Box>
}
bottomSlot={
<Box mb="$2">
<SelectWrapper
value={deletePolicy()}
onChange={(v) => setDeletePolicy(v as DeletePolicy)}
options={deletePolicies.map((policy) => {
return {
value: policy,
label: t(`home.toolbar.delete_policy.${policy}`),
}
})}
/>
</Box>
}
onSubmit={async (urls) => {
const resp = await ok(pathname(), urls.split("\n"), tool())
handleRespWithNotifySuccess(resp, () => {
Expand Down
3 changes: 2 additions & 1 deletion src/utils/api.ts
Expand Up @@ -109,8 +109,9 @@ export const offlineDownload = (
path: string,
urls: string[],
tool: string,
delete_policy: string,
): PEmptyResp => {
return r.post(`/fs/add_offline_download`, { path, urls, tool })
return r.post(`/fs/add_offline_download`, { path, urls, tool, delete_policy })
}

export const fetchText = async (
Expand Down

0 comments on commit 80595bf

Please sign in to comment.