mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-07-12 12:21:34 +00:00
Added toggle button to upload files individually
This commit is contained in:
parent
bd1309b680
commit
87f8c650c2
2 changed files with 44 additions and 3 deletions
|
|
@ -78,7 +78,11 @@
|
||||||
<cards-item-upload-card v-for="item in items" :key="item.index" :ref="`itemCard-${item.index}`" :media-type="selectedLibraryMediaType" :item="item" :provider="fetchMetadata.provider" :processing="processing" @remove="removeItem(item)" />
|
<cards-item-upload-card v-for="item in items" :key="item.index" :ref="`itemCard-${item.index}`" :media-type="selectedLibraryMediaType" :item="item" :provider="fetchMetadata.provider" :processing="processing" @remove="removeItem(item)" />
|
||||||
|
|
||||||
<!-- Upload/Reset btns -->
|
<!-- Upload/Reset btns -->
|
||||||
<div v-show="items.length" class="flex justify-end pb-8 pt-4">
|
<div v-show="items.length" class="flex justify-end items-center pb-8 pt-4">
|
||||||
|
<label class="flex cursor-pointer pr-3">
|
||||||
|
<ui-toggle-switch v-model="uploadChunked" class="inline-flex" :enabled="!uploadFinished" />
|
||||||
|
<span class="pl-2 text-base">{{ $strings.LabelUploadChunked }}</span>
|
||||||
|
</label>
|
||||||
<ui-btn v-if="!uploadFinished" color="success" :loading="processing" @click="submit">{{ $strings.ButtonUpload }}</ui-btn>
|
<ui-btn v-if="!uploadFinished" color="success" :loading="processing" @click="submit">{{ $strings.ButtonUpload }}</ui-btn>
|
||||||
<ui-btn v-else @click="reset">{{ $strings.ButtonReset }}</ui-btn>
|
<ui-btn v-else @click="reset">{{ $strings.ButtonReset }}</ui-btn>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -105,6 +109,7 @@ export default {
|
||||||
selectedFolderId: null,
|
selectedFolderId: null,
|
||||||
processing: false,
|
processing: false,
|
||||||
uploadFinished: false,
|
uploadFinished: false,
|
||||||
|
uploadChunked: false,
|
||||||
fetchMetadata: {
|
fetchMetadata: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
provider: null
|
provider: null
|
||||||
|
|
@ -319,6 +324,39 @@ export default {
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
async uploadItemChunked(item) {
|
||||||
|
// upload files
|
||||||
|
const form = new FormData()
|
||||||
|
form.set('title', item.title)
|
||||||
|
form.set('library', this.selectedLibraryId)
|
||||||
|
form.set('folder', this.selectedFolderId)
|
||||||
|
if (!this.selectedLibraryIsPodcast) {
|
||||||
|
form.set('author', item.author || '')
|
||||||
|
form.set('series', item.series || '')
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < item.files.length; i++) {
|
||||||
|
const file = item.files[i]
|
||||||
|
|
||||||
|
form.set('file', file)
|
||||||
|
|
||||||
|
const success = await this.$axios
|
||||||
|
.$post(`/api/upload`, form)
|
||||||
|
.then(() => true)
|
||||||
|
.catch((error) => {
|
||||||
|
console.error('Failed', error)
|
||||||
|
var errorMessage = error.response && error.response.data ? error.response.data : 'Oops, something went wrong...'
|
||||||
|
this.$toast.error(errorMessage)
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!success) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
},
|
||||||
validateItems() {
|
validateItems() {
|
||||||
var itemData = []
|
var itemData = []
|
||||||
for (var item of this.items) {
|
for (var item of this.items) {
|
||||||
|
|
@ -379,7 +417,9 @@ export default {
|
||||||
let itemsFailed = 0
|
let itemsFailed = 0
|
||||||
for (const item of itemsToUpload) {
|
for (const item of itemsToUpload) {
|
||||||
this.updateItemCardStatus(item.index, 'uploading')
|
this.updateItemCardStatus(item.index, 'uploading')
|
||||||
const result = await this.uploadItem(item)
|
const result = this.uploadChunked
|
||||||
|
? await this.uploadItemChunked(item)
|
||||||
|
: await this.uploadItem(item)
|
||||||
if (result) itemsUploaded++
|
if (result) itemsUploaded++
|
||||||
else itemsFailed++
|
else itemsFailed++
|
||||||
this.updateItemCardStatus(item.index, result ? 'success' : 'failed')
|
this.updateItemCardStatus(item.index, result ? 'success' : 'failed')
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,7 @@
|
||||||
"ButtonSubmit": "Submit",
|
"ButtonSubmit": "Submit",
|
||||||
"ButtonTest": "Test",
|
"ButtonTest": "Test",
|
||||||
"ButtonUpload": "Upload",
|
"ButtonUpload": "Upload",
|
||||||
|
"LabelUploadChunked": "Upload Chunked",
|
||||||
"ButtonUploadBackup": "Upload Backup",
|
"ButtonUploadBackup": "Upload Backup",
|
||||||
"ButtonUploadCover": "Upload Cover",
|
"ButtonUploadCover": "Upload Cover",
|
||||||
"ButtonUploadOPMLFile": "Upload OPML File",
|
"ButtonUploadOPMLFile": "Upload OPML File",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue