From 5796892e549660f3474b1ee59797e8731d13583c Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Thu, 29 Feb 2024 11:52:26 +0200 Subject: [PATCH] shorten some files --- .../app/src/Components/Text/DisableMedia.tsx | 7 ++ packages/app/src/Components/Text/Text.tsx | 7 +- .../app/src/Pages/{ => Donate}/DonatePage.tsx | 92 +------------------ .../src/Pages/Donate/ZapPoolDonateSection.tsx | 48 ++++++++++ packages/app/src/Pages/Donate/const.ts | 43 +++++++++ .../app/src/Pages/NetworkGraph/Avatar.tsx | 13 +++ .../Pages/{ => NetworkGraph}/NetworkGraph.tsx | 59 +----------- packages/app/src/Pages/NetworkGraph/types.ts | 45 +++++++++ packages/app/src/index.tsx | 4 +- 9 files changed, 166 insertions(+), 152 deletions(-) create mode 100644 packages/app/src/Components/Text/DisableMedia.tsx rename packages/app/src/Pages/{ => Donate}/DonatePage.tsx (60%) create mode 100644 packages/app/src/Pages/Donate/ZapPoolDonateSection.tsx create mode 100644 packages/app/src/Pages/Donate/const.ts create mode 100644 packages/app/src/Pages/NetworkGraph/Avatar.tsx rename packages/app/src/Pages/{ => NetworkGraph}/NetworkGraph.tsx (87%) create mode 100644 packages/app/src/Pages/NetworkGraph/types.ts diff --git a/packages/app/src/Components/Text/DisableMedia.tsx b/packages/app/src/Components/Text/DisableMedia.tsx new file mode 100644 index 00000000..d8a3c1cd --- /dev/null +++ b/packages/app/src/Components/Text/DisableMedia.tsx @@ -0,0 +1,7 @@ +const DisableMedia = ({ content }: { content: string }) => ( + e.stopPropagation()} target="_blank" rel="noreferrer" className="ext"> + {content} + +); + +export default DisableMedia; diff --git a/packages/app/src/Components/Text/Text.tsx b/packages/app/src/Components/Text/Text.tsx index 313d9f2c..c92b115b 100644 --- a/packages/app/src/Components/Text/Text.tsx +++ b/packages/app/src/Components/Text/Text.tsx @@ -9,6 +9,7 @@ import Hashtag from "@/Components/Embed/Hashtag"; import HyperText from "@/Components/Embed/HyperText"; import Invoice from "@/Components/Embed/Invoice"; import { baseImageWidth, GRID_GAP, gridConfigMap, ROW_HEIGHT } from "@/Components/Text/const"; +import DisableMedia from "@/Components/Text/DisableMedia"; import { useTextTransformer } from "@/Hooks/useTextTransformCache"; import RevealMedia from "../Event/RevealMedia"; @@ -51,12 +52,6 @@ export default function Text({ const elements = useTextTransformer(id, content, tags); const images = elements.filter(a => a.type === "media" && a.mimeType?.startsWith("image")).map(a => a.content); - const DisableMedia = ({ content }: { content: string }) => ( - e.stopPropagation()} target="_blank" rel="noreferrer" className="ext"> - {content} - - ); - const RevealMediaInstance = ({ content, data, size }: { content: string; data?: object; size?: number }) => { const imeta = data as IMeta | undefined; diff --git a/packages/app/src/Pages/DonatePage.tsx b/packages/app/src/Pages/Donate/DonatePage.tsx similarity index 60% rename from packages/app/src/Pages/DonatePage.tsx rename to packages/app/src/Pages/Donate/DonatePage.tsx index 6e9973cd..2c13bbce 100644 --- a/packages/app/src/Pages/DonatePage.tsx +++ b/packages/app/src/Pages/Donate/DonatePage.tsx @@ -1,5 +1,5 @@ import { HexKey } from "@snort/system"; -import { useEffect, useState, useSyncExternalStore } from "react"; +import { useEffect, useState } from "react"; import { FormattedMessage } from "react-intl"; import { Link, useNavigate } from "react-router-dom"; @@ -12,54 +12,10 @@ import Modal from "@/Components/Modal/Modal"; import QrCode from "@/Components/QrCode"; import ProfilePreview from "@/Components/User/ProfilePreview"; import SnortApi, { RevenueSplit, RevenueToday } from "@/External/SnortApi"; -import { ZapPoolTarget } from "@/Pages/ZapPool/ZapPoolTarget"; -import { bech32ToHex, unwrap } from "@/Utils"; +import { Contributors, DonateLNURL, Translators } from "@/Pages/Donate/const"; +import { ZapPoolDonateSection } from "@/Pages/Donate/ZapPoolDonateSection"; +import { bech32ToHex } from "@/Utils"; import { ApiHost, DeveloperAccounts, SnortPubKey } from "@/Utils/Const"; -import { ZapPoolController, ZapPoolRecipientType } from "@/Utils/ZapPoolController"; - -const Contributors = [ - bech32ToHex("npub10djxr5pvdu97rjkde7tgcsjxzpdzmdguwacfjwlchvj7t88dl7nsdl54nf"), // ivan - bech32ToHex("npub148jmlutaa49y5wl5mcll003ftj59v79vf7wuv3apcwpf75hx22vs7kk9ay"), // liran cohen - bech32ToHex("npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy"), // artur - bech32ToHex("npub1vp8fdcyejd4pqjyrjk9sgz68vuhq7pyvnzk8j0ehlljvwgp8n6eqsrnpsw"), // samsamskies - bech32ToHex("npub179rec9sw2a5ngkr2wsjpjhwp2ksygjxn6uw5py9daj2ezhw3aw5swv3s6q"), // h3y6e - JA + other stuff - bech32ToHex("npub17q5n2z8naw0xl6vu9lvt560lg33pdpe29k0k09umlfxm3vc4tqrq466f2y"), // w3irdrobot - bech32ToHex("npub1ltx67888tz7lqnxlrg06x234vjnq349tcfyp52r0lstclp548mcqnuz40t"), // Vivek - bech32ToHex("npub1wh30wunfpkezx5s7edqu9g0s0raeetf5dgthzm0zw7sk8wqygmjqqfljgh"), // Fernando Porazzi - bech32ToHex("npub1gm7tuvr9atc6u7q3gevjfeyfyvmrlul4y67k7u7hcxztz67ceexs078rf6"), // Giszmo - Master of bug reports - bech32ToHex("npub1cz2ve34nk0ukn0ph4yq2qx3ud8rfy5e0ak4epx42dn8gha0sdgpsgra9kv"), // Kamal -]; - -const Translators = [ - bech32ToHex("npub1s8zws5frm94esxnp9v6zf7vk60m3hum3305n78sr73t78kleus7q8zpwna"), // middlingphys - JA - bech32ToHex("npub1z0ykz6lp3y8rjjntenns0ee02062g2f0n55u49w44xdemw35vcpsda5jhh"), // noraglyphs - JA - bech32ToHex("npub13wa880se2h3l54k7x76edrkrt4p94sh4q090974mt0z6n09qtntqxp47uk"), // numpad0 - JA - bech32ToHex("npub147ccm75um0zkn0lr9fg9wrag2g6yxfw234fpmhdwuvaqjyegrhgs46t2td"), // ROBO358 - JA - bech32ToHex("npub1ppxgsqdv4ygvdnzznudahtwqc3vaqjz3824vawfgwchpegz0lsjqqys35r"), // Kisato - JA - - bech32ToHex("npub1ww8kjxz2akn82qptdpl7glywnchhkx3x04hez3d3rye397turrhssenvtp"), // Zoltan - HU - - bech32ToHex("npub1x8dzy9xegwmdk2vy30l8u08caspcqq2yzncxehdsa6kvnte9pr3qnt8pg4"), // solobalbo - FR - - bech32ToHex("npub1xwm9svxrlymymph0hka40zw9frg98m6adxmzcq26jhtm5gwlhjrshhgzfd"), // meitsjustme - ZH - bech32ToHex("npub1raspu6ag9kfcw9jz0rz4z693qwmqe5sx6jdhhuvkwz5zy8rygztqnwfhd7"), // ra5pvt1n - ZH - - bech32ToHex("npub13tkge7eqeem5cz8gk7gdju76nytvvf064hm5mzmv3x26k2uvaxfqczet2j"), // Mendace - IT - - bech32ToHex("npub10529hxckjm5t5mchss5lnpsqrmavulglxhrmu5quuu4hs6yuyh3qc9gxd5"), // aadbitcoin - ID - - bech32ToHex("npub19jk45jz45gczwfm22y9z69xhaex3nwg47dz84zw096xl6z62amkqj99rv7"), // Pextar - SV - - bech32ToHex("npub1z9n5ktfjrlpyywds9t7ljekr9cm9jjnzs27h702te5fy8p2c4dgs5zvycf"), // Felix - DE - - bech32ToHex("npub1wh30wunfpkezx5s7edqu9g0s0raeetf5dgthzm0zw7sk8wqygmjqqfljgh"), // Fernando Porazzi - pt-BR - - bech32ToHex("npub1ust7u0v3qffejwhqee45r49zgcyewrcn99vdwkednd356c9resyqtnn3mj"), // Petri - FI - - bech32ToHex("npub1p94p6d4p04mhjt2hdpkhhvkl93v7j7ada4w9lztj0y0fzg2m959sux5h5k"), // Jeremy - SV -]; - -const DonateLNURL = "donate@snort.social"; const DonatePage = () => { const [splits, setSplits] = useState([]); @@ -230,44 +186,4 @@ const DonatePage = () => { ); }; -function ZapPoolDonateSection() { - if (!CONFIG.features.zapPool) { - return; - } - // eslint-disable-next-line react-hooks/rules-of-hooks - const zapPool = useSyncExternalStore( - c => unwrap(ZapPoolController).hook(c), - () => unwrap(ZapPoolController).snapshot(), - ); - - return ( - <> -

- -

-

- -

-

- - - -

- b.pubkey === bech32ToHex(SnortPubKey) && b.type === ZapPoolRecipientType.Generic) ?? { - type: ZapPoolRecipientType.Generic, - pubkey: bech32ToHex(SnortPubKey), - split: 0, - sum: 0, - } - } - /> - - ); -} - export default DonatePage; diff --git a/packages/app/src/Pages/Donate/ZapPoolDonateSection.tsx b/packages/app/src/Pages/Donate/ZapPoolDonateSection.tsx new file mode 100644 index 00000000..8cea6f5f --- /dev/null +++ b/packages/app/src/Pages/Donate/ZapPoolDonateSection.tsx @@ -0,0 +1,48 @@ +import { useSyncExternalStore } from "react"; +import { FormattedMessage } from "react-intl"; +import { Link } from "react-router-dom"; + +import { ZapPoolTarget } from "@/Pages/ZapPool/ZapPoolTarget"; +import { bech32ToHex, unwrap } from "@/Utils"; +import { SnortPubKey } from "@/Utils/Const"; +import { ZapPoolController, ZapPoolRecipientType } from "@/Utils/ZapPoolController"; + +export function ZapPoolDonateSection() { + if (!CONFIG.features.zapPool) { + return; + } + // eslint-disable-next-line react-hooks/rules-of-hooks + const zapPool = useSyncExternalStore( + c => unwrap(ZapPoolController).hook(c), + () => unwrap(ZapPoolController).snapshot(), + ); + + return ( + <> +

+ +

+

+ +

+

+ + + +

+ b.pubkey === bech32ToHex(SnortPubKey) && b.type === ZapPoolRecipientType.Generic) ?? { + type: ZapPoolRecipientType.Generic, + pubkey: bech32ToHex(SnortPubKey), + split: 0, + sum: 0, + } + } + /> + + ); +} diff --git a/packages/app/src/Pages/Donate/const.ts b/packages/app/src/Pages/Donate/const.ts new file mode 100644 index 00000000..d1259f20 --- /dev/null +++ b/packages/app/src/Pages/Donate/const.ts @@ -0,0 +1,43 @@ +import { bech32ToHex } from "@/Utils"; + +export const Contributors = [ + bech32ToHex("npub10djxr5pvdu97rjkde7tgcsjxzpdzmdguwacfjwlchvj7t88dl7nsdl54nf"), // ivan + bech32ToHex("npub148jmlutaa49y5wl5mcll003ftj59v79vf7wuv3apcwpf75hx22vs7kk9ay"), // liran cohen + bech32ToHex("npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy"), // artur + bech32ToHex("npub1vp8fdcyejd4pqjyrjk9sgz68vuhq7pyvnzk8j0ehlljvwgp8n6eqsrnpsw"), // samsamskies + bech32ToHex("npub179rec9sw2a5ngkr2wsjpjhwp2ksygjxn6uw5py9daj2ezhw3aw5swv3s6q"), // h3y6e - JA + other stuff + bech32ToHex("npub17q5n2z8naw0xl6vu9lvt560lg33pdpe29k0k09umlfxm3vc4tqrq466f2y"), // w3irdrobot + bech32ToHex("npub1ltx67888tz7lqnxlrg06x234vjnq349tcfyp52r0lstclp548mcqnuz40t"), // Vivek + bech32ToHex("npub1wh30wunfpkezx5s7edqu9g0s0raeetf5dgthzm0zw7sk8wqygmjqqfljgh"), // Fernando Porazzi + bech32ToHex("npub1gm7tuvr9atc6u7q3gevjfeyfyvmrlul4y67k7u7hcxztz67ceexs078rf6"), // Giszmo - Master of bug reports + bech32ToHex("npub1cz2ve34nk0ukn0ph4yq2qx3ud8rfy5e0ak4epx42dn8gha0sdgpsgra9kv"), // Kamal +]; +export const Translators = [ + bech32ToHex("npub1s8zws5frm94esxnp9v6zf7vk60m3hum3305n78sr73t78kleus7q8zpwna"), // middlingphys - JA + bech32ToHex("npub1z0ykz6lp3y8rjjntenns0ee02062g2f0n55u49w44xdemw35vcpsda5jhh"), // noraglyphs - JA + bech32ToHex("npub13wa880se2h3l54k7x76edrkrt4p94sh4q090974mt0z6n09qtntqxp47uk"), // numpad0 - JA + bech32ToHex("npub147ccm75um0zkn0lr9fg9wrag2g6yxfw234fpmhdwuvaqjyegrhgs46t2td"), // ROBO358 - JA + bech32ToHex("npub1ppxgsqdv4ygvdnzznudahtwqc3vaqjz3824vawfgwchpegz0lsjqqys35r"), // Kisato - JA + + bech32ToHex("npub1ww8kjxz2akn82qptdpl7glywnchhkx3x04hez3d3rye397turrhssenvtp"), // Zoltan - HU + + bech32ToHex("npub1x8dzy9xegwmdk2vy30l8u08caspcqq2yzncxehdsa6kvnte9pr3qnt8pg4"), // solobalbo - FR + + bech32ToHex("npub1xwm9svxrlymymph0hka40zw9frg98m6adxmzcq26jhtm5gwlhjrshhgzfd"), // meitsjustme - ZH + bech32ToHex("npub1raspu6ag9kfcw9jz0rz4z693qwmqe5sx6jdhhuvkwz5zy8rygztqnwfhd7"), // ra5pvt1n - ZH + + bech32ToHex("npub13tkge7eqeem5cz8gk7gdju76nytvvf064hm5mzmv3x26k2uvaxfqczet2j"), // Mendace - IT + + bech32ToHex("npub10529hxckjm5t5mchss5lnpsqrmavulglxhrmu5quuu4hs6yuyh3qc9gxd5"), // aadbitcoin - ID + + bech32ToHex("npub19jk45jz45gczwfm22y9z69xhaex3nwg47dz84zw096xl6z62amkqj99rv7"), // Pextar - SV + + bech32ToHex("npub1z9n5ktfjrlpyywds9t7ljekr9cm9jjnzs27h702te5fy8p2c4dgs5zvycf"), // Felix - DE + + bech32ToHex("npub1wh30wunfpkezx5s7edqu9g0s0raeetf5dgthzm0zw7sk8wqygmjqqfljgh"), // Fernando Porazzi - pt-BR + + bech32ToHex("npub1ust7u0v3qffejwhqee45r49zgcyewrcn99vdwkednd356c9resyqtnn3mj"), // Petri - FI + + bech32ToHex("npub1p94p6d4p04mhjt2hdpkhhvkl93v7j7ada4w9lztj0y0fzg2m959sux5h5k"), // Jeremy - SV +]; +export const DonateLNURL = "donate@snort.social"; diff --git a/packages/app/src/Pages/NetworkGraph/Avatar.tsx b/packages/app/src/Pages/NetworkGraph/Avatar.tsx new file mode 100644 index 00000000..048a7215 --- /dev/null +++ b/packages/app/src/Pages/NetworkGraph/Avatar.tsx @@ -0,0 +1,13 @@ +import { NodeObject } from "react-force-graph-3d"; + +import { proxyImg } from "@/Hooks/useImgProxy"; +import { GraphNode } from "@/Pages/NetworkGraph/types"; +import { defaultAvatar } from "@/Utils"; +import { LoginStore } from "@/Utils/Login"; + +export const avatar = (node: NodeObject>) => { + const login = LoginStore.snapshot(); + return node.profile?.picture + ? proxyImg(node.profile?.picture, login.appData.item.preferences.imgProxyConfig) + : defaultAvatar(node.address); +}; diff --git a/packages/app/src/Pages/NetworkGraph.tsx b/packages/app/src/Pages/NetworkGraph/NetworkGraph.tsx similarity index 87% rename from packages/app/src/Pages/NetworkGraph.tsx rename to packages/app/src/Pages/NetworkGraph/NetworkGraph.tsx index 5e3d7749..377d9bd6 100644 --- a/packages/app/src/Pages/NetworkGraph.tsx +++ b/packages/app/src/Pages/NetworkGraph/NetworkGraph.tsx @@ -1,65 +1,12 @@ -import { CachedMetadata, socialGraphInstance, STR, UID } from "@snort/system"; +import { socialGraphInstance, STR, UID } from "@snort/system"; import { SnortContext } from "@snort/system-react"; import { useContext, useEffect, useState } from "react"; import { NodeObject } from "react-force-graph-3d"; import { FormattedMessage } from "react-intl"; import Icon from "@/Components/Icons/Icon"; -import { proxyImg } from "@/Hooks/useImgProxy"; -import { LoginStore } from "@/Utils/Login"; - -import { defaultAvatar } from "../Utils"; - -interface GraphNode { - id: UID; - profile?: CachedMetadata; - distance: number; - val: number; - inboundCount: number; - outboundCount: number; - color?: string; - visible: boolean; - // curvature?: number; -} - -interface GraphLink { - source: UID; - target: UID; - distance: number; -} - -interface GraphMetadata { - // usersByFollowDistance?: Map>; - userCountByDistance: number[]; - nodes?: Map; -} - -interface GraphData { - nodes: GraphNode[]; - links: GraphLink[]; - meta?: GraphMetadata; -} - -enum Direction { - INBOUND, - OUTBOUND, - BOTH, -} - -const avatar = (node: NodeObject>) => { - const login = LoginStore.snapshot(); - return node.profile?.picture - ? proxyImg(node.profile?.picture, login.appData.item.preferences.imgProxyConfig) - : defaultAvatar(node.address); -}; - -const NODE_LIMIT = 500; - -interface GraphConfig { - direction: Direction; - renderLimit: number | null; - showDistance: number; -} +import { avatar } from "@/Pages/NetworkGraph/Avatar"; +import { Direction, GraphConfig, GraphData, GraphLink, GraphNode, NODE_LIMIT } from "@/Pages/NetworkGraph/types"; const NetworkGraph = () => { const [graphData, setGraphData] = useState(null as GraphData | null); diff --git a/packages/app/src/Pages/NetworkGraph/types.ts b/packages/app/src/Pages/NetworkGraph/types.ts new file mode 100644 index 00000000..64aec68e --- /dev/null +++ b/packages/app/src/Pages/NetworkGraph/types.ts @@ -0,0 +1,45 @@ +import { CachedMetadata, UID } from "@snort/system"; + +export interface GraphNode { + id: UID; + profile?: CachedMetadata; + distance: number; + val: number; + inboundCount: number; + outboundCount: number; + color?: string; + visible: boolean; + // curvature?: number; +} + +export interface GraphLink { + source: UID; + target: UID; + distance: number; +} + +interface GraphMetadata { + // usersByFollowDistance?: Map>; + userCountByDistance: number[]; + nodes?: Map; +} + +export interface GraphData { + nodes: GraphNode[]; + links: GraphLink[]; + meta?: GraphMetadata; +} + +export enum Direction { + INBOUND, + OUTBOUND, + BOTH, +} + +export interface GraphConfig { + direction: Direction; + renderLimit: number | null; + showDistance: number; +} + +export const NODE_LIMIT = 500; diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index 00c0a05e..1cf95ee9 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -15,14 +15,14 @@ import { addCachedMetadataToFuzzySearch } from "@/Db/FuzzySearch"; import { updateRelayConnections } from "@/Hooks/useLoginRelays"; import { AboutPage } from "@/Pages/About"; import { SnortDeckLayout } from "@/Pages/DeckLayout"; -import DonatePage from "@/Pages/DonatePage"; +import DonatePage from "@/Pages/Donate/DonatePage"; import ErrorPage from "@/Pages/ErrorPage"; import FreeNostrAddressPage from "@/Pages/FreeNostrAddressPage"; import HelpPage from "@/Pages/HelpPage"; import Layout from "@/Pages/Layout"; import { ListFeedPage } from "@/Pages/ListFeedPage"; import MessagesPage from "@/Pages/Messages/MessagesPage"; -import NetworkGraph from "@/Pages/NetworkGraph"; +import NetworkGraph from "@/Pages/NetworkGraph/NetworkGraph"; import NostrAddressPage from "@/Pages/NostrAddressPage"; import NostrLinkHandler from "@/Pages/NostrLinkHandler"; import NotificationsPage from "@/Pages/Notifications/Notifications";