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
+14 -10
View File
@@ -346,20 +346,24 @@ export default {
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))
+13 -19
View File
@@ -622,39 +622,33 @@ export default {
},
async download(selectedLocalFolder = null) {
// Get the local folder to download to
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) {
localFolder = {
id: `internal-${this.mediaType}`,
name: 'App Storage',
name: 'Internal App Storage',
mediaType: this.mediaType
}
} else if (foldersWithMediaType.length === 1 && internalStorageFolder) {
localFolder = internalStorageFolder
} else {
this.showSelectLocalFolder = true
this.$store.commit('globals/showSelectLocalFolderModal', {
mediaType: this.mediaType,
callback: (folder) => {
this.download(folder)
}
})
return
}
// 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]
// } else {
// console.log('Multiple folders with media type')
// this.showSelectLocalFolder = true
// return
// }
if (!localFolder) {
return this.$toast.error('Invalid download folder')
}
}
console.log('Local folder', JSON.stringify(localFolder))
+14 -2
View File
@@ -15,12 +15,18 @@
<div v-if="!localFolders.length" class="flex justify-center">
<p class="text-center">No Media Folders</p>
</div>
<div class="flex border-t border-white border-opacity-10 my-4 py-4">
<div v-if="!isAndroid10OrBelow || overrideFolderRestriction" class="flex border-t border-white border-opacity-10 my-4 py-4">
<div class="flex-grow pr-1">
<ui-dropdown v-model="newFolderMediaType" placeholder="Select media type" :items="mediaTypeItems" />
</div>
<ui-btn small class="w-28" color="success" @click="selectFolder">New Folder</ui-btn>
</div>
<div v-else class="flex border-t border-white border-opacity-10 my-4 py-4">
<div class="flex-grow pr-1">
<p class="text-sm">Android 10 and below will use internal app storage for downloads.</p>
</div>
<ui-btn small class="w-28" color="primary" @click="overrideFolderRestriction = true">Override</ui-btn>
</div>
</div>
</div>
</template>
@@ -44,7 +50,9 @@ export default {
text: 'Podcasts'
}
],
syncing: false
syncing: false,
isAndroid10OrBelow: false,
overrideFolderRestriction: false
}
},
computed: {
@@ -82,6 +90,10 @@ export default {
this.$router.push(`/localMedia/folders/${folderObj.id}?scan=1`)
},
async init() {
const androidSdkVersion = await this.$getAndroidSDKVersion()
this.isAndroid10OrBelow = !!androidSdkVersion && androidSdkVersion <= 29
console.log(`androidSdkVersion=${androidSdkVersion}, isAndroid10OrBelow=${this.isAndroid10OrBelow}`)
this.localFolders = (await this.$db.getLocalFolders()) || []
this.localLibraryItems = await this.$db.getLocalLibraryItems()
}
+1
View File
@@ -272,6 +272,7 @@ export default {
},
showItemDialog() {
this.selectedAudioTrack = null
this.selectedEpisode = null
this.showDialog = true
},
showTrackDialog(track) {