Changeset 12762


Ignore:
Timestamp:
Aug 26, 2011, 10:49:57 PM (10 years ago)
Author:
jordan
Message:

(trunk web) Reduce the torrent-get RPC wrapper down to a single function. Annotate the torrent bootstrap process in Transmission.js.

Location:
trunk/web/javascript
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/javascript/transmission.js

    r12759 r12762  
    133133                this.loadDaemonPrefs(async);
    134134                this.loadDaemonStats(async);
    135                 this.initializeAllTorrents();
     135                this.initializeTorrents();
    136136                this.refreshTorrents();
    137137                this.togglePeriodicSessionRefresh(true);
     
    10561056                                t.refresh(o);
    10571057                        else {
    1058                                 t = this._torrents[id] = new Torrent(o);
     1058                                var tr = this;
     1059                                t = tr._torrents[id] = new Torrent(o);
    10591060                                $(t).bind('dataChanged',function(ev) {tr.onTorrentChanged(ev);});
    10601061                                new_ids.push(id);
     
    10631064
    10641065                if (new_ids.length) {
    1065                         var tr = this;
    1066                         this.remote.getTorrentInitial(new_ids, function(a,b){tr.updateFromTorrentGet(a,b);});
     1066                        // whee, new torrents! get their initial information.
     1067                        var fields = ['id'].concat(Torrent.Fields.Metadata, Torrent.Fields.Stats);
     1068                        this.remote.updateTorrents(new_ids, fields, this.updateFromTorrentGet, this);
    10671069                        this.refilterSoon();
    10681070                }
     
    10771079        {
    10781080                // send a request right now
    1079                 var tr = this;
    1080                 this.remote.getTorrentStats('recently-active', function(a,b){tr.updateFromTorrentGet(a,b);});
     1081                var fields = ['id'].concat(Torrent.Fields.Stats);
     1082                this.remote.updateTorrents('recently-active', fields, this.updateFromTorrentGet, this);
    10811083
    10821084                // schedule the next request
    10831085                clearTimeout(this.refreshTorrentsTimeout);
    1084                 this.refreshTorrentsTimeout = setTimeout(function(){tr.refreshTorrents();}, tr[Prefs._RefreshRate]*1000);
    1085         },
    1086         initializeAllTorrents: function() {
    10871086                var tr = this;
    1088                 this.remote.getTorrentInitial(null, function(a,b){tr.updateFromTorrentGet(a,b);});
    1089         },
    1090         refreshMetadata: function(ids) {
    1091                 var tr = this;
    1092                 this.remote.getTorrentMetadata(ids, function(a,b){tr.updateFromTorrentGet(a,b);});
    1093         },
    1094         refreshInspectorTorrents: function(full) {
    1095                 var tr = this;
    1096                 var ids = tr.getSelectedTorrentIds();
    1097                 if (ids.length > 0)
    1098                         this.remote.getTorrentDetails(ids, full, function(a,b){tr.updateFromTorrentGet(a,b);});
     1087                this.refreshTorrentsTimeout = setTimeout(function(){tr.refreshTorrents();}, tr[Prefs._RefreshRate]*1000);
     1088        },
     1089
     1090        initializeTorrents: function()
     1091        {
     1092                // to bootstrap, we only need to ask for the servers's torrents' ids.
     1093                // updateFromTorrentGet() automatically asks for the rest of the info when it gets a new id.
     1094                this.remote.updateTorrents(null, ['id'], this.updateFromTorrentGet, this);
     1095        },
     1096
     1097        refreshInspectorTorrents: function(full)
     1098        {
     1099                // some torrent fields are only used by the inspector, so we defer loading them
     1100                // until the user is viewing the torrent in the inspector.
     1101                if ($('#torrent_inspector').is(':visible')) {
     1102                        var ids = this.getSelectedTorrentIds();
     1103                        if (ids && ids.length) {
     1104                                var fields = ['id'].concat(Torrent.Fields.StatsExtra);
     1105                                this.remote.updateTorrents(ids, fields, this.updateFromTorrentGet, this);
     1106                        }
     1107                }
    10991108        },
    11001109
  • trunk/web/javascript/transmission.remote.js

    r12745 r12762  
    134134        },
    135135
    136         getTorrentInitial: function(torrent_ids, callback) {
     136        updateTorrents: function(torrentIds, fields, callback, context) {
    137137                var o = {
    138138                        method: 'torrent-get',
    139                         arguments: {
    140                                 fields: ['id'].concat(Torrent.Fields.Metadata, Torrent.Fields.Stats)
    141                         }
    142                 };
    143 
    144                 if (torrent_ids)
    145                         o.arguments.ids = torrent_ids;
    146 
    147                 this.sendRequest(o, function(data){ callback(data.arguments.torrents, data.arguments.removed);});
    148         },
    149 
    150         getTorrentMetadata: function(torrent_ids, callback) {
    151                 var o = {
    152                         method: 'torrent-get',
    153                         arguments: {
    154                                 fields: ['id'].concat(Torrent.Fields.Metadata)
    155                         }
    156                 };
    157 
    158                 if (torrent_ids)
    159                         o.arguments.ids = torrent_ids;
    160 
    161                 this.sendRequest(o, function(data) {callback(data.arguments.torrents)});
    162         },
    163 
    164         getTorrentStats: function(torrent_ids, callback) {
    165                 var o = {
    166                         method: 'torrent-get',
    167                         arguments: {
    168                                 'ids': torrent_ids,
    169                                 fields: ['id'].concat(Torrent.Fields.Stats)
    170                         }
    171                 };
    172 
    173                 this.sendRequest(o, function(data) {callback(data.arguments.torrents, data.arguments.removed);});
    174         },
    175 
    176         /* called for the torrents in the inspector aka details dialog */
    177         getTorrentDetails: function(torrent_ids, full, callback) {
    178                 var f = ['id'].concat(Torrent.Fields.StatsExtra);
    179                 if (full) // these only need to be loaded once...
    180                         f = f.concat(Torrent.Fields.InfoExtra);
    181                 var o = {
    182                         method: 'torrent-get',
    183                         arguments: {
    184                                 'ids': torrent_ids,
    185                                 fields: f,
    186                         }
    187                 };
    188                 this.sendRequest(o, function(data) {callback(data.arguments.torrents,null)});
     139                        'arguments': {
     140                                'fields': fields,
     141                        }
     142                };
     143                if (torrentIds)
     144                        o['arguments'].ids = torrentIds;
     145                this.sendRequest(o, function(response) {
     146                        var args = response['arguments'];
     147                        callback.call(context,args.torrents,args.removed);
     148                });
    189149        },
    190150
Note: See TracChangeset for help on using the changeset viewer.