diff --git a/src/components/Core/SpeedCard.vue b/src/components/Core/SpeedCard.vue index 4df76cb9c2..ff9fb0ba7a 100644 --- a/src/components/Core/SpeedCard.vue +++ b/src/components/Core/SpeedCard.vue @@ -1,10 +1,12 @@ @@ -51,5 +61,6 @@ export default { .speedCard { padding: 20px 20px !important; font-size: 1.10em; + cursor: pointer; } diff --git a/src/components/Modals/SpeedLimitModal.vue b/src/components/Modals/SpeedLimitModal.vue index 460ef23c0b..cb0544a27a 100644 --- a/src/components/Modals/SpeedLimitModal.vue +++ b/src/components/Modals/SpeedLimitModal.vue @@ -76,13 +76,23 @@ export default { return this.$vuetify.breakpoint.xsOnly } }, - created() { + async created() { switch (this.mode) { case 'download': - this.limit = this.torrent.dl_limit > 0 ? this.limit = this.torrent.dl_limit / 1024 : '∞' + if (this.isGlobal()) { + const limit = await qbit.getGlobalDownloadLimit() + this.limit = this.formatLimit(limit) + } else { + this.limit = this.formatLimit(this.torrent?.dl_limit) + } break case 'upload': - this.limit = this.torrent.up_limit > 0 ? this.torrent.up_limit / 1024 : '∞' + if (this.isGlobal()) { + const limit = await qbit.getGlobalUploadLimit() + this.limit = this.formatLimit(limit) + } else { + this.limit = this.formatLimit(this.torrent?.up_limit) + } break default: break @@ -92,16 +102,34 @@ export default { setLimit() { switch (this.mode) { case 'download': - qbit.setDownloadLimit([this.hash], this.limit > 0 ? this.limit * 1024 : NaN) + if (this.isGlobal()) { + qbit.setGlobalDownloadLimit(this.exportLimit()) + } else { + qbit.setDownloadLimit([this.hash], this.exportLimit()) + } break case 'upload': - qbit.setUploadLimit([this.hash], this.limit > 0 ? this.limit * 1024 : NaN) + if (this.isGlobal()) { + qbit.setGlobalUploadLimit(this.exportLimit()) + } else { + qbit.setUploadLimit([this.hash], this.exportLimit()) + } break default: break } + this.close() }, + isGlobal() { + return this.torrent ? false : true + }, + formatLimit(limit) { + return limit > 0 ? limit / 1024 : '∞' + }, + exportLimit() { + return this.limit > 0 ? this.limit * 1024 : NaN + }, close() { this.dialog = false } diff --git a/src/services/qbit.js b/src/services/qbit.js index 290fbe522a..9d7a41a66c 100644 --- a/src/services/qbit.js +++ b/src/services/qbit.js @@ -225,6 +225,32 @@ class Qbit { return this.torrentAction('setUploadLimit', hashes, { limit }) } + async getGlobalDownloadLimit() { + const { data } = await this.axios.get('/transfer/downloadLimit') + + return data + } + + async getGlobalUploadLimit() { + const { data } = await this.axios.get('/transfer/uploadLimit') + + return data + } + + setGlobalDownloadLimit(limit) { + const formData = new FormData() + formData.append('limit', limit) + + return this.axios.post('/transfer/setDownloadLimit', formData) + } + + setGlobalUploadLimit(limit) { + const formData = new FormData() + formData.append('limit', limit) + + return this.axios.post('/transfer/setUploadLimit', formData) + } + setShareLimit(hashes, ratioLimit, seedingTimeLimit) { return this.torrentAction('setShareLimits', hashes, { ratioLimit, seedingTimeLimit }) }