diff --git a/src/script.js b/src/script.js
index 25db9c0..caf8c93 100644
--- a/src/script.js
+++ b/src/script.js
@@ -176,26 +176,60 @@ document.addEventListener('DOMContentLoaded', () => {
let failureCount = 0;
relayUrls.forEach((url) => {
- for (const event of loadedEvents) {
- try {
- const success = pool.publish([url], event); // Publish event to relay
- if (success) {
- successCount++;
- console.log(`Event broadcasted successfully to ${url}`);
- statusDiv.innerHTML += `
Event broadcasted successfully to ${url}`;
- } else {
- failureCount++;
- console.error(`Relay ${url} rejected the event.`);
- statusDiv.innerHTML += `
Relay ${url} rejected the event.`;
+ try {
+ const sub = pool.sub([url], [filter]);
+
+ subscriptions.push(sub);
+
+ sub.on('event', (event) => {
+ if (!eventIds.has(event.id)) {
+ switch (event.kind) {
+ case 0:
+ console.log('Profile Metadata captured:', event);
+ break;
+ case 2:
+ console.log('Relay Recommendation captured:', event);
+ break;
+ case 3:
+ console.log('Contact List captured:', event);
+ break;
+ case 4:
+ console.log('Encrypted DM captured:', event);
+ break;
+ case 30023:
+ console.log('Long-Form Content captured:', event);
+ break;
+ default:
+ console.log('Other event captured:', event);
+ }
+ collectedEvents.push(event); // Store the raw event data
+ eventIds.add(event.id);
}
- } catch (err) {
- failureCount++;
- console.error(`Broadcast failed for ${url}:`, err);
- statusDiv.innerHTML += `
Broadcast failed for ${url}: ${err.message}`;
- }
+ });
+
+ sub.on('eose', () => {
+ eoseTracker[url] = true;
+ console.log(`EOSE received from ${url}`);
+ statusDiv.innerHTML += `
EOSE received from ${url}`;
+ checkCompletion();
+ });
+
+ sub.on('error', (err) => {
+ console.error(`Error on ${url}:`, err);
+ statusDiv.innerHTML += `
Error on ${url}: ${err.message}`;
+ // Mark the relay as complete to avoid stalling collection
+ eoseTracker[url] = true;
+ checkCompletion();
+ });
+ } catch (err) {
+ console.error(`Subscription failed for ${url}:`, err);
+ statusDiv.innerHTML += `
Subscription failed for ${url}: ${err.message}`;
+ // Mark the relay as complete to avoid stalling collection
+ eoseTracker[url] = true;
+ checkCompletion();
}
});
-
+
pool.close();
statusDiv.innerHTML += `
Broadcast complete: ${successCount} success(es), ${failureCount} failure(s).`;
}