use simpler nostr-tools instead of ndk

This commit is contained in:
github-tijlxyz 2023-10-11 22:26:31 +02:00
parent 216b2aa70b
commit 1bb9f22539
11 changed files with 122 additions and 433 deletions

View File

@ -7,7 +7,7 @@ services:
context: .
dockerfile: Dockerfile
ports:
- 3335:3334
- 3334:3334
volumes:
- ./whitelist.json:/app/whitelist.json
- ./khatru-badgern-db:/app/khatru-badgern-db

View File

@ -5,7 +5,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{.Relaydescription}}">
<script src="./src/lib/main.ts" type="module"></script>
<script src="./src/main.ts" type="module"></script>
<title>{{.Relayname}} | {{.Pagetitle}}</title>
</head>

View File

@ -9,12 +9,10 @@
"preview": "vite preview"
},
"devDependencies": {
"@nostr-dev-kit/ndk": "^1.3.1",
"nostr-tools": "^1.16.0",
"typescript": "^5.0.2",
"vite": "^4.4.5"
},
"dependencies": {
"@nostr-dev-kit/ndk-cache-dexie": "^1.3.2"
"nostr-tools": "^1.16.0"
}
}

65
ui/src/actions.ts Normal file
View File

@ -0,0 +1,65 @@
import { nip19 } from 'nostr-tools';
import { relay } from './main';
export function loadActions() {
// Handle removefromrelay buttons
document.querySelectorAll(".removefromrelay").forEach((btn) => {
btn.addEventListener('click', () => {
const arg = btn.getAttribute('data-actionarg');
if (arg) {
const jsonArg = JSON.parse(arg);
if (jsonArg) removeFromRelay(jsonArg);
};
});
});
//handle inviteuser buttons
document.querySelectorAll(".inviteuser").forEach((btn) => {
btn.addEventListener('click', () => {
inviteUser();
});
});
async function inviteUser() {
var input = (<HTMLInputElement>document.getElementById('inviteuser-input')).value;
let p = input;
if (input.startsWith("npub")) {
let h = nip19.decode(input).data;
if (typeof h == 'string') {
p = h;
};
};
let event = {
kind: 20201,
created_at: Math.floor(Date.now() / 1000),
content: '',
tags: [['p', p]],
};
// @ts-ignore for window.nostr
const signedEvent = await window.nostr.signEvent(event);
await relay.publish(signedEvent).then(() => {
setTimeout(() => window.location.href = "", 300);
});
};
async function removeFromRelay(tags: string[][]) {
let event = {
kind: 20202,
created_at: Math.floor(Date.now() / 1000),
content: '',
tags,
};
// @ts-ignore for window.nostr
const signedEvent = await window.nostr.signEvent(event);
await relay.publish(signedEvent).then(() => {
setTimeout(() => window.location.href = "", 300);
});
};
};

View File

@ -1,85 +0,0 @@
import { NDKEvent, NDKRelay, NDKRelaySet } from '@nostr-dev-kit/ndk';
import { nip19 } from 'nostr-tools';
import { ndk, relayUrl } from './main';
// Handle Buttons
export function loadActions() {
document.querySelectorAll(".removefromrelay").forEach((btn) => {
btn.addEventListener('click', () => {
const arg = btn.getAttribute('data-actionarg');
if (arg) {
const jsonArg = JSON.parse(arg);
if (jsonArg) {
removeFromRelay(jsonArg)
}
};
})
})
document.querySelectorAll(".inviteuser").forEach((btn) => {
btn.addEventListener('click', () => {
inviteUser();
})
})
async function inviteUser() {
// only publish to the relay in question, dont know why this needs so much code
let specificRelay = new Set<NDKRelay>
specificRelay.add(new NDKRelay(relayUrl))
const relaySet = new NDKRelaySet(specificRelay, ndk);
relaySet.relays.forEach(async (relay) => {
await relay.connect().catch((err) => {
console.log("RELAY CONNECT ERROR");
console.error(err);
});
relay.on("connect", () => {
console.log(relay.url, "connected");
});
});
var input = (<HTMLInputElement>document.getElementById('inviteuser-input')).value;
let p = input;
if (input.startsWith("npub")) {
let h = nip19.decode(input).data;
if (typeof h == 'string') {
p = h;
}
}
const event = new NDKEvent(ndk)
event.kind = 20201;
event.tags = [['p', p]];
event.content = "";
const relays = await event.publish(relaySet);
relays.forEach(() => {
setTimeout(() => {
window.location.href = ""
}, 128)
});
}
async function removeFromRelay(tags: string[][]) {
// only publish to the relay in question, dont know why this needs so much code
let specificRelay = new Set<NDKRelay>
specificRelay.add(new NDKRelay(relayUrl))
const relaySet = new NDKRelaySet(specificRelay, ndk);
relaySet.relays.forEach(async (relay) => {
await relay.connect().catch((err) => {
console.log("RELAY CONNECT ERROR");
console.error(err);
});
relay.on("connect", () => {
console.log(relay.url, "connected");
});
});
const event = new NDKEvent(ndk)
event.kind = 20202;
event.tags = tags;
event.content = "";
const relays = await event.publish();
relays.forEach(() => {
setTimeout(() => {
window.location.href = ""
}, 128)
});
}
}

View File

@ -1,41 +0,0 @@
import NDK, { NDKNip07Signer } from '@nostr-dev-kit/ndk';
import '../style.css';
import { loadUsernames } from './user.js';
import { loadActions } from './actions.js';
// import NDKCacheAdapterDexie from "@nostr-dev-kit/ndk-cache-dexie";
export let ndk: NDK;
export let relayUrl: string;
async function load() {
// get relay websocket url
var loc = window.location;
if (loc.protocol === "https:") {
relayUrl = "wss:";
} else {
relayUrl = "ws:";
}
relayUrl += "//" + loc.host;
// init NDK
// const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'khatru-invite-ndk-cache' })
const nip07signer = new NDKNip07Signer()
ndk = new NDK({
explicitRelayUrls: [
relayUrl,
"wss://nos.lol",
"wss://nostr-pub.wellorder.net",
], signer: nip07signer
});
await ndk.connect();
loadActions();
loadUsernames();
}
// load
load();

View File

@ -1,19 +0,0 @@
// import { ndk } from "./main.js";
export async function loadUsernames() {
/*
try to get username from other realy for each user
that isn't loaded by the server
*/
// let b = document.querySelectorAll(".user");
// b.forEach(async (e) => {
// if (e.innerHTML.startsWith("npub1")) {
// let npub1 = e.innerHTML;
// let u = ndk.getUser({ npub: npub1 });
// let p = await u.fetchProfile();
// if (p?.name) e.innerHTML = p.name;
// if (p?.displayName) e.innerHTML = p.displayName;
// }
// });
}

34
ui/src/main.ts Normal file
View File

@ -0,0 +1,34 @@
import './style.css';
import { Relay, relayInit } from 'nostr-tools';
import { loadActions } from './actions';
export let relayUrl = '';
export let relay: Relay;
window.onload = function () {
setTimeout(() => {
// get relay websocket url
relayUrl = '';
var loc = window.location;
if (loc.protocol === "https:") {
relayUrl = "wss:";
} else {
relayUrl = "ws:";
}
relayUrl += "//" + loc.host;
// init relay connection
relay = relayInit(relayUrl);
relay.on('connect', () => {
console.log(`connected to ${relay.url}`);
});
relay.on('error', () => {
console.log(`failed to connect to ${relay.url}`);
});
relay.connect();
//
loadActions();
}, 5);
};

View File

@ -6,26 +6,15 @@
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
// added
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
/* Bundler mode */
// "moduleResolution": "Bundler",
// "allowImportingTsExtensions": true,
"noEmit": true,
"allowJs": true,
"paths": {
"lib/*": ["./src/lib/*"],
},
/* Linting */
"strict": false,
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true

View File

@ -129,67 +129,17 @@
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9"
integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==
"@noble/hashes@^1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1":
"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39"
integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==
"@noble/secp256k1@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-2.0.0.tgz#c214269d45e0233ad6a8ae5104655453636e253d"
integrity sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==
"@nostr-dev-kit/ndk-cache-dexie@^1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@nostr-dev-kit/ndk-cache-dexie/-/ndk-cache-dexie-1.3.2.tgz#5a1a6ac00b46d086656568d4db241a9202f79894"
integrity sha512-sC5IGLuKymRxoJHc/BiHOxuRukHgXutHCspQxeuM0YkfijT3raWRNvrClFoGhgWMV/1BTVgQ8aom8d/FzDeglw==
dependencies:
"@nostr-dev-kit/ndk" "1.3.2"
debug "^4.3.4"
dexie "^3.2.4"
nostr-tools "^1.14.0"
typescript-lru-cache "^2.0.0"
"@nostr-dev-kit/ndk@1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@nostr-dev-kit/ndk/-/ndk-1.3.2.tgz#22aab1c3706a142e4f6a7b691ee26419d7af85f2"
integrity sha512-8uXYGQWiYJE4nbd+dSOuFwLR55mRSkhCaxwBLhM7TBakz/bj0AcvhISgD3NxwVzPH/xLns0tyb17K3xoxODURQ==
dependencies:
"@noble/hashes" "^1.3.1"
"@noble/secp256k1" "^2.0.0"
"@scure/base" "^1.1.1"
debug "^4.3.4"
eventemitter3 "^5.0.1"
light-bolt11-decoder "^3.0.0"
node-fetch "^3.3.1"
nostr-tools "^1.15.0"
typescript-lru-cache "^2.0.0"
utf8-buffer "^1.0.0"
websocket-polyfill "^0.0.3"
"@nostr-dev-kit/ndk@^1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@nostr-dev-kit/ndk/-/ndk-1.3.1.tgz#65869098ba2145ebcbdac8c2a0a1c92808d74715"
integrity sha512-BVqhL2qU0kFL0YHTXLBbzPSvmGbY/ivL9M4k7ZmqYHHCd3Vwd9eMAgxq4kkCsHc4KoSeOB3NCLFKdjLdUB+5Pg==
dependencies:
"@noble/hashes" "^1.3.1"
"@noble/secp256k1" "^2.0.0"
"@scure/base" "^1.1.1"
debug "^4.3.4"
eventemitter3 "^5.0.1"
light-bolt11-decoder "^3.0.0"
node-fetch "^3.3.1"
nostr-tools "^1.15.0"
typescript-lru-cache "^2.0.0"
utf8-buffer "^1.0.0"
websocket-polyfill "^0.0.3"
"@scure/base@1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
"@scure/base@^1.1.1", "@scure/base@~1.1.0":
"@scure/base@~1.1.0":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f"
integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==
@ -211,71 +161,6 @@
"@noble/hashes" "~1.3.0"
"@scure/base" "~1.1.0"
bufferutil@^4.0.1:
version "4.0.7"
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad"
integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==
dependencies:
node-gyp-build "^4.3.0"
d@1, d@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
dependencies:
es5-ext "^0.10.50"
type "^1.0.1"
data-uri-to-buffer@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
debug@^2.2.0:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
dexie@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.2.4.tgz#b22a9729be1102acb2eee16102ea6e2bc76454cf"
integrity sha512-VKoTQRSv7+RnffpOJ3Dh6ozknBqzWw/F3iqMdsZg958R0AS8AnY9x9d1lbwENr0gzeGJHXKcGhAMRaqys6SxqA==
es5-ext@^0.10.35, es5-ext@^0.10.50:
version "0.10.62"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
dependencies:
es6-iterator "^2.0.3"
es6-symbol "^3.1.3"
next-tick "^1.1.0"
es6-iterator@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
dependencies:
d "1"
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
dependencies:
d "^1.0.1"
ext "^1.1.2"
esbuild@^0.18.10:
version "0.18.20"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
@ -304,90 +189,17 @@ esbuild@^0.18.10:
"@esbuild/win32-ia32" "0.18.20"
"@esbuild/win32-x64" "0.18.20"
eventemitter3@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
ext@^1.1.2:
version "1.7.0"
resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
dependencies:
type "^2.7.2"
fetch-blob@^3.1.2, fetch-blob@^3.1.4:
version "3.2.0"
resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9"
integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==
dependencies:
node-domexception "^1.0.0"
web-streams-polyfill "^3.0.3"
formdata-polyfill@^4.0.10:
version "4.0.10"
resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
dependencies:
fetch-blob "^3.1.2"
fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
is-typedarray@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
light-bolt11-decoder@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz#f644576120426c9ef65621bde254f11016055044"
integrity sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==
dependencies:
"@scure/base" "1.1.1"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
nanoid@^3.3.6:
version "3.3.6"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
next-tick@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
node-domexception@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
node-fetch@^3.3.1:
version "3.3.2"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
dependencies:
data-uri-to-buffer "^4.0.0"
fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
node-gyp-build@^4.3.0:
version "4.6.1"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e"
integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==
nostr-tools@^1.14.0, nostr-tools@^1.15.0, nostr-tools@^1.16.0:
nostr-tools@^1.16.0:
version "1.16.0"
resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-1.16.0.tgz#5867f1d8bd055a5a3b27aadb199457dceb244314"
integrity sha512-sx/aOl0gmkeHVoIVbyOhEQhzF88NsrBXMC8bsjhPASqA6oZ8uSOAyEGgRLMfC3SKgzQD5Gr6KvDoAahaD6xKcg==
@ -425,87 +237,18 @@ source-map-js@^1.0.2:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
tstl@^2.0.7:
version "2.5.13"
resolved "https://registry.yarnpkg.com/tstl/-/tstl-2.5.13.tgz#a5a5d27b79a12767e46a08525b3e045c5cdb1180"
integrity sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==
type@^1.0.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
type@^2.7.2:
version "2.7.2"
resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
typedarray-to-buffer@^3.1.5:
version "3.1.5"
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
dependencies:
is-typedarray "^1.0.0"
typescript-lru-cache@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/typescript-lru-cache/-/typescript-lru-cache-2.0.0.tgz#d4ad0f071ab51987b088a57c3c502d7dd62dee07"
integrity sha512-Jp57Qyy8wXeMkdNuZiglE6v2Cypg13eDA1chHwDG6kq51X7gk4K7P7HaDdzZKCxkegXkVHNcPD0n5aW6OZH3aA==
typescript@^5.0.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
utf-8-validate@^5.0.2:
version "5.0.10"
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2"
integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==
dependencies:
node-gyp-build "^4.3.0"
utf8-buffer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/utf8-buffer/-/utf8-buffer-1.0.0.tgz#457e7d848d4d9cd873772b710d150565f6e543d9"
integrity sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==
vite@^4.4.5:
version "4.4.9"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d"
integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==
version "4.4.11"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.11.tgz#babdb055b08c69cfc4c468072a2e6c9ca62102b0"
integrity sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==
dependencies:
esbuild "^0.18.10"
postcss "^8.4.27"
rollup "^3.27.1"
optionalDependencies:
fsevents "~2.3.2"
web-streams-polyfill@^3.0.3:
version "3.2.1"
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6"
integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==
websocket-polyfill@^0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz#7321ada0f5f17516290ba1cb587ac111b74ce6a5"
integrity sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==
dependencies:
tstl "^2.0.7"
websocket "^1.0.28"
websocket@^1.0.28:
version "1.0.34"
resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111"
integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==
dependencies:
bufferutil "^4.0.1"
debug "^2.2.0"
es5-ext "^0.10.50"
typedarray-to-buffer "^3.1.5"
utf-8-validate "^5.0.2"
yaeti "^0.0.6"
yaeti@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577"
integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==

View File

@ -23,7 +23,10 @@ func whitelistRejecter(ctx context.Context, evt *nostr.Event) (reject bool, msg
return true, "You are not invited to this relay"
}
// 20201 = user invites new user
/*
kind 20201
invited/whitelisted user invites new user
*/
if evt.Kind == 20201 {
pTags := evt.Tags.GetAll([]string{"p"})
for _, tag := range pTags {
@ -35,9 +38,11 @@ func whitelistRejecter(ctx context.Context, evt *nostr.Event) (reject bool, msg
}
}
// 20202
// p tag = user removes user they invited or admin removes user
// e tag = admin removes event
/*
kind 20202
p tag = user removes user they invited OR admin removes user
e tag = admin removes event
*/
if evt.Kind == 20202 {
pTags := evt.Tags.GetAll([]string{"p"})
for _, tag := range pTags {
@ -62,7 +67,7 @@ func whitelistRejecter(ctx context.Context, evt *nostr.Event) (reject bool, msg
events, _ := db.QueryEvents(ctx, filter)
for ev := range events {
log.Println("deleting evemt", ev.ID)
log.Println("deleting event", ev.ID)
err := db.DeleteEvent(ctx, ev)
if err != nil {
log.Println("error while deleting event", err)