mirror of
https://github.com/transmission/transmission.git
synced 2026-04-18 07:56:33 +01:00
fix: filter-by-tracker failed after the tracker list changed (#7761)
This commit is contained in:
@@ -16,11 +16,18 @@ export class Torrent extends EventTarget {
|
||||
this.fieldObservers = {};
|
||||
this.fields = {};
|
||||
this.refresh(data);
|
||||
|
||||
this.setLazyCollatedField('name', 'collatedName');
|
||||
this.setLazyCollatedField('trackers', 'collatedTrackers');
|
||||
}
|
||||
|
||||
setLazyCollatedField(name, collated_name) {
|
||||
this.notifyOnFieldChange(name, () => delete this.fields[collated_name]);
|
||||
}
|
||||
|
||||
notifyOnFieldChange(field, callback) {
|
||||
this.fieldObservers[field] = this.fieldObservers[field] || [];
|
||||
this.fieldObservers[field].push(callback);
|
||||
const observers = (this.fieldObservers[field] ??= []);
|
||||
observers.push(callback);
|
||||
}
|
||||
|
||||
setField(o, name, value) {
|
||||
@@ -80,12 +87,6 @@ export class Torrent extends EventTarget {
|
||||
changed |= this.setField(this.fields, key, value);
|
||||
}
|
||||
break;
|
||||
case 'name':
|
||||
if (this.setField(this.fields, key, data[key])) {
|
||||
this.fields.collatedName = '';
|
||||
changed = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
changed |= this.setField(this.fields, key, value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user