From bdc36fe15147092f06aefcb37aaaac2e86e0eb1a Mon Sep 17 00:00:00 2001 From: Samuel <73540958+6c65726f79@users.noreply.github.com> Date: Wed, 1 Dec 2021 19:18:41 +0100 Subject: [PATCH] Reduce bandwith usage --- src/services/TransmissionRPC.ts | 7 +++++-- src/views/App.vue | 33 +++++++++++++++++++++++++++------ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/services/TransmissionRPC.ts b/src/services/TransmissionRPC.ts index b7b582f3..eac46032 100644 --- a/src/services/TransmissionRPC.ts +++ b/src/services/TransmissionRPC.ts @@ -213,10 +213,10 @@ class TRPC { return token; } - async getTorrents() { + async getTorrents(refresh=false) { let result: Array=[]; let loadPersistent=false; - const args = { + const args: Record = { fields: [ 'id', 'name', @@ -237,6 +237,9 @@ class TRPC { 'queuePosition' ] } + if(refresh) { + args.ids = "recently-active"; + } if(!this.persistentDataValid){ loadPersistent=true; diff --git a/src/views/App.vue b/src/views/App.vue index 0a1abac1..c42166ae 100644 --- a/src/views/App.vue +++ b/src/views/App.vue @@ -169,6 +169,7 @@ import { LocaleController } from "../services/LocaleController"; import { Utils } from "../services/Utils"; import { Emitter } from "../services/Emitter"; import { SplashScreen } from '@capacitor/splash-screen'; +import * as _ from 'lodash'; export default defineComponent({ name: 'App', @@ -313,7 +314,6 @@ export default defineComponent({ language() { LocaleController.setLanguage(UserSettings.getLanguage()); }, - "privateState.torrentList": function() { this.getTorrentFilters() }, "privateState.serverList.length": async function() { if(this.privateState.selectedServer>=this.privateState.serverList.length){ this.privateState.selectedServer=this.privateState.serverList.length-1; @@ -386,14 +386,14 @@ export default defineComponent({ clearInterval(this.privateState.refresh); this.privateState.refresh = setInterval(() => { if(!this.privateState.connectionStatus.loading && this.privateState.connectionStatus.error=="") { - this.getTorrents() + this.getTorrents(false, true) } },this.sharedState.refreshInterval*1000); }, refresh(clean=false) { this.setRefreshInterval(); - this.getTorrents(clean); + this.getTorrents(clean, false); }, openTrackerList(e: Event) { @@ -456,6 +456,10 @@ export default defineComponent({ component: Settings, cssClass: 'settings' }) + modal.onDidDismiss() + .then(() => { + this.refresh(false) + }) return modal.present(); }, @@ -464,6 +468,10 @@ export default defineComponent({ .create({ component: About }) + modal.onDidDismiss() + .then(() => { + this.refresh(false) + }) return modal.present(); }, @@ -481,6 +489,10 @@ export default defineComponent({ add:add } }) + modal.onDidDismiss() + .then(() => { + this.refresh(false) + }) return modal.present(); }, @@ -509,7 +521,7 @@ export default defineComponent({ }) }, - async getTorrents(clean=false) { + async getTorrents(clean=false, refresh=false) { const isModalOpened = await modalController.getTop(); if(!isModalOpened || clean){ this.privateState.connectionStatus.loading=true; @@ -518,11 +530,20 @@ export default defineComponent({ this.privateState.connectionStatus.error=""; this.privateState.torrentList=[]; } - TransmissionRPC.getTorrents() + TransmissionRPC.getTorrents((refresh && !clean)) .then((response) => { this.privateState.connectionStatus.error=""; this.privateState.connectionStatus.connected=true; - this.privateState.torrentList=response; + if(refresh){ + this.privateState.torrentList = _.unionBy(response, this.privateState.torrentList, 'id'); + if(response.length>0){ + this.getTorrentFilters(); + } + } + else { + this.privateState.torrentList = response; + this.getTorrentFilters(); + } }) .catch((error) => { if(error.message){