Fox sorting and magnet links

Magnet button stays disabled
This commit is contained in:
2025-10-14 08:23:38 +02:00
parent 1c798fb899
commit 2f20eee841
5 changed files with 28 additions and 7 deletions

View File

@@ -80,14 +80,16 @@ class trdom_servermanager extends EventTarget {
let initControls = {}; let initControls = {};
let initHash = e.detail.torrentHash; let initHash = e.detail.torrentHash;
for (const [srv, server] of Object.entries(this.#servers)) { for (const [srv, server] of Object.entries(this.#servers)) {
let control = server == e.detail.serverObject ? e.detail.torrentControl : new trdom_torrentcontrol(initHash, server, null, this.#logcb); let control = server == e.detail.serverObject ? e.detail.torrentControl : new trdom_torrentcontrol(initHash, server, {magnetLink: e.detail.torrentControl.magnet}, this.#logcb);
//server.addControl(control); //server.addControl(control);
initControls[srv] = control; initControls[srv] = control;
} }
let initEvent = new CustomEvent('torrent-created', { let initEvent = new CustomEvent('torrent-created', {
detail: { detail: {
torrentHash: initHash, torrentHash: initHash,
torrentControls: initControls torrentControls: initControls,
torrentName: e.detail.torrentControl.name,
magnetLink: e.detail.torrentControl.magnet
} }
}); });
this.dispatchEvent(initEvent); this.dispatchEvent(initEvent);

View File

@@ -18,7 +18,20 @@ class trdom_torrentcontrol extends EventTarget {
#data; #data;
get exists() { get exists() {
return this.#data != null; return this.#data != null && this.#data.name != null;
}
get name() {
return this.exists ? this.#data.name : this.#hash;
}
get magnet() {
return this.#data != null ? this.#data.magnetLink : null;
}
set magnet(value) {
if (this.#data == null) {
this.#data = {};
}
this.#data.magnetLink = value;
this.updateDOM();
} }
updateDOM() { updateDOM() {

View File

@@ -41,7 +41,8 @@ class trdom_torrentmanager extends EventTarget {
case 'torrent-created': case 'torrent-created':
let initHash = e.detail.torrentHash; let initHash = e.detail.torrentHash;
if (this.#torrentDB[initHash] == null) { if (this.#torrentDB[initHash] == null) {
let torrentCreated = new trtorrent(initHash); let torrentCreated = new trtorrent(initHash, e.detail.magnetLink);
torrentCreated.name = e.detail.torrentName;
this.#torrentDB[initHash] = torrentCreated; this.#torrentDB[initHash] = torrentCreated;
torrentCreated.addEventListener('torrent-renamed', this); torrentCreated.addEventListener('torrent-renamed', this);
this.#putToPlace(torrentCreated); this.#putToPlace(torrentCreated);
@@ -61,7 +62,7 @@ class trdom_torrentmanager extends EventTarget {
case 'torrentserver-added': case 'torrentserver-added':
let addedServer = e.detail.serverObject; let addedServer = e.detail.serverObject;
for (const [hash, torrent] of Object.entries(this.#torrentDB)) { for (const [hash, torrent] of Object.entries(this.#torrentDB)) {
torrent.addControl(addedServer.name, new trdom_torrentcontrol(hash, addedServer, null, this.#logcb)) torrent.addControl(addedServer.name, new trdom_torrentcontrol(hash, addedServer, {magnetLink: torrent.magnet}, this.#logcb))
} }
break; break;
default: default:

View File

@@ -105,7 +105,7 @@ class trserver extends EventTarget {
if (!this.#isOnline) { if (!this.#isOnline) {
this.#log(4, 'Server API connection estabilished'); this.#log(4, 'Server API connection estabilished');
this.#isOnline = true; this.#isOnline = true;
//this.#forceUpdateTorrents(); this.#forceUpdateTorrents();
} }
//request.response = JSON.parse(e.target.responseText); //request.response = JSON.parse(e.target.responseText);
if (request.success != null) { if (request.success != null) {

View File

@@ -16,6 +16,10 @@ class trtorrent extends EventTarget {
nukeChildren(this.element.element_name); nukeChildren(this.element.element_name);
this.element.element_name.appendChild(document.createTextNode(this.name)); this.element.element_name.appendChild(document.createTextNode(this.name));
} }
#magnetLink;
get magnet() {
return this.#magnetLink;
}
#serverControls = {}; #serverControls = {};
addControl(srv, control) { addControl(srv, control) {
@@ -61,9 +65,10 @@ class trtorrent extends EventTarget {
} }
} }
constructor(hash) { constructor(hash, magnet = null) {
super(); super();
this.#hash = hash; this.#hash = hash;
this.#magnetLink = magnet;
// set up DOM structure // set up DOM structure
let element_name = document.createElement('div'); let element_name = document.createElement('div');