diff --git a/src/components/Core/SpeedCard.vue b/src/components/Core/SpeedCard.vue
index 4df76cb9..ff9fb0ba 100644
--- a/src/components/Core/SpeedCard.vue
+++ b/src/components/Core/SpeedCard.vue
@@ -1,10 +1,12 @@
@@ -31,6 +33,8 @@
@@ -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 460ef23c..cb0544a2 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 290fbe52..9d7a41a6 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 })
}