Feat: add link to upload cookies
This commit is contained in:
parent
7edc21ee2d
commit
c77d232c72
3 changed files with 20 additions and 5 deletions
|
|
@ -139,10 +139,11 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label is-unselectable" for="ytdlpCookies">
|
<label class="label is-unselectable" for="ytdlpCookies">
|
||||||
<span class="icon"><i class="fa-solid fa-cookie" /></span>
|
<span class="icon"><i class="fa-solid fa-cookie" /></span>
|
||||||
<span>Cookies</span>
|
<span>Cookies - <NuxtLink @click="cookiesDropzoneRef?.triggerFileSelect()">Upload file</NuxtLink>
|
||||||
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<TextDropzone id="ytdlpCookies" v-model="form.cookies" :disabled="!socket.isConnected || addInProgress"
|
<TextDropzone ref="cookiesDropzoneRef" id="ytdlpCookies" v-model="form.cookies"
|
||||||
@error="(msg: string) => toast.error(msg)"
|
:disabled="!socket.isConnected || addInProgress" @error="(msg: string) => toast.error(msg)"
|
||||||
:placeholder="getDefault('cookies', 'Leave empty to use default cookies. Or drag & drop a cookie file here.')" />
|
:placeholder="getDefault('cookies', 'Leave empty to use default cookies. Or drag & drop a cookie file here.')" />
|
||||||
<span class="help is-bold">
|
<span class="help is-bold">
|
||||||
<span class="icon"><i class="fa-solid fa-info" /></span>
|
<span class="icon"><i class="fa-solid fa-info" /></span>
|
||||||
|
|
@ -255,6 +256,7 @@
|
||||||
import 'assets/css/bulma-switch.css'
|
import 'assets/css/bulma-switch.css'
|
||||||
import { useStorage } from '@vueuse/core'
|
import { useStorage } from '@vueuse/core'
|
||||||
import TextareaAutocomplete from '~/components/TextareaAutocomplete.vue'
|
import TextareaAutocomplete from '~/components/TextareaAutocomplete.vue'
|
||||||
|
import TextDropzone from '~/components/TextDropzone.vue'
|
||||||
import type { item_request } from '~/types/item'
|
import type { item_request } from '~/types/item'
|
||||||
import type { AutoCompleteOptions } from '~/types/autocomplete'
|
import type { AutoCompleteOptions } from '~/types/autocomplete'
|
||||||
import { navigateTo } from '#app'
|
import { navigateTo } from '#app'
|
||||||
|
|
@ -284,6 +286,7 @@ const showTestResults = ref<boolean>(false)
|
||||||
const testResultsData = ref<any>(null)
|
const testResultsData = ref<any>(null)
|
||||||
const dlFieldsExtra = ['--no-download-archive']
|
const dlFieldsExtra = ['--no-download-archive']
|
||||||
const ytDlpOpt = ref<AutoCompleteOptions>([])
|
const ytDlpOpt = ref<AutoCompleteOptions>([])
|
||||||
|
const cookiesDropzoneRef = ref<InstanceType<typeof TextDropzone> | null>(null)
|
||||||
|
|
||||||
const form = useStorage<item_request>('local_config_v1', {
|
const form = useStorage<item_request>('local_config_v1', {
|
||||||
id: null,
|
id: null,
|
||||||
|
|
|
||||||
|
|
@ -165,10 +165,10 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label is-inline" for="cookies" v-tooltip="'Netscape HTTP Cookie format.'">
|
<label class="label is-inline" for="cookies" v-tooltip="'Netscape HTTP Cookie format.'">
|
||||||
<span class="icon"><i class="fa-solid fa-cookie" /></span>
|
<span class="icon"><i class="fa-solid fa-cookie" /></span>
|
||||||
Cookies
|
Cookies - <NuxtLink @click="cookiesDropzoneRef?.triggerFileSelect()">Upload file</NuxtLink>
|
||||||
</label>
|
</label>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<TextDropzone id="cookies" v-model="form.cookies" :disabled="addInProgress"
|
<TextDropzone ref="cookiesDropzoneRef" id="cookies" v-model="form.cookies" :disabled="addInProgress"
|
||||||
@error="(msg: string) => toast.error(msg)"
|
@error="(msg: string) => toast.error(msg)"
|
||||||
placeholder="Leave empty to use default cookies. Or drag & drop a cookie file here." />
|
placeholder="Leave empty to use default cookies. Or drag & drop a cookie file here." />
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -234,6 +234,8 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useStorage } from '@vueuse/core'
|
import { useStorage } from '@vueuse/core'
|
||||||
|
import TextareaAutocomplete from '~/components/TextareaAutocomplete.vue'
|
||||||
|
import TextDropzone from '~/components/TextDropzone.vue'
|
||||||
import type { AutoCompleteOptions } from '~/types/autocomplete';
|
import type { AutoCompleteOptions } from '~/types/autocomplete';
|
||||||
import type { Preset, PresetImport } from '~/types/presets'
|
import type { Preset, PresetImport } from '~/types/presets'
|
||||||
|
|
||||||
|
|
@ -257,6 +259,7 @@ const showImport = useStorage<boolean>('showImport', false)
|
||||||
const selected_preset = ref<string>('')
|
const selected_preset = ref<string>('')
|
||||||
const showOptions = ref<boolean>(false)
|
const showOptions = ref<boolean>(false)
|
||||||
const ytDlpOpt = ref<AutoCompleteOptions>([])
|
const ytDlpOpt = ref<AutoCompleteOptions>([])
|
||||||
|
const cookiesDropzoneRef = ref<InstanceType<typeof TextDropzone> | null>(null)
|
||||||
|
|
||||||
watch(() => config.ytdlp_options, newOptions => ytDlpOpt.value = newOptions
|
watch(() => config.ytdlp_options, newOptions => ytDlpOpt.value = newOptions
|
||||||
.filter(opt => !opt.ignored)
|
.filter(opt => !opt.ignored)
|
||||||
|
|
|
||||||
|
|
@ -221,6 +221,15 @@ const readFileAsText = (file: File): Promise<string> => {
|
||||||
reader.readAsText(file)
|
reader.readAsText(file)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const triggerFileSelect = (): void => {
|
||||||
|
if (props.disabled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fileInputRef.value?.click()
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ triggerFileSelect })
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue