mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
refactor: Improve error handling and retry logic in getSeedersAndPeers function
This commit is contained in:
parent
04a5dbb71d
commit
7a2b693397
1 changed files with 19 additions and 9 deletions
|
@ -6,17 +6,27 @@ type WebTorrentHealthData = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const webTorrentData = {
|
export const webTorrentData = {
|
||||||
async getSeedersAndPeers(magnet: string) {
|
async getSeedersAndPeers(magnet: string, retry = 0, timeout = 1500) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
WebTorrentHealth(magnet, (err: Error, data: WebTorrentHealthData) => {
|
WebTorrentHealth(
|
||||||
if (err) {
|
magnet,
|
||||||
return reject(err);
|
{ timeout },
|
||||||
|
(err: Error, data: WebTorrentHealthData) => {
|
||||||
|
if (err) {
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
const { peers, seeds } = data;
|
||||||
|
|
||||||
|
if ((!peers || !seeds) && retry < 3) {
|
||||||
|
return resolve(
|
||||||
|
webTorrentData.getSeedersAndPeers(magnet, retry + 1, timeout * 2)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return resolve({ peers, seeders: seeds });
|
||||||
}
|
}
|
||||||
|
);
|
||||||
const { peers, seeds } = data;
|
|
||||||
|
|
||||||
return resolve({ peers, seeders: seeds });
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue