From 2c09d6af796cfde45edd03011ad1d67a863a3c01 Mon Sep 17 00:00:00 2001 From: Alejandro Gomez Date: Tue, 14 Feb 2023 00:11:51 +0100 Subject: [PATCH] send sats and show latest improvements --- packages/app/src/Element/SendSats.css | 8 +---- packages/app/src/Element/SendSats.tsx | 37 +++++++++++++++------ packages/app/src/Element/Tabs.tsx | 2 +- packages/app/src/Element/Timeline.css | 8 ++++- packages/app/src/Element/Timeline.tsx | 47 ++++++++++++++++++++------- packages/app/src/index.css | 4 +++ 6 files changed, 75 insertions(+), 31 deletions(-) diff --git a/packages/app/src/Element/SendSats.css b/packages/app/src/Element/SendSats.css index 7141573d..e09d4ad0 100644 --- a/packages/app/src/Element/SendSats.css +++ b/packages/app/src/Element/SendSats.css @@ -64,17 +64,11 @@ .amounts { display: flex; width: 100%; - overflow-x: scroll; - -ms-overflow-style: none; /* for Internet Explorer, Edge */ - scrollbar-width: none; /* for Firefox */ margin-bottom: 16px; } -.amounts::-webkit-scrollbar { - display: none; -} - .sat-amount { + flex: 1 1 auto; text-align: center; display: inline-block; background-color: #2a2a2a; diff --git a/packages/app/src/Element/SendSats.tsx b/packages/app/src/Element/SendSats.tsx index 0ac4c874..f5abe744 100644 --- a/packages/app/src/Element/SendSats.tsx +++ b/packages/app/src/Element/SendSats.tsx @@ -14,7 +14,6 @@ import Modal from "Element/Modal"; import QrCode from "Element/QrCode"; import Copy from "Element/Copy"; import useWebln from "Hooks/useWebln"; -import useHorizontalScroll from "Hooks/useHorizontalScroll"; import messages from "./messages"; @@ -49,6 +48,18 @@ export interface LNURLTipProps { author?: HexKey; } +function chunks(arr: any[], length: number) { + const result = []; + let idx = 0; + let n = arr.length / length; + while (n > 0) { + result.push(arr.slice(idx, idx + length)); + idx += length; + n -= 1; + } + return result; +} + export default function LNURLTip(props: LNURLTipProps) { const onClose = props.onClose || (() => undefined); const service = props.svc; @@ -74,7 +85,6 @@ export default function LNURLTip(props: LNURLTipProps) { const webln = useWebln(show); const { formatMessage } = useIntl(); const publisher = useEventPublisher(); - const horizontalScroll = useHorizontalScroll(); const canComment = (payService?.commentAllowed ?? 0) > 0 || payService?.nostrPubkey; useEffect(() => { @@ -100,6 +110,7 @@ export default function LNURLTip(props: LNURLTipProps) { } return []; }, [payService]); + const amountRows = useMemo(() => chunks(serviceAmounts, 3), [serviceAmounts]); const selectAmount = (a: number) => { setError(undefined); @@ -204,6 +215,19 @@ export default function LNURLTip(props: LNURLTipProps) { } } + function renderAmounts(amount: number, amounts: number[]) { + return ( +
+ {amounts.map(a => ( + selectAmount(a)}> + {emojis[a] && <>{emojis[a]} } + {a === 1000 ? "1K" : formatShort(a)} + + ))} +
+ ); + } + function invoiceForm() { if (invoice) return null; return ( @@ -211,14 +235,7 @@ export default function LNURLTip(props: LNURLTipProps) {

-
- {serviceAmounts.map(a => ( - selectAmount(a)}> - {emojis[a] && <>{emojis[a]} } - {formatShort(a)} - - ))} -
+ {amountRows.map(amounts => renderAmounts(amount, amounts))} {payService && custom()}
{canComment && ( diff --git a/packages/app/src/Element/Tabs.tsx b/packages/app/src/Element/Tabs.tsx index ab51c17e..c305d94f 100644 --- a/packages/app/src/Element/Tabs.tsx +++ b/packages/app/src/Element/Tabs.tsx @@ -31,7 +31,7 @@ function clamp(n: number, min: number, max: number) { export const TabElement = ({ t, tab, setTab }: TabElementProps) => { const style = useMemo(() => { - return { minWidth: `${clamp(t.text.length, 2, 7)}em` } as CSSProperties; + return { minWidth: `${clamp(t.text.length, 3, 8) * 14}px` } as CSSProperties; }, [t.text]); return (
{ @@ -84,19 +86,40 @@ export default function Timeline({ } } + function onShowLatest(scrollToTop = false) { + showLatest(); + if (scrollToTop) { + window.scrollTo(0, 0); + } + } + return (
{latestFeed.length > 0 && ( -
showLatest()}> - {latestAuthors.slice(0, 3).map(p => { - return ; - })} - - -
+ <> +
onShowLatest()} ref={ref}> + {latestAuthors.slice(0, 3).map(p => { + return ; + })} + + +
+ {!inView && ( +
onShowLatest(true)}> + {latestAuthors.slice(0, 3).map(p => { + return ; + })} + + +
+ )} + )} {mainFeed.map(eventElement)} diff --git a/packages/app/src/index.css b/packages/app/src/index.css index 0f419d06..d22fce3a 100644 --- a/packages/app/src/index.css +++ b/packages/app/src/index.css @@ -39,6 +39,10 @@ --strike-army-gradient: linear-gradient(to bottom right, #ccff00, #a1c900); } +html { + scroll-behavior: smooth; +} + html.light { --bg-color: #f8f8f8; --font-color: #27272a;