mirror of
https://github.com/block-core/blockcore-notes.git
synced 2024-09-29 06:20:42 +00:00
More refactoring and cleanup
This commit is contained in:
parent
ed40b3b916
commit
fbb62d30bd
@ -18,7 +18,7 @@
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<app-relays [relays]="relayService.items2"></app-relays>
|
||||
<app-relays [relays]="relayService.items"></app-relays>
|
||||
|
||||
<!-- <mat-spinner></mat-spinner> -->
|
||||
</div>
|
@ -20,5 +20,5 @@
|
||||
</mat-accordion>
|
||||
</div>
|
||||
|
||||
<app-relays [relays]="relayService.items2"></app-relays>
|
||||
<app-relays [relays]="relayService.items"></app-relays>
|
||||
</div>
|
||||
|
@ -83,7 +83,7 @@ export class DataService {
|
||||
}
|
||||
|
||||
private getArrayFomattedRelayList() {
|
||||
return this.relayService.items2
|
||||
return this.relayService.items
|
||||
.filter((r) => r.public === true)
|
||||
.map((r) => {
|
||||
let relayEntry = ['r', r.url];
|
||||
@ -101,7 +101,7 @@ export class DataService {
|
||||
private getJsonFormattedRelayList() {
|
||||
let mappedRelays: any = {};
|
||||
|
||||
this.relayService.items2
|
||||
this.relayService.items
|
||||
.filter((r) => r.public)
|
||||
.map((r) => {
|
||||
mappedRelays[r.url] = {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { LoadMoreOptions, NostrEventDocument, NostrRelay, NostrRelayDocument, NostrRelaySubscription, QueryJob } from './interfaces';
|
||||
import { LoadMoreOptions, NostrRelay, NostrRelayDocument, NostrRelaySubscription, QueryJob } from './interfaces';
|
||||
import { Observable, BehaviorSubject } from 'rxjs';
|
||||
import { Event, Filter, Kind } from 'nostr-tools';
|
||||
import { EventService } from './event';
|
||||
@ -20,9 +20,7 @@ import { ArticleService } from './article';
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class RelayService {
|
||||
events: NostrEventDocument[] = [];
|
||||
|
||||
items2: NostrRelayDocument[] = [];
|
||||
items: NostrRelayDocument[] = [];
|
||||
|
||||
threadSubscription?: string;
|
||||
|
||||
@ -30,17 +28,6 @@ export class RelayService {
|
||||
|
||||
circleEventSubscription?: string;
|
||||
|
||||
#eventsChanged: BehaviorSubject<NostrEventDocument[]> = new BehaviorSubject<NostrEventDocument[]>(this.events);
|
||||
|
||||
#filteredEventsChanged: BehaviorSubject<NostrEventDocument[]> = new BehaviorSubject<NostrEventDocument[]>([]);
|
||||
|
||||
#threadedEventsChanged: BehaviorSubject<NostrEventDocument[]> = new BehaviorSubject<NostrEventDocument[]>([]);
|
||||
|
||||
#rootEventsChanged: BehaviorSubject<NostrEventDocument[]> = new BehaviorSubject<NostrEventDocument[]>([]);
|
||||
|
||||
#replyEventsChanged: BehaviorSubject<NostrEventDocument[]> = new BehaviorSubject<NostrEventDocument[]>([]);
|
||||
|
||||
// subs2: NostrRelaySubscription[] = [];
|
||||
subs: Map<string, NostrRelaySubscription> = new Map();
|
||||
|
||||
/** These are relay instances that have connection over WebSocket and holds a reference to database metadata for the relay. */
|
||||
@ -48,6 +35,8 @@ export class RelayService {
|
||||
|
||||
#relaysChanged: BehaviorSubject<NostrRelay[]> = new BehaviorSubject<NostrRelay[]>(this.relays);
|
||||
|
||||
workers: RelayType[] = [];
|
||||
|
||||
get relays$(): Observable<NostrRelay[]> {
|
||||
return this.#relaysChanged.asObservable();
|
||||
}
|
||||
@ -220,8 +209,6 @@ export class RelayService {
|
||||
});
|
||||
}
|
||||
|
||||
workers: RelayType[] = [];
|
||||
|
||||
terminate(url: string) {
|
||||
const worker = this.workers.find((r) => r.url == url);
|
||||
|
||||
@ -239,7 +226,7 @@ export class RelayService {
|
||||
|
||||
async setRelayType(url: string, type: number) {
|
||||
const relay = await this.db.storage.getRelay(url);
|
||||
const item = this.items2.find((r) => r.url == url);
|
||||
const item = this.items.find((r) => r.url == url);
|
||||
|
||||
if (relay) {
|
||||
relay.type = type;
|
||||
@ -250,7 +237,7 @@ export class RelayService {
|
||||
|
||||
async setRelayPublic(url: string, publicRelay: boolean) {
|
||||
const relay = await this.db.storage.getRelay(url);
|
||||
const item = this.items2.find((r) => r.url == url);
|
||||
const item = this.items.find((r) => r.url == url);
|
||||
|
||||
if (relay) {
|
||||
relay.public = publicRelay;
|
||||
@ -262,7 +249,7 @@ export class RelayService {
|
||||
async setRelayStatus(url: string, status: number) {
|
||||
console.log('setRelayStatus:', status);
|
||||
const relay = await this.db.storage.getRelay(url);
|
||||
const item = this.items2.find((r) => r.url == url);
|
||||
const item = this.items.find((r) => r.url == url);
|
||||
|
||||
if (relay) {
|
||||
relay.status = status;
|
||||
@ -274,7 +261,7 @@ export class RelayService {
|
||||
async setRelayEnabled(url: string, enabled: boolean) {
|
||||
console.log('setRelayEnabled:', enabled);
|
||||
const relay = await this.db.storage.getRelay(url);
|
||||
const item = this.items2.find((r) => r.url == url);
|
||||
const item = this.items.find((r) => r.url == url);
|
||||
|
||||
if (relay) {
|
||||
relay.enabled = enabled;
|
||||
@ -284,7 +271,7 @@ export class RelayService {
|
||||
}
|
||||
|
||||
setRelayTimeout(url: string, status: number) {
|
||||
const item = this.items2.find((r) => r.url == url);
|
||||
const item = this.items.find((r) => r.url == url);
|
||||
|
||||
if (item) {
|
||||
if (item.timeouts == null) {
|
||||
@ -296,7 +283,7 @@ export class RelayService {
|
||||
}
|
||||
|
||||
setRelayCounter(url: string) {
|
||||
const item = this.items2.find((r) => r.url == url);
|
||||
const item = this.items.find((r) => r.url == url);
|
||||
|
||||
if (item) {
|
||||
if (item.eventcount == null) {
|
||||
@ -309,7 +296,7 @@ export class RelayService {
|
||||
|
||||
async setRelayNIP11(url: string, data: any) {
|
||||
const relay = await this.db.storage.getRelay(url);
|
||||
const item = this.items2.find((r) => r.url == url);
|
||||
const item = this.items.find((r) => r.url == url);
|
||||
|
||||
if (relay) {
|
||||
if (data.error) {
|
||||
@ -327,7 +314,7 @@ export class RelayService {
|
||||
}
|
||||
|
||||
async addRelay(url: string, read: boolean, write: boolean) {
|
||||
let relay = this.items2.find((r) => r.url == url);
|
||||
let relay = this.items.find((r) => r.url == url);
|
||||
let type = 1; // Read/Write by default.
|
||||
|
||||
if (write && !read) {
|
||||
@ -345,7 +332,7 @@ export class RelayService {
|
||||
};
|
||||
|
||||
this.db.storage.putRelay(relay);
|
||||
this.items2.push(relay);
|
||||
this.items.push(relay);
|
||||
} else {
|
||||
if (relay.enabled == null) {
|
||||
relay.enabled = true;
|
||||
@ -366,7 +353,7 @@ export class RelayService {
|
||||
|
||||
async deleteRelays(keepRelays: string[]) {
|
||||
// Relays to remove
|
||||
const relaysToRemove = this.items2.filter((r) => keepRelays.indexOf(r.url) == -1);
|
||||
const relaysToRemove = this.items.filter((r) => keepRelays.indexOf(r.url) == -1);
|
||||
|
||||
console.log('relaysToRemove:', relaysToRemove);
|
||||
|
||||
@ -383,7 +370,7 @@ export class RelayService {
|
||||
}
|
||||
|
||||
// Relays to keep
|
||||
this.items2 = this.items2.filter((r) => keepRelays.indexOf(r.url) > -1);
|
||||
this.items = this.items.filter((r) => keepRelays.indexOf(r.url) > -1);
|
||||
|
||||
// await this.db.storage.deleteRelays();
|
||||
|
||||
@ -395,8 +382,6 @@ export class RelayService {
|
||||
// this.items2 = [];
|
||||
}
|
||||
|
||||
// currentDisplayedContacts: any;
|
||||
|
||||
async processEvent(response: RelayResponse) {
|
||||
const originalEvent = response.data;
|
||||
const event = this.eventService.processEvent(originalEvent);
|
||||
@ -567,28 +552,8 @@ export class RelayService {
|
||||
this.profileService.follow(publicKey);
|
||||
}
|
||||
}
|
||||
|
||||
// this.openImportSheet(dialogData);
|
||||
}
|
||||
}
|
||||
|
||||
// }
|
||||
|
||||
// // Sometimes we might discover newer or older profiles, make sure we only update UI dialog if newer.
|
||||
// if (this.discoveredProfileDate < data.created_at) {
|
||||
// this.discoveredProfileDate = data.created_at;
|
||||
// const following = this.profileService.profile?.following;
|
||||
// const pubkeys = data.tags.map((t: any[]) => t[1]);
|
||||
// console.log('FOLLOWING:' + JSON.stringify(following));
|
||||
// if (!following) {
|
||||
// const dialogData: any = { pubkeys: pubkeys, pubkey: data.pubkey };
|
||||
// if (data.content) {
|
||||
// dialogData.relays = JSON.parse(data.content);
|
||||
// dialogData.relaysCount = Object.keys(dialogData.relays).length;
|
||||
// }
|
||||
// this.openImportSheet(dialogData);
|
||||
// }
|
||||
// }
|
||||
} else {
|
||||
const existingContacts = await this.db.storage.getContacts(event.pubkey);
|
||||
|
||||
@ -763,61 +728,6 @@ export class RelayService {
|
||||
}
|
||||
}
|
||||
|
||||
/** Add an in-memory instance of relay and get stored metadata for it. */
|
||||
// async addRelay(relay: NostrRelay) {
|
||||
// const index = this.relays.findIndex((r) => r.url == relay.url);
|
||||
|
||||
// if (index == -1) {
|
||||
// this.relays.push(relay);
|
||||
// } else {
|
||||
// // First initiate a close and then replace it.
|
||||
// // Attempting to not close existing connections, there is no point in doing so.
|
||||
// // this.relays[index].close();
|
||||
// this.relays[index] = relay;
|
||||
// }
|
||||
|
||||
// try {
|
||||
// const url = new URL(relay.url);
|
||||
// const infoUrl = `https://${url.hostname}`;
|
||||
|
||||
// const rawResponse = await fetch(infoUrl, {
|
||||
// method: 'GET',
|
||||
// mode: 'cors',
|
||||
// headers: {
|
||||
// Accept: 'application/nostr+json',
|
||||
// },
|
||||
// });
|
||||
|
||||
// if (rawResponse.status === 200) {
|
||||
// const content = await rawResponse.json();
|
||||
|
||||
// relay.metadata.nip11 = content;
|
||||
// relay.metadata.error = undefined;
|
||||
// } else {
|
||||
// relay.metadata.error = `Unable to get NIP-11 data. Status: ${rawResponse.statusText}`;
|
||||
// }
|
||||
// } catch (err) {
|
||||
// console.warn(err);
|
||||
// relay.metadata.error = `Unable to get NIP-11 data. Status: ${err}`;
|
||||
// }
|
||||
|
||||
// await this.putRelayMetadata(relay.metadata);
|
||||
// }
|
||||
|
||||
// async putRelayMetadata(metadata: NostrRelayDocument) {
|
||||
// // Persist the latest NIP11 metadata on the NostrRelayDocument.
|
||||
// await this.table.put(metadata);
|
||||
// this.relaysUpdated();
|
||||
// }
|
||||
|
||||
#updated() {
|
||||
this.#eventsChanged.next(this.events);
|
||||
this.#filteredEventsChanged.next(this.events);
|
||||
this.#threadedEventsChanged.next(this.events);
|
||||
this.#rootEventsChanged.next(this.events);
|
||||
this.#replyEventsChanged.next(this.events);
|
||||
}
|
||||
|
||||
/** Takes relay in the format used for extensions and adds to persistent storage. */
|
||||
async appendRelays(relays: any) {
|
||||
let preparedRelays = relays;
|
||||
@ -845,7 +755,7 @@ export class RelayService {
|
||||
}
|
||||
|
||||
async deleteRelay(url: string) {
|
||||
const index = this.items2.findIndex((r) => r.url == url);
|
||||
const index = this.items.findIndex((r) => r.url == url);
|
||||
|
||||
if (index == -1) {
|
||||
return;
|
||||
@ -855,7 +765,7 @@ export class RelayService {
|
||||
worker?.terminate();
|
||||
|
||||
await this.db.storage.deleteRelay(url);
|
||||
this.items2.splice(index, 1);
|
||||
this.items.splice(index, 1);
|
||||
}
|
||||
|
||||
connectedRelays() {
|
||||
@ -899,7 +809,7 @@ export class RelayService {
|
||||
// Spin up all the write-only relays temporarily when kind is contacts or metadata.
|
||||
if (action === 'publish') {
|
||||
// Get all relays that are write-only
|
||||
const filteredRelays = this.items2.filter((r) => r.type == 3);
|
||||
const filteredRelays = this.items.filter((r) => r.type == 3);
|
||||
|
||||
for (let index = 0; index < filteredRelays.length; index++) {
|
||||
const relay = filteredRelays[index];
|
||||
@ -922,8 +832,8 @@ export class RelayService {
|
||||
}
|
||||
|
||||
createRelayWorkers() {
|
||||
for (let index = 0; index < this.items2.length; index++) {
|
||||
const relay = this.items2[index];
|
||||
for (let index = 0; index < this.items.length; index++) {
|
||||
const relay = this.items[index];
|
||||
|
||||
if (relay.enabled && relay.type < 3) {
|
||||
this.createRelayWorker(relay.url);
|
||||
@ -932,10 +842,10 @@ export class RelayService {
|
||||
}
|
||||
|
||||
async initialize() {
|
||||
this.items2 = await this.db.storage.getRelays();
|
||||
this.items = await this.db.storage.getRelays();
|
||||
|
||||
// If there are no relay metatadata in database, get it from extension or default
|
||||
if (this.items2.length == 0) {
|
||||
if (this.items.length == 0) {
|
||||
let relays = await this.nostr.relays();
|
||||
|
||||
// First append whatever the extension give us of relays.
|
||||
|
Loading…
Reference in New Issue
Block a user