Update:Android download to internal storage option #635

This commit is contained in:
advplyr 2023-06-04 14:59:55 -05:00
parent fbcb8620f9
commit 373221703d
12 changed files with 126 additions and 71 deletions

View file

@ -1,8 +1,8 @@
<template>
<modals-modal v-model="show" :width="300" height="100%">
<template #outer>
<div class="absolute top-8 left-4 z-40" style="max-width: 80%">
<p class="text-white text-lg truncate">Select Local Folder</p>
<div class="absolute top-10 left-4 z-40" style="max-width: 80%">
<p class="text-white text-lg truncate">Select Download Location</p>
</div>
</template>
@ -25,36 +25,48 @@
<script>
export default {
props: {
value: Boolean,
mediaType: String
},
data() {
return {
localFolders: []
}
},
watch: {
value(newVal) {
this.$nextTick(this.init)
show(newVal) {
if (newVal) {
this.$nextTick(this.init)
}
}
},
computed: {
show: {
get() {
return this.value
return this.$store.state.globals.showSelectLocalFolderModal
},
set(val) {
this.$emit('input', val)
this.$store.commit('globals/setShowSelectLocalFolderModal', val)
}
},
modalData() {
return this.$store.state.globals.localFolderSelectData || {}
},
callback() {
return this.modalData.callback
},
mediaType() {
return this.modalData.mediaType
}
},
methods: {
clickedOption(folder) {
this.$emit('select', folder)
this.show = false
if (!this.callback) {
console.error('Callback not set')
return
}
this.callback(folder)
},
async init() {
var localFolders = (await this.$db.getLocalFolders()) || []
const localFolders = (await this.$db.getLocalFolders()) || []
if (!localFolders.some((lf) => lf.id === `internal-${this.mediaType}`)) {
localFolders.push({

View file

@ -186,29 +186,33 @@ export default {
}
},
async download(selectedLocalFolder = null) {
var localFolder = selectedLocalFolder
let localFolder = selectedLocalFolder
if (!localFolder) {
var localFolders = (await this.$db.getLocalFolders()) || []
const localFolders = (await this.$db.getLocalFolders()) || []
console.log('Local folders loaded', localFolders.length)
var foldersWithMediaType = localFolders.filter((lf) => {
const foldersWithMediaType = localFolders.filter((lf) => {
console.log('Checking local folder', lf.mediaType)
return lf.mediaType == this.mediaType
})
console.log('Folders with media type', this.mediaType, foldersWithMediaType.length)
const internalStorageFolder = foldersWithMediaType.find((f) => f.id === `internal-${this.mediaType}`)
if (!foldersWithMediaType.length) {
// No local folders or no local folders with this media type
localFolder = await this.selectFolder()
} else if (foldersWithMediaType.length == 1) {
console.log('Only 1 local folder with this media type - auto select it')
localFolder = foldersWithMediaType[0]
localFolder = {
id: `internal-${this.mediaType}`,
name: 'Internal App Storage',
mediaType: this.mediaType
}
} else if (foldersWithMediaType.length === 1 && internalStorageFolder) {
localFolder = internalStorageFolder
} else {
console.log('Multiple folders with media type')
// this.showSelectLocalFolder = true
this.$store.commit('globals/showSelectLocalFolderModal', {
mediaType: this.mediaType,
callback: (folder) => {
this.download(folder)
}
})
return
}
if (!localFolder) {
return this.$toast.error('Invalid download folder')
}
}
console.log('Local folder', JSON.stringify(localFolder))

View file

@ -192,29 +192,33 @@ export default {
}
},
async download(selectedLocalFolder = null) {
var localFolder = selectedLocalFolder
let localFolder = selectedLocalFolder
if (!localFolder) {
var localFolders = (await this.$db.getLocalFolders()) || []
const localFolders = (await this.$db.getLocalFolders()) || []
console.log('Local folders loaded', localFolders.length)
var foldersWithMediaType = localFolders.filter((lf) => {
const foldersWithMediaType = localFolders.filter((lf) => {
console.log('Checking local folder', lf.mediaType)
return lf.mediaType == this.mediaType
})
console.log('Folders with media type', this.mediaType, foldersWithMediaType.length)
const internalStorageFolder = foldersWithMediaType.find((f) => f.id === `internal-${this.mediaType}`)
if (!foldersWithMediaType.length) {
// No local folders or no local folders with this media type
localFolder = await this.selectFolder()
} else if (foldersWithMediaType.length == 1) {
console.log('Only 1 local folder with this media type - auto select it')
localFolder = foldersWithMediaType[0]
localFolder = {
id: `internal-${this.mediaType}`,
name: 'Internal App Storage',
mediaType: this.mediaType
}
} else if (foldersWithMediaType.length === 1 && internalStorageFolder) {
localFolder = internalStorageFolder
} else {
console.log('Multiple folders with media type')
// this.showSelectLocalFolder = true
this.$store.commit('globals/showSelectLocalFolderModal', {
mediaType: this.mediaType,
callback: (folder) => {
this.download(folder)
}
})
return
}
if (!localFolder) {
return this.$toast.error('Invalid download folder')
}
}
console.log('Local folder', JSON.stringify(localFolder))