Bug fixes

This commit is contained in:
Kieran 2024-02-22 15:20:37 +00:00
parent 27b2a8b71a
commit 3641cadd0d
8 changed files with 88 additions and 204 deletions

View File

@ -4,7 +4,6 @@
"dependencies": {
"@emoji-mart/data": "^1.1.2",
"@emoji-mart/react": "^1.1.1",
"@getalby/bitcoin-connect-react": "^1.1.0",
"@noble/curves": "^1.2.0",
"@radix-ui/react-collapsible": "^1.0.3",
"@radix-ui/react-dialog": "^1.0.4",

View File

@ -21,8 +21,13 @@ export enum StreamState {
}
export const defaultRelays = {
//"ws://localhost:7777": { read: true, write: true },
"wss://relay.snort.social": { read: true, write: true },
"wss://nos.lol": { read: true, write: true },
"wss://relay.damus.io": { read: true, write: true },
"wss://nostr.wine": { read: true, write: true },
};
export const DefaultProviderUrl = "https://api.zap.stream/api/nostr/";
//export const DefaultProviderUrl = "http://localhost:5295/api/nostr/";

View File

@ -1,5 +0,0 @@
import { Button as AlbyZapsButton } from "@getalby/bitcoin-connect-react";
export default function AlbyButton() {
return <AlbyZapsButton />;
}

View File

@ -9,6 +9,7 @@ import { StreamEditor, StreamEditorProps } from "./stream-editor";
import Spinner from "./spinner";
import AsyncButton from "./async-button";
import { unwrap } from "@snort/shared";
import { useRates } from "@/hooks/rates";
export function NostrProviderDialog({
provider,
@ -26,7 +27,9 @@ export function NostrProviderDialog({
const [topup, setTopup] = useState(false);
const [info, setInfo] = useState<StreamProviderInfo>();
const [ep, setEndpoint] = useState<StreamProviderEndpoint>();
const [hrs, setHrs] = useState(25);
const [tos, setTos] = useState(false);
const rate = useRates("BTCUSD");
function sortEndpoints(arr: Array<StreamProviderEndpoint>) {
return arr.sort((a, b) => ((a.rate ?? 0) > (b.rate ?? 0) ? -1 : 1));
@ -71,7 +74,16 @@ export function NostrProviderDialog({
const raw = Math.max(0, info.balance / ep.rate);
if (ep.unit === "min" && raw > 60) {
return `${(raw / 60).toFixed(0)} hour @ ${ep.rate} sats/${ep.unit}`;
const pm = hrs * 60 * ep.rate;
return <>
{`${(raw / 60).toFixed(0)} hour @ ${ep.rate} sats/${ep.unit}`}
&nbsp; or <br />
{`${pm.toLocaleString()} sats/month ($${(rate.ask * pm * 1e-8).toFixed(2)}/mo) streaming ${hrs} hrs/month`}
<div className="paper">
Hrs
<input type="number" value={hrs} onChange={e => setHrs(e.target.valueAsNumber)} />
</div>
</>
}
return `${raw.toFixed(0)} ${ep.unit} @ ${ep.rate} sats/${ep.unit}`;
}
@ -80,7 +92,7 @@ export function NostrProviderDialog({
const [tag, ...others] = cap.split(":");
if (tag === "variant") {
const [height] = others;
return height === "source" ? height : `${height.slice(0, -1)}p`;
return height === "source" ? "source" : `${height.slice(0, -1)}p`;
}
if (tag === "output") {
return others[0];
@ -193,8 +205,8 @@ export function NostrProviderDialog({
</small>
</div>
<div>
<p>
<FormattedMessage defaultMessage="Resolutions" id="4uI538" />
<p className="pb-2">
<FormattedMessage defaultMessage="Features" id="ZXp0z1" />
</p>
<div className="flex gap-2">
{ep?.capabilities?.map(a => (
@ -261,7 +273,7 @@ export function NostrProviderDialog({
</>
))}
</div>
<AddForwardInputs provider={provider} onAdd={() => {}} />
<AddForwardInputs provider={provider} onAdd={() => { }} />
</div>
);
}

View File

@ -1,9 +1,8 @@
import { Suspense, lazy, useEffect, useState } from "react";
import { useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
import { FormattedMessage } from "react-intl";
import { hexToBech32, unwrap } from "@snort/shared";
const AlbyButton = lazy(() => import("@/element/alby-button"));
import { useLogin } from "@/hooks/login";
import Copy from "@/element/copy";
import { NostrProviderDialog } from "@/element/nostr-provider-dialog";
@ -70,21 +69,17 @@ export function SettingsPage() {
onClick={() => Login.setColor(a)}></div>
))}
</div>
<h1>
<FormattedMessage defaultMessage="Zaps" id="OEW7yJ" />
</h1>
<Suspense>
<AlbyButton />
</Suspense>
<h1>
<FormattedMessage defaultMessage="Stream Key" id="LknBsU" />
</h1>
<NostrProviderDialog
provider={unwrap(providers.find(a => a.name === "zap.stream")) as NostrStreamProvider}
showEndpoints={true}
showEditor={false}
showForwards={true}
/>
<div className="flex flex-col gap-4">
<NostrProviderDialog
provider={unwrap(providers.find(a => a.name === "zap.stream")) as NostrStreamProvider}
showEndpoints={true}
showEditor={false}
showForwards={true}
/>
</div>
</>
);
}

View File

@ -3,7 +3,7 @@ import { ExternalStore } from "@snort/shared";
import { NostrStreamProvider } from "./zsz";
import { ManualProvider } from "./manual";
import { OwncastProvider } from "./owncast";
import { StreamState } from "@/const";
import { DefaultProviderUrl, StreamState } from "@/const";
export { NostrStreamProvider } from "./zsz";
@ -77,7 +77,7 @@ export interface StreamProviderStreamInfo {
goal?: string;
}
export const DefaultProvider = new NostrStreamProvider("zap.stream", "https://api.zap.stream/api/nostr/");
export const DefaultProvider = new NostrStreamProvider("zap.stream", DefaultProviderUrl);
export class ProviderStore extends ExternalStore<Array<StreamProvider>> {
#providers: Array<StreamProvider> = [];

View File

@ -114,7 +114,9 @@ export function extractStreamInfo(ev?: NostrEvent) {
matchTag(t, "summary", v => (ret.summary = v));
matchTag(t, "image", v => (ret.image = v));
matchTag(t, "status", v => (ret.status = v));
matchTag(t, "streaming", v => (ret.stream = v));
if (t[0] === "streaming" && t[1].startsWith("http")) {
matchTag(t, "streaming", v => (ret.stream = v));
}
matchTag(t, "recording", v => (ret.recording = v));
matchTag(t, "content-warning", v => (ret.contentWarning = v));
matchTag(t, "current_participants", v => (ret.participants = v));

228
yarn.lock
View File

@ -1961,39 +1961,6 @@ __metadata:
languageName: node
linkType: hard
"@getalby/bitcoin-connect-react@npm:^1.1.0":
version: 1.1.0
resolution: "@getalby/bitcoin-connect-react@npm:1.1.0"
dependencies:
"@getalby/bitcoin-connect": ^1.1.0
peerDependencies:
react: ^18.2.0
checksum: 2758212332525f55a5233180f332d7e0e29095157b028fc256500e435b64d8df10e2fe86089b312cdbab8f378b9b38ebbd6acfed7b504e98eba2dff10428216e
languageName: node
linkType: hard
"@getalby/bitcoin-connect@npm:^1.1.0":
version: 1.1.2
resolution: "@getalby/bitcoin-connect@npm:1.1.2"
dependencies:
"@getalby/sdk": ^2.4.0
lit: ^2.2.4
zustand: ^4.4.1
checksum: 07077842e70bf8baeb1c2718be1b0fa3c4d6851124651157cb80494f6dce625440b5d456cfe1b38208c12998c93d5012aa385a5ff0ecc806bcb211a8fea8f657
languageName: node
linkType: hard
"@getalby/sdk@npm:^2.4.0":
version: 2.4.0
resolution: "@getalby/sdk@npm:2.4.0"
dependencies:
crypto-js: ^4.1.1
events: ^3.3.0
nostr-tools: 1.13.1
checksum: 70441646784a51f9664a5e929c1db30f62e54907ec637ce9874f43df9064096a0b348ec11bed11f1dcfbd3920eda684f4a7c1ab1c81fc5eecf17495a9d931a5e
languageName: node
linkType: hard
"@humanwhocodes/config-array@npm:^0.11.10":
version: 0.11.10
resolution: "@humanwhocodes/config-array@npm:0.11.10"
@ -2092,31 +2059,6 @@ __metadata:
languageName: node
linkType: hard
"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0":
version: 1.1.1
resolution: "@lit-labs/ssr-dom-shim@npm:1.1.1"
checksum: 7a7add78e3ee570a7b987b9bf85e700b20d35d31c8b54cf4c8b2e3c8458ed4e2b0ff328706e5be7887f0ca8a02878c186e76609defb78f0d1b3c0e6b47c9f6ef
languageName: node
linkType: hard
"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0":
version: 1.6.3
resolution: "@lit/reactive-element@npm:1.6.3"
dependencies:
"@lit-labs/ssr-dom-shim": ^1.0.0
checksum: 79b58631c38effeabad090070324431da8a22cf0ff665f5e4de35e4d791f984742b3d340c9c7fce996d1124a8da95febc582471b4c237236c770b1300b56ef6e
languageName: node
linkType: hard
"@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0":
version: 1.1.0
resolution: "@noble/curves@npm:1.1.0"
dependencies:
"@noble/hashes": 1.3.1
checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5
languageName: node
linkType: hard
"@noble/curves@npm:^1.2.0":
version: 1.2.0
resolution: "@noble/curves@npm:1.2.0"
@ -2126,14 +2068,7 @@ __metadata:
languageName: node
linkType: hard
"@noble/hashes@npm:1.3.1":
version: 1.3.1
resolution: "@noble/hashes@npm:1.3.1"
checksum: 7fdefc0f7a0c1ec27acc6ff88841793e3f93ec4ce6b8a6a12bfc0dd70ae6b7c4c82fe305fdfeda1735d5ad4a9eebe761e6693b3d355689c559e91242f4bc95b1
languageName: node
linkType: hard
"@noble/hashes@npm:1.3.2, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.1":
"@noble/hashes@npm:1.3.2, @noble/hashes@npm:^1.3.2":
version: 1.3.2
resolution: "@noble/hashes@npm:1.3.2"
checksum: fe23536b436539d13f90e4b9be843cc63b1b17666a07634a2b1259dded6f490be3d050249e6af98076ea8f2ea0d56f578773c2197f2aa0eeaa5fba5bc18ba474
@ -2842,7 +2777,7 @@ __metadata:
languageName: node
linkType: hard
"@scure/base@npm:^1.1.2, @scure/base@npm:~1.1.0":
"@scure/base@npm:^1.1.2":
version: 1.1.2
resolution: "@scure/base@npm:1.1.2"
checksum: f666b09dbd62ecb5fe6d0e7a629c8a86a972a47dc4f4555ebbbd7b09782b10a5f894fed9c3b8c74fd683b1588c064df079a44e9f695c075ccd98c30a8d3e91f7
@ -2856,27 +2791,6 @@ __metadata:
languageName: node
linkType: hard
"@scure/bip32@npm:1.3.1":
version: 1.3.1
resolution: "@scure/bip32@npm:1.3.1"
dependencies:
"@noble/curves": ~1.1.0
"@noble/hashes": ~1.3.1
"@scure/base": ~1.1.0
checksum: 394d65f77a40651eba21a5096da0f4233c3b50d422864751d373fcf142eeedb94a1149f9ab1dbb078086dab2d0bc27e2b1afec8321bf22d4403c7df2fea5bfe2
languageName: node
linkType: hard
"@scure/bip39@npm:1.2.1":
version: 1.2.1
resolution: "@scure/bip39@npm:1.2.1"
dependencies:
"@noble/hashes": ~1.3.0
"@scure/base": ~1.1.0
checksum: c5bd6f1328fdbeae2dcdd891825b1610225310e5e62a4942714db51066866e4f7bef242c7b06a1b9dcc8043a4a13412cf5c5df76d3b10aa9e36b82e9b6e3eeaa
languageName: node
linkType: hard
"@snort/shared@npm:^1.0.11":
version: 1.0.11
resolution: "@snort/shared@npm:1.0.11"
@ -3945,6 +3859,20 @@ __metadata:
languageName: node
linkType: hard
"browserslist@npm:^4.23.0":
version: 4.23.0
resolution: "browserslist@npm:4.23.0"
dependencies:
caniuse-lite: ^1.0.30001587
electron-to-chromium: ^1.4.668
node-releases: ^2.0.14
update-browserslist-db: ^1.0.13
bin:
browserslist: cli.js
checksum: 436f49e796782ca751ebab7edc010cfc9c29f68536f387666cd70ea22f7105563f04dd62c6ff89cb24cc3254d17cba385f979eeeb3484d43e012412ff7e75def
languageName: node
linkType: hard
"buffer-from@npm:^1.0.0":
version: 1.1.2
resolution: "buffer-from@npm:1.1.2"
@ -4027,6 +3955,13 @@ __metadata:
languageName: node
linkType: hard
"caniuse-lite@npm:^1.0.30001587":
version: 1.0.30001588
resolution: "caniuse-lite@npm:1.0.30001588"
checksum: 2ab5fcec8fd3ee5d817a44bf1fb69804a6924d190e476863fb519692cd3e85a3a775bf4a2b6ba793f8db592ca61255b7f77f3d773ff7d42b452216f180bcdd2f
languageName: node
linkType: hard
"chalk@npm:^2.4.2":
version: 2.4.2
resolution: "chalk@npm:2.4.2"
@ -4209,13 +4144,6 @@ __metadata:
languageName: node
linkType: hard
"crypto-js@npm:^4.1.1":
version: 4.1.1
resolution: "crypto-js@npm:4.1.1"
checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425
languageName: node
linkType: hard
"crypto-random-string@npm:^2.0.0":
version: 2.0.0
resolution: "crypto-random-string@npm:2.0.0"
@ -4520,6 +4448,13 @@ __metadata:
languageName: node
linkType: hard
"electron-to-chromium@npm:^1.4.668":
version: 1.4.679
resolution: "electron-to-chromium@npm:1.4.679"
checksum: 1884239565cec13308298d08a746a2721ed73f9c0128b7660ef5251404f00b0e1c0fb44afbd73be7d3e9c6bb15c24e7f6374e7148416c127140be9ec86cd9f6f
languageName: node
linkType: hard
"emoji-mart@npm:^5.5.2":
version: 5.5.2
resolution: "emoji-mart@npm:5.5.2"
@ -4911,13 +4846,6 @@ __metadata:
languageName: node
linkType: hard
"events@npm:^3.3.0":
version: 3.3.0
resolution: "events@npm:3.3.0"
checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780
languageName: node
linkType: hard
"exponential-backoff@npm:^3.1.1":
version: 3.1.1
resolution: "exponential-backoff@npm:3.1.1"
@ -6094,37 +6022,6 @@ __metadata:
languageName: node
linkType: hard
"lit-element@npm:^3.3.0":
version: 3.3.3
resolution: "lit-element@npm:3.3.3"
dependencies:
"@lit-labs/ssr-dom-shim": ^1.1.0
"@lit/reactive-element": ^1.3.0
lit-html: ^2.8.0
checksum: 29a596fa556e231cce7246ca3e5687ad238f299b0cb374a0934d5e6fe9adf1436e031d4fbd21b280aabfc0e21a66e6c4b52da558a908df2566d09d960f3ca93d
languageName: node
linkType: hard
"lit-html@npm:^2.8.0":
version: 2.8.0
resolution: "lit-html@npm:2.8.0"
dependencies:
"@types/trusted-types": ^2.0.2
checksum: 2d70df07248bcb2f502a3afb1e91d260735024fa669669ffb1417575aa39c3092779725ac1b90f5f39e4ce78c63f431f51176bc67f532389f0285a6991573255
languageName: node
linkType: hard
"lit@npm:^2.2.4":
version: 2.8.0
resolution: "lit@npm:2.8.0"
dependencies:
"@lit/reactive-element": ^1.6.0
lit-element: ^3.3.0
lit-html: ^2.8.0
checksum: 2480e733f7d022d3ecba91abc58a20968f0ca8f5fa30b3341ecf4bcf4845e674ad27b721a5ae53529cafc6ca603c015b80d0979ceb7a711e268ef20bb6bc7527
languageName: node
linkType: hard
"locate-path@npm:^6.0.0":
version: 6.0.0
resolution: "locate-path@npm:6.0.0"
@ -6498,6 +6395,13 @@ __metadata:
languageName: node
linkType: hard
"node-releases@npm:^2.0.14":
version: 2.0.14
resolution: "node-releases@npm:2.0.14"
checksum: 59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41
languageName: node
linkType: hard
"nopt@npm:^6.0.0":
version: 6.0.0
resolution: "nopt@npm:6.0.0"
@ -6523,19 +6427,6 @@ __metadata:
languageName: node
linkType: hard
"nostr-tools@npm:1.13.1":
version: 1.13.1
resolution: "nostr-tools@npm:1.13.1"
dependencies:
"@noble/curves": 1.1.0
"@noble/hashes": 1.3.1
"@scure/base": 1.1.1
"@scure/bip32": 1.3.1
"@scure/bip39": 1.2.1
checksum: 49695f94b5d399a29c9d7173fa2927c24247e365a7b17586434c4b442b99b6a35b6b015c01736b12fcaaba5b88884e25c1af1367880111403ea0718db85d5467
languageName: node
linkType: hard
"npmlog@npm:^6.0.0":
version: 6.0.2
resolution: "npmlog@npm:6.0.2"
@ -7823,7 +7714,6 @@ __metadata:
"@emoji-mart/react": ^1.1.1
"@formatjs/cli": ^6.1.3
"@formatjs/ts-transformer": ^3.13.3
"@getalby/bitcoin-connect-react": ^1.1.0
"@noble/curves": ^1.2.0
"@radix-ui/react-collapsible": ^1.0.3
"@radix-ui/react-dialog": ^1.0.4
@ -7853,6 +7743,7 @@ __metadata:
"@webbtc/webln-types": ^1.0.12
"@webscopeio/react-textarea-autocomplete": ^4.9.2
autoprefixer: ^10.4.16
browserslist: ^4.23.0
buffer: ^6.0.3
classnames: ^2.3.2
emoji-mart: ^5.5.2
@ -8458,6 +8349,20 @@ __metadata:
languageName: node
linkType: hard
"update-browserslist-db@npm:^1.0.13":
version: 1.0.13
resolution: "update-browserslist-db@npm:1.0.13"
dependencies:
escalade: ^3.1.1
picocolors: ^1.0.0
peerDependencies:
browserslist: ">= 4.21.0"
bin:
update-browserslist-db: cli.js
checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322
languageName: node
linkType: hard
"uri-js@npm:^4.2.2":
version: 4.4.1
resolution: "uri-js@npm:4.4.1"
@ -8498,15 +8403,6 @@ __metadata:
languageName: node
linkType: hard
"use-sync-external-store@npm:1.2.0":
version: 1.2.0
resolution: "use-sync-external-store@npm:1.2.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a
languageName: node
linkType: hard
"usehooks-ts@npm:^2.9.1":
version: 2.9.1
resolution: "usehooks-ts@npm:2.9.1"
@ -9001,23 +8897,3 @@ __metadata:
checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700
languageName: node
linkType: hard
"zustand@npm:^4.4.1":
version: 4.4.1
resolution: "zustand@npm:4.4.1"
dependencies:
use-sync-external-store: 1.2.0
peerDependencies:
"@types/react": ">=16.8"
immer: ">=9.0"
react: ">=16.8"
peerDependenciesMeta:
"@types/react":
optional: true
immer:
optional: true
react:
optional: true
checksum: 80acd0fbf633782996642802c8692bbb80ae5c80a8dff4c501b88250acd5ccd468fbc6398bdce198475a25e3839c91385b81da921274f33ffb5c2d08c3eab400
languageName: node
linkType: hard