Merge remote-tracking branch 'origin/main'
continuous-integration/drone/push Build encountered an error Details

This commit is contained in:
Kieran 2024-01-09 16:40:51 +00:00
commit 8a5a089b4d
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
9 changed files with 47 additions and 133 deletions

View File

@ -1,5 +1,7 @@
import React from "react"; import React from "react";
import { trackEvent } from "@/Utils";
interface ErrorBoundaryState { interface ErrorBoundaryState {
hasError: boolean; hasError: boolean;
errorMessage?: string; errorMessage?: string;
@ -21,6 +23,7 @@ export default class ErrorBoundary extends React.Component<ErrorBoundaryProps, E
componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
console.error("Caught an error:", error, errorInfo); console.error("Caught an error:", error, errorInfo);
trackEvent("error", { error: error.message, errorInfo: JSON.stringify(errorInfo) });
} }
render() { render() {

View File

@ -1,12 +1,3 @@
.note-creator {
border: 1px solid transparent;
border-radius: 12px;
box-shadow: 0px 0px 6px 1px rgba(182, 108, 156, 0.3);
background:
linear-gradient(var(--gray-superdark), var(--gray-superdark)) padding-box,
linear-gradient(90deg, #ef9644, #fd7c49, #ff5e58, #ff3b70, #ff088e, #eb00b1, #c31ed5, #7b41f6) border-box;
}
.note-creator-modal .modal-body > div { .note-creator-modal .modal-body > div {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -86,17 +77,6 @@
height: 32px; height: 32px;
} }
.light .note-creator textarea {
background-color: var(--gray-superdark);
}
.light .note-creator {
box-shadow: 0px 0px 6px 1px rgba(182, 108, 156, 0.3);
background:
linear-gradient(var(--gray-superdark), var(--gray-superdark)) padding-box,
linear-gradient(90deg, #ef9644, #fd7c49, #ff5e58, #ff3b70, #ff088e, #eb00b1, #c31ed5, #7b41f6) border-box;
}
.note-creator-modal .rti--container { .note-creator-modal .rti--container {
background-color: unset !important; background-color: unset !important;
box-shadow: unset !important; box-shadow: unset !important;

View File

@ -5,12 +5,10 @@ import { EventBuilder, EventKind, NostrLink, NostrPrefix, TaggedNostrEvent, tryP
import classNames from "classnames"; import classNames from "classnames";
import { ClipboardEventHandler, DragEvent, useEffect } from "react"; import { ClipboardEventHandler, DragEvent, useEffect } from "react";
import { FormattedMessage, useIntl } from "react-intl"; import { FormattedMessage, useIntl } from "react-intl";
import { TagsInput } from "react-tag-input-component";
import AsyncButton from "@/Components/Button/AsyncButton"; import AsyncButton from "@/Components/Button/AsyncButton";
import { AsyncIcon } from "@/Components/Button/AsyncIcon"; import { AsyncIcon } from "@/Components/Button/AsyncIcon";
import CloseButton from "@/Components/Button/CloseButton"; import CloseButton from "@/Components/Button/CloseButton";
import { TrendingHashTagsLine } from "@/Components/Event/Create/TrendingHashTagsLine";
import { sendEventToRelays } from "@/Components/Event/Create/util"; import { sendEventToRelays } from "@/Components/Event/Create/util";
import Note from "@/Components/Event/EventComponent"; import Note from "@/Components/Event/EventComponent";
import Icon from "@/Components/Icons/Icon"; import Icon from "@/Components/Icons/Icon";
@ -22,7 +20,7 @@ import ProfileImage from "@/Components/User/ProfileImage";
import useEventPublisher from "@/Hooks/useEventPublisher"; import useEventPublisher from "@/Hooks/useEventPublisher";
import useLogin from "@/Hooks/useLogin"; import useLogin from "@/Hooks/useLogin";
import { useNoteCreator } from "@/State/NoteCreator"; import { useNoteCreator } from "@/State/NoteCreator";
import { appendDedupe, openFile, trackEvent } from "@/Utils"; import { openFile, trackEvent } from "@/Utils";
import useFileUpload from "@/Utils/Upload"; import useFileUpload from "@/Utils/Upload";
import { GetPowWorker } from "@/Utils/wasm"; import { GetPowWorker } from "@/Utils/wasm";
import { ZapTarget } from "@/Utils/Zapper"; import { ZapTarget } from "@/Utils/Zapper";
@ -636,7 +634,6 @@ export function NoteCreator() {
onDragLeave={handleDragLeave} onDragLeave={handleDragLeave}
onDrop={handleDrop} onDrop={handleDrop}
autoFocus autoFocus
className={classNames("textarea", { "textarea--focused": note.active })}
onChange={c => onChange(c)} onChange={c => onChange(c)}
value={note.note} value={note.note}
onFocus={() => note.update(v => (v.active = true))} onFocus={() => note.update(v => (v.active = true))}
@ -648,23 +645,6 @@ export function NoteCreator() {
/> />
{renderPollOptions()} {renderPollOptions()}
</div> </div>
<div className="flex flex-col g4">
<TagsInput
value={note.hashTags}
onChange={e => note.update(s => (s.hashTags = e))}
placeHolder={formatMessage({
defaultMessage: "Add up to 4 hashtags",
id: "AIgmDy",
})}
separators={["Enter", ","]}
/>
{note.hashTags.length > 4 && (
<small className="warning">
<FormattedMessage defaultMessage="Try to use less than 5 hashtags to stay on topic 🙏" id="d8gpCh" />
</small>
)}
<TrendingHashTagsLine onClick={t => note.update(s => (s.hashTags = appendDedupe(s.hashTags, [t])))} />
</div>
</> </>
)} )}
{uploader.progress.length > 0 && <FileUploadProgress progress={uploader.progress} />} {uploader.progress.length > 0 && <FileUploadProgress progress={uploader.progress} />}

View File

@ -1,37 +0,0 @@
import { FormattedMessage } from "react-intl";
import { ErrorOrOffline } from "@/Components/ErrorOrOffline";
import NostrBandApi from "@/External/NostrBand";
import useCachedFetch from "@/Hooks/useCachedFetch";
import { useLocale } from "@/IntlProvider";
export function TrendingHashTagsLine(props: { onClick: (tag: string) => void }) {
const { lang } = useLocale();
const api = new NostrBandApi();
const trendingHashtagsUrl = api.trendingHashtagsUrl(lang);
const storageKey = `nostr-band-${trendingHashtagsUrl}`;
const { data: hashtags, isLoading, error } = useCachedFetch(trendingHashtagsUrl, storageKey, data => data.hashtags);
if (error && !hashtags) return <ErrorOrOffline error={error} className="p" />;
if (isLoading || hashtags.length === 0) return null;
return (
<div className="flex flex-col g4">
<small>
<FormattedMessage defaultMessage="Popular Hashtags" id="ddd3JX" />
</small>
<div className="flex g4 flex-wrap">
{hashtags.slice(0, 5).map(a => (
<span
key={a.hashtag}
className="px-2 py-1 bg-dark rounded-full pointer nowrap"
onClick={() => props.onClick(a.hashtag)}>
#{a.hashtag}
</span>
))}
</div>
</div>
);
}

View File

@ -20,7 +20,7 @@ export const addEventToFuzzySearch = ev => {
if (ev.kind !== 0) { if (ev.kind !== 0) {
return; return;
} }
setTimeout(() => { queueMicrotask(() => {
const existing = profileTimestamps.get(ev.pubkey); const existing = profileTimestamps.get(ev.pubkey);
if (existing) { if (existing) {
if (existing > ev.created_at) { if (existing > ev.created_at) {
@ -42,7 +42,7 @@ export const addEventToFuzzySearch = ev => {
}; };
export const addCachedMetadataToFuzzySearch = (profile: CachedMetadata) => { export const addCachedMetadataToFuzzySearch = (profile: CachedMetadata) => {
setTimeout(() => { queueMicrotask(() => {
const existing = profileTimestamps.get(profile.pubkey); const existing = profileTimestamps.get(profile.pubkey);
if (existing) { if (existing) {
if (existing > profile.created) { if (existing > profile.created) {

View File

@ -56,24 +56,26 @@ export default function Index() {
const isStalker = !!stalker; const isStalker = !!stalker;
return ( return (
<div className="flex justify-center"> <ErrorBoundary>
<div className="w-full max-w-screen-xl"> <div className="flex justify-center">
<div className="flex flex-row"> <div className="w-full max-w-screen-xl">
<NavSidebar /> <div className="flex flex-row">
<div className="flex flex-1 flex-col pb-footer-height md:pb-0 w-full md:w-1/3"> <NavSidebar />
{!shouldHideHeader && <Header />} <div className="flex flex-1 flex-col pb-footer-height md:pb-0 w-full md:w-1/3">
<ErrorBoundary> {!shouldHideHeader && <Header />}
<Outlet /> <ErrorBoundary>
</ErrorBoundary> <Outlet />
</ErrorBoundary>
</div>
<RightColumn />
</div> </div>
<RightColumn /> <Toaster />
</div> </div>
<Toaster /> <LoginUnlock />
{isStalker && <StalkerModal id={id} />}
{!shouldHideFooter && <Footer />}
</div> </div>
<LoginUnlock /> </ErrorBoundary>
{isStalker && <StalkerModal id={id} />}
{!shouldHideFooter && <Footer />}
</div>
); );
} }

View File

@ -537,7 +537,11 @@ export function trackEvent(
props?: Record<string, string | boolean>, props?: Record<string, string | boolean>,
e?: { destination?: { url: string } }, e?: { destination?: { url: string } },
) { ) {
if (CONFIG.features.analytics && (LoginStore.snapshot().appData.item.preferences.telemetry ?? true)) { if (
!import.meta.env.DEV &&
CONFIG.features.analytics &&
(LoginStore.snapshot().appData.item.preferences.telemetry ?? true)
) {
fetch("https://analytics.v0l.io/api/event", { fetch("https://analytics.v0l.io/api/event", {
method: "POST", method: "POST",
headers: { headers: {

View File

@ -24,7 +24,7 @@
"0Azlrb": "Hallitse", "0Azlrb": "Hallitse",
"0BUTMv": "Etsi...", "0BUTMv": "Etsi...",
"0HFX0T": "Käytä tarkkaa sijaintia", "0HFX0T": "Käytä tarkkaa sijaintia",
"0MndVW": "Generic LNDHub wallet (BTCPayServer / Alby / LNBits)", "0MndVW": "Tavallinen LNDHub-lompakko (BTCPayServer / Alby / LNBits)",
"0jOEtS": "Virheellinen LNURL", "0jOEtS": "Virheellinen LNURL",
"0mch2Y": "nimi sisältää sallimattomia merkkejä", "0mch2Y": "nimi sisältää sallimattomia merkkejä",
"0siT4z": "Politiikka", "0siT4z": "Politiikka",
@ -151,8 +151,8 @@
"DrZqav": "Tietoja on oltava vähemmän kuin {limit} merkkiä", "DrZqav": "Tietoja on oltava vähemmän kuin {limit} merkkiä",
"DtYelJ": "Siirto", "DtYelJ": "Siirto",
"Dx4ey3": "Vaihda kaikki", "Dx4ey3": "Vaihda kaikki",
"E5ZIPD": "<big>{amount}</big> <small>sats</small>", "E5ZIPD": "<big>{amount}</big> <small>satsia</small>",
"EHqHsu": "Invoice / Lightning Address", "EHqHsu": "Lasku / Lightning-osoite",
"EJbFi7": "Etsi muistiinpanoja", "EJbFi7": "Etsi muistiinpanoja",
"ELbg9p": "Datantoimittajat", "ELbg9p": "Datantoimittajat",
"EQKRE4": "Näytä merkit profiilisivuilla", "EQKRE4": "Näytä merkit profiilisivuilla",
@ -230,7 +230,7 @@
"LR1XjT": "Liian lyhyt tappi", "LR1XjT": "Liian lyhyt tappi",
"LXxsbk": "Nimetön", "LXxsbk": "Nimetön",
"LgbKvU": "Kommentoi", "LgbKvU": "Kommentoi",
"LhLvRx": "Name must be between 8 and 15 characters", "LhLvRx": "Nimen tulee olla 8-15 merkkiä",
"LmdPXO": "Nostr-osoitetta ei voida tarkistaa", "LmdPXO": "Nostr-osoitetta ei voida tarkistaa",
"Lu5/Bj": "Avaa Zapstrissa", "Lu5/Bj": "Avaa Zapstrissa",
"Lw+I+J": "{n,plural,=0{{name} zappasi} other{{name} & {n} muuta zappasivat}}", "Lw+I+J": "{n,plural,=0{{name} zappasi} other{{name} & {n} muuta zappasivat}}",
@ -267,7 +267,7 @@
"P7nJT9": "Tänään yhteensä (UTC): {amount} satsia", "P7nJT9": "Tänään yhteensä (UTC): {amount} satsia",
"PCSt5T": "Asetukset", "PCSt5T": "Asetukset",
"PJeJFc": "Yhteenveto", "PJeJFc": "Yhteenveto",
"PXQ0z0": "Receiving to <b>{wallet}</b>", "PXQ0z0": "Vastaanotto osoitteeseen <b>{wallet}</b>",
"PamNxw": "Tuntematon tiedostotunniste: {name}", "PamNxw": "Tuntematon tiedostotunniste: {name}",
"Pe0ogR": "Teema", "Pe0ogR": "Teema",
"PrsIg7": "Reaktiot näytetään jokaisella sivulla, jos poistettu käytöstä reaktioita ei näytetä", "PrsIg7": "Reaktiot näytetään jokaisella sivulla, jos poistettu käytöstä reaktioita ei näytetä",
@ -307,7 +307,7 @@
"U1aPPi": "Lopeta kuunteleminen", "U1aPPi": "Lopeta kuunteleminen",
"UDYlxu": "Odottavat tilaukset", "UDYlxu": "Odottavat tilaukset",
"UJTWqI": "Poista releistäni", "UJTWqI": "Poista releistäni",
"ULXFfP": "Receive", "ULXFfP": "Vastaanota",
"UNjfWJ": "Tarkista kaikki releiltä saadut tapahtuman allekirjoitukset", "UNjfWJ": "Tarkista kaikki releiltä saadut tapahtuman allekirjoitukset",
"UT7Nkj": "Uusi keskustelu", "UT7Nkj": "Uusi keskustelu",
"UUPFlt": "Käyttäjien täytyy hyväksyä sisältövaroitus nähdäkseen viestisi sisällön.", "UUPFlt": "Käyttäjien täytyy hyväksyä sisältövaroitus nähdäkseen viestisi sisällön.",
@ -332,19 +332,19 @@
"X7xU8J": "nsec, npub, nip-05, hex, mnemonic", "X7xU8J": "nsec, npub, nip-05, hex, mnemonic",
"XECMfW": "Lähetä käyttötietoja", "XECMfW": "Lähetä käyttötietoja",
"XICsE8": "Tiedostojen isäntäpalvelut", "XICsE8": "Tiedostojen isäntäpalvelut",
"XPB8VV": "Alby wallet connection", "XPB8VV": "Alby-lompakon yhteys",
"XQiFEl": "Seuraa välittäjän tila", "XQiFEl": "Seuraa välittäjän tila",
"XXm7jJ": "Suositut tunnisteet", "XXm7jJ": "Suositut tunnisteet",
"XgWvGA": "Reaktiot", "XgWvGA": "Reaktiot",
"XhpBfA": "{site} on avoimen lähdekoodin projekti, jota intohimoiset ihmiset rakentavat vapaa-ajallaan, lahjoituksia arvostetaan suuresti", "XhpBfA": "{site} on avoimen lähdekoodin projekti, jota intohimoiset ihmiset rakentavat vapaa-ajallaan, lahjoituksia arvostetaan suuresti",
"Xnimz0": "Sending from <b>{wallet}</b>", "Xnimz0": "Lähettäminen osoitteesta <b>{wallet}</b>",
"Xopqkl": "Oletus zap-määräsi on {number} satsia, esimerkit on laskettu tämän mukaan.", "Xopqkl": "Oletus zap-määräsi on {number} satsia, esimerkit on laskettu tämän mukaan.",
"XrSk2j": "Lunasta", "XrSk2j": "Lunasta",
"Y7FG5M": "Image not available", "Y7FG5M": "Kuva ei ole saatavilla",
"YDURw6": "Palvelun URL", "YDURw6": "Palvelun URL",
"YR2I9M": "Ei avaimia, ei {app}, Avaimia ei voi palauttaa, ellet tee niistä varmuuskopiota. Se vie vain minuutin.", "YR2I9M": "Ei avaimia, ei {app}, Avaimia ei voi palauttaa, ellet tee niistä varmuuskopiota. Se vie vain minuutin.",
"YXA3AH": "Ota reaktiot käyttöön", "YXA3AH": "Ota reaktiot käyttöön",
"Yf3DwC": "Connect a wallet to send instant payments", "Yf3DwC": "Yhdistä lompakko välittömien maksujen lähettämistä varten",
"Z4BMCZ": "Anna pariliitoslause", "Z4BMCZ": "Anna pariliitoslause",
"ZKORll": "Aktivoi nyt", "ZKORll": "Aktivoi nyt",
"ZLmyG9": "Avustajat", "ZLmyG9": "Avustajat",
@ -355,8 +355,8 @@
"a7TDNm": "Viestit striimautuvat reaaliajassa yleiseen ja viestit-välilehteen", "a7TDNm": "Viestit striimautuvat reaaliajassa yleiseen ja viestit-välilehteen",
"aHje0o": "Nimi tai nimimerkki", "aHje0o": "Nimi tai nimimerkki",
"aMaLBK": "Tuetut laajennukset", "aMaLBK": "Tuetut laajennukset",
"aRex7h": "Paid {amount} sats, fee {fee} sats", "aRex7h": "Maksettu {amount} satsia, maksu {fee} satsia",
"aSGz4J": "Connect to your own LND node with Lightning Node Connect", "aSGz4J": "Yhdistä omaan LND-solmuun Lightning Node Connectin avulla",
"aWpBzj": "Näytä lisää", "aWpBzj": "Näytä lisää",
"b12Goz": "Mnemonic-lause", "b12Goz": "Mnemonic-lause",
"b5vAk0": "Käyttäjätunnuksesi toimii kuin lightning-osoite ja uudelleenohjaa valitsemaasi LNURLiin tai lightning-osoitteeseen", "b5vAk0": "Käyttäjätunnuksesi toimii kuin lightning-osoite ja uudelleenohjaa valitsemaasi LNURLiin tai lightning-osoitteeseen",
@ -373,7 +373,7 @@
"c35bj2": "Jos sinulla on kysymyksiä NIP-05-tilauksestasi, lähetä yksityisviesti {link}", "c35bj2": "Jos sinulla on kysymyksiä NIP-05-tilauksestasi, lähetä yksityisviesti {link}",
"c3g2hL": "Lähetä uudelleen", "c3g2hL": "Lähetä uudelleen",
"cFbU1B": "Käytätkö Albya? Mene {link} saadaksesi NWC-asetuksesi!", "cFbU1B": "Käytätkö Albya? Mene {link} saadaksesi NWC-asetuksesi!",
"cG/bKQ": "Native nostr wallet connection", "cG/bKQ": "Natiivi nostr-lompakkoyhteys",
"cHCwbF": "Valokuvaus", "cHCwbF": "Valokuvaus",
"cPIKU2": "Seuraa", "cPIKU2": "Seuraa",
"cQfLWb": "URL..", "cQfLWb": "URL..",
@ -389,7 +389,7 @@
"dOQCL8": "Näyttönimi", "dOQCL8": "Näyttönimi",
"ddd3JX": "Suosittuja tunnisteita", "ddd3JX": "Suosittuja tunnisteita",
"deEeEI": "Rekisteröi", "deEeEI": "Rekisteröi",
"djLctd": "Amount in sats", "djLctd": "Määrä satseissa",
"djNL6D": "Vain luku", "djNL6D": "Vain luku",
"dmsiLv": "{site} kehittäjille on määritetty oletusarvoinen Zap Poolin jako {n} , voit poistaa sen käytöstä milloin tahansa osoitteessa {link}.", "dmsiLv": "{site} kehittäjille on määritetty oletusarvoinen Zap Poolin jako {n} , voit poistaa sen käytöstä milloin tahansa osoitteessa {link}.",
"e61Jf3": "Tulossa pian", "e61Jf3": "Tulossa pian",
@ -434,7 +434,7 @@
"hniz8Z": "täällä", "hniz8Z": "täällä",
"hvFRBo": "Vuorovaikutus", "hvFRBo": "Vuorovaikutus",
"i/dBAR": "Zap-pooli", "i/dBAR": "Zap-pooli",
"i5gBFz": "Your sent and received payments will show up here.", "i5gBFz": "Lähetetyt ja vastaanotetut maksut näkyvät täällä.",
"iCqGww": "Reaktioita ({n})", "iCqGww": "Reaktioita ({n})",
"iEoXYx": "DeepL käännökset", "iEoXYx": "DeepL käännökset",
"iGT1eE": "Estä väärennettyjä tilejä jäljittelemästä sinua", "iGT1eE": "Estä väärennettyjä tilejä jäljittelemästä sinua",
@ -443,7 +443,7 @@
"iXPL0Z": "Ei voi kirjautua yksityisavaimella epäturvallisella yhteydellä, käytä Nostr-avainhallintaohjelmalaajennusta", "iXPL0Z": "Ei voi kirjautua yksityisavaimella epäturvallisella yhteydellä, käytä Nostr-avainhallintaohjelmalaajennusta",
"iYc3Ld": "Maksut", "iYc3Ld": "Maksut",
"ieGrWo": "Seuraa", "ieGrWo": "Seuraa",
"ipHVx5": "Generate Invoice", "ipHVx5": "Luo lasku",
"itPgxd": "Profiili", "itPgxd": "Profiili",
"izWS4J": "Lopeta seuraaminen", "izWS4J": "Lopeta seuraaminen",
"j9xbzF": "Jo varmistettu", "j9xbzF": "Jo varmistettu",
@ -498,7 +498,7 @@
"pI+77w": "Ladattavat varmuuskopiot Snort-välittäjältä", "pI+77w": "Ladattavat varmuuskopiot Snort-välittäjältä",
"pRess9": "ZapPooli", "pRess9": "ZapPooli",
"puLNUJ": "Kiinnitä", "puLNUJ": "Kiinnitä",
"pukxg/": "Payments", "pukxg/": "Maksut",
"pzTOmv": "Seuraajat", "pzTOmv": "Seuraajat",
"qD9EUF": "Sähköposti-silta Snort nostr-osoitteellesi", "qD9EUF": "Sähköposti-silta Snort nostr-osoitteellesi",
"qDwvZ4": "Tuntematon virhe", "qDwvZ4": "Tuntematon virhe",
@ -529,7 +529,7 @@
"tOdNiY": "Tumma", "tOdNiY": "Tumma",
"th5lxp": "Lähetä viesti osajoukolle kirjoitusvälittäjiäsi", "th5lxp": "Lähetä viesti osajoukolle kirjoitusvälittäjiäsi",
"thnRpU": "NIP-05-varmennuksen hankkiminen voi auttaa:", "thnRpU": "NIP-05-varmennuksen hankkiminen voi auttaa:",
"tj6kdX": "{sign} {amount} sats", "tj6kdX": "{sign} {amount} satsia",
"tjpYlr": "Välittäjämittarit", "tjpYlr": "Välittäjämittarit",
"ttxS0b": "Tukijamerkki", "ttxS0b": "Tukijamerkki",
"u+LyXc": "Vuorovaikutukset", "u+LyXc": "Vuorovaikutukset",

View File

@ -51,7 +51,7 @@ export default class SocialGraph {
if (event.kind !== 3) { if (event.kind !== 3) {
return; return;
} }
setTimeout(() => { queueMicrotask(() => {
try { try {
const author = ID(event.pubkey); const author = ID(event.pubkey);
const timestamp = event.created_at; const timestamp = event.created_at;
@ -116,15 +116,6 @@ export default class SocialGraph {
if (!this.usersByFollowDistance.has(distance)) { if (!this.usersByFollowDistance.has(distance)) {
this.usersByFollowDistance.set(distance, new Set()); this.usersByFollowDistance.set(distance, new Set());
} }
if (distance <= 2) {
/*
let unsub;
// get also profile events for profile search indexing
// eslint-disable-next-line prefer-const
unsub = PubSub.subscribe({ authors: [STR(user)], kinds: [0] }, () => unsub?.(), true);
// TODO subscribe once param?
*/
}
this.usersByFollowDistance.get(distance)?.add(user); this.usersByFollowDistance.get(distance)?.add(user);
// remove from higher distances // remove from higher distances
for (const d of this.usersByFollowDistance.keys()) { for (const d of this.usersByFollowDistance.keys()) {
@ -166,13 +157,6 @@ export default class SocialGraph {
} }
this.followedByUser.get(follower)?.add(followedUser); this.followedByUser.get(follower)?.add(followedUser);
if (this.followedByUser.get(this.root)?.has(follower)) {
/*
setTimeout(() => {
PubSub.subscribe({ authors: [STR(followedUser)], kinds: [0, 3] }, undefined, true);
}, 0);
*/
}
} }
removeFollower(unfollowedUser: UID, follower: UID) { removeFollower(unfollowedUser: UID, follower: UID) {
@ -236,7 +220,6 @@ export default class SocialGraph {
if (includeSelf) { if (includeSelf) {
set.add(user); set.add(user);
} }
//return PubSub.subscribe({ kinds: [3], authors: [user] }, callback);
return set; return set;
} }
@ -246,7 +229,6 @@ export default class SocialGraph {
for (const id of this.followersByUser.get(userId) || []) { for (const id of this.followersByUser.get(userId) || []) {
set.add(STR(id)); set.add(STR(id));
} }
//return PubSub.subscribe({ kinds: [3], '#p': [address] }, callback); // TODO this doesn't fire when a user is unfollowed
return set; return set;
} }
} }