2023-02-05 06:29:46 +00:00
|
|
|
import { ApiHost, KieranPubKey, SnortPubKey } from "Const";
|
2023-01-20 11:11:50 +00:00
|
|
|
import ProfilePreview from "Element/ProfilePreview";
|
2023-01-24 15:24:50 +00:00
|
|
|
import ZapButton from "Element/ZapButton";
|
2023-01-24 12:26:14 +00:00
|
|
|
import { HexKey } from "Nostr";
|
|
|
|
import { useEffect, useState } from "react";
|
2023-01-20 17:07:14 +00:00
|
|
|
import { bech32ToHex } from "Util";
|
2023-01-19 00:03:24 +00:00
|
|
|
|
|
|
|
const Developers = [
|
2023-02-07 20:04:50 +00:00
|
|
|
bech32ToHex(KieranPubKey), // kieran
|
|
|
|
bech32ToHex(
|
|
|
|
"npub107jk7htfv243u0x5ynn43scq9wrxtaasmrwwa8lfu2ydwag6cx2quqncxg"
|
|
|
|
), // verbiricha
|
|
|
|
bech32ToHex(
|
|
|
|
"npub1r0rs5q2gk0e3dk3nlc7gnu378ec6cnlenqp8a3cjhyzu6f8k5sgs4sq9ac"
|
|
|
|
), // Karnage
|
2023-01-20 17:07:14 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
const Contributors = [
|
2023-02-07 20:04:50 +00:00
|
|
|
bech32ToHex(
|
|
|
|
"npub10djxr5pvdu97rjkde7tgcsjxzpdzmdguwacfjwlchvj7t88dl7nsdl54nf"
|
|
|
|
), // ivan
|
|
|
|
bech32ToHex(
|
|
|
|
"npub148jmlutaa49y5wl5mcll003ftj59v79vf7wuv3apcwpf75hx22vs7kk9ay"
|
|
|
|
), // liran cohen
|
|
|
|
bech32ToHex(
|
|
|
|
"npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy"
|
|
|
|
), // artur
|
2023-02-08 10:07:06 +00:00
|
|
|
bech32ToHex(
|
|
|
|
"npub1vp8fdcyejd4pqjyrjk9sgz68vuhq7pyvnzk8j0ehlljvwgp8n6eqsrnpsw"
|
|
|
|
), // samsamskies
|
2023-01-19 00:03:24 +00:00
|
|
|
];
|
|
|
|
|
2023-01-24 12:26:14 +00:00
|
|
|
interface Splits {
|
2023-02-07 20:04:50 +00:00
|
|
|
pubKey: string;
|
|
|
|
split: number;
|
2023-01-24 12:26:14 +00:00
|
|
|
}
|
|
|
|
|
2023-01-26 15:41:10 +00:00
|
|
|
interface TotalToday {
|
2023-02-07 20:04:50 +00:00
|
|
|
donations: number;
|
|
|
|
nip5: number;
|
2023-01-26 15:41:10 +00:00
|
|
|
}
|
|
|
|
|
2023-01-19 00:03:24 +00:00
|
|
|
const DonatePage = () => {
|
2023-02-07 20:04:50 +00:00
|
|
|
const [splits, setSplits] = useState<Splits[]>([]);
|
|
|
|
const [today, setSumToday] = useState<TotalToday>();
|
2023-01-24 12:26:14 +00:00
|
|
|
|
2023-02-07 20:04:50 +00:00
|
|
|
async function loadData() {
|
2023-02-07 19:47:57 +00:00
|
|
|
const rsp = await fetch(`${ApiHost}/api/v1/revenue/splits`);
|
2023-02-07 20:04:50 +00:00
|
|
|
if (rsp.ok) {
|
|
|
|
setSplits(await rsp.json());
|
2023-01-24 12:26:14 +00:00
|
|
|
}
|
2023-02-07 19:47:57 +00:00
|
|
|
const rsp2 = await fetch(`${ApiHost}/api/v1/revenue/today`);
|
2023-02-07 20:04:50 +00:00
|
|
|
if (rsp2.ok) {
|
|
|
|
setSumToday(await rsp2.json());
|
|
|
|
}
|
|
|
|
}
|
2023-01-24 12:26:14 +00:00
|
|
|
|
2023-02-07 20:04:50 +00:00
|
|
|
useEffect(() => {
|
|
|
|
loadData().catch(console.warn);
|
|
|
|
}, []);
|
2023-01-24 12:26:14 +00:00
|
|
|
|
2023-02-07 20:04:50 +00:00
|
|
|
function actions(pk: HexKey) {
|
2023-02-07 19:47:57 +00:00
|
|
|
const split = splits.find((a) => bech32ToHex(a.pubKey) === pk);
|
2023-02-07 20:04:50 +00:00
|
|
|
if (split) {
|
|
|
|
return <>{(100 * split.split).toLocaleString()}%</>;
|
2023-01-24 12:26:14 +00:00
|
|
|
}
|
2023-02-07 20:04:50 +00:00
|
|
|
return <></>;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="main-content m5">
|
|
|
|
<h2>Help fund the development of Snort</h2>
|
|
|
|
<p>
|
|
|
|
Snort is an open source project built by passionate people in their free
|
|
|
|
time
|
|
|
|
</p>
|
|
|
|
<p>Your donations are greatly appreciated</p>
|
|
|
|
<p>
|
|
|
|
Check out the code here:{" "}
|
|
|
|
<a
|
|
|
|
className="highlight"
|
|
|
|
href="https://github.com/v0l/snort"
|
|
|
|
rel="noreferrer"
|
|
|
|
target="_blank"
|
|
|
|
>
|
|
|
|
https://github.com/v0l/snort
|
|
|
|
</a>
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Each contributor will get paid a percentage of all donations and NIP-05
|
|
|
|
orders, you can see the split amounts below
|
|
|
|
</p>
|
|
|
|
<div className="flex">
|
|
|
|
<div className="mr10">Lightning Donation: </div>
|
|
|
|
<ZapButton
|
|
|
|
pubkey={bech32ToHex(SnortPubKey)}
|
|
|
|
svc={"donate@snort.social"}
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
{today && (
|
|
|
|
<small>
|
|
|
|
Total today (UTC): {today.donations.toLocaleString()} sats
|
|
|
|
</small>
|
|
|
|
)}
|
|
|
|
<h3>Primary Developers</h3>
|
|
|
|
{Developers.map((a) => (
|
|
|
|
<ProfilePreview pubkey={a} key={a} actions={actions(a)} />
|
|
|
|
))}
|
|
|
|
<h4>Contributors</h4>
|
|
|
|
{Contributors.map((a) => (
|
|
|
|
<ProfilePreview pubkey={a} key={a} actions={actions(a)} />
|
|
|
|
))}
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
2023-01-19 00:03:24 +00:00
|
|
|
|
2023-01-19 11:14:41 +00:00
|
|
|
export default DonatePage;
|