mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-08-26 13:24:39 +02:00
Update:Android download to internal storage option #635
This commit is contained in:
@@ -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
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -272,6 +272,7 @@ export default {
|
||||
},
|
||||
showItemDialog() {
|
||||
this.selectedAudioTrack = null
|
||||
this.selectedEpisode = null
|
||||
this.showDialog = true
|
||||
},
|
||||
showTrackDialog(track) {
|
||||
|
||||
Reference in New Issue
Block a user