small improvement to show zaps look on mobile

This commit is contained in:
hzrd149
2023-03-09 17:17:27 -06:00
parent 479446d948
commit e1e970b152

View File

@@ -10,17 +10,20 @@ import {
Text, Text,
Flex, Flex,
ButtonGroup, ButtonGroup,
Box,
} from "@chakra-ui/react"; } from "@chakra-ui/react";
import { NostrEvent } from "../../types/nostr-event"; import { NostrEvent } from "../../types/nostr-event";
import { UserAvatarLink } from "../user-avatar-link"; import { UserAvatarLink } from "../user-avatar-link";
import { UserLink } from "../user-link"; import { UserLink } from "../user-link";
import moment from "moment"; import moment from "moment";
import { convertTimestampToDate } from "../../helpers/date"; import { convertTimestampToDate } from "../../helpers/date";
import { DislikeIcon, LikeIcon } from "../icons"; import { DislikeIcon, LightningIcon, LikeIcon } from "../icons";
import { parseZapNote } from "../../helpers/zaps"; import { parseZapNote } from "../../helpers/zaps";
import { readablizeSats } from "../../helpers/bolt11"; import { readablizeSats } from "../../helpers/bolt11";
import useEventReactions from "../../hooks/use-event-reactions"; import useEventReactions from "../../hooks/use-event-reactions";
import useEventZaps from "../../hooks/use-event-zaps"; import useEventZaps from "../../hooks/use-event-zaps";
import { NoteContents } from "./note-contents";
import { useIsMobile } from "../../hooks/use-is-mobile";
function getReactionIcon(content: string) { function getReactionIcon(content: string) {
switch (content) { switch (content) {
@@ -47,23 +50,28 @@ const ReactionEvent = React.memo(({ event }: { event: NostrEvent }) => (
)); ));
const ZapEvent = React.memo(({ event }: { event: NostrEvent }) => { const ZapEvent = React.memo(({ event }: { event: NostrEvent }) => {
const isMobile = useIsMobile();
try { try {
const { payment, request } = parseZapNote(event); const { payment, request } = parseZapNote(event);
if (!payment.amount) return null; if (!payment.amount) return null;
return ( return (
<Flex gap="2"> <Box borderWidth="1px" borderRadius="lg" py="2" px={isMobile ? "2" : "4"}>
<Text>{readablizeSats(payment.amount / 1000)}</Text> <Flex gap="2" justifyContent="space-between">
<Flex overflow="hidden" gap="2"> <Box>
<UserAvatarLink pubkey={request.pubkey} size="xs" /> <UserAvatarLink pubkey={request.pubkey} size="xs" mr="2" />
<UserLink pubkey={request.pubkey} /> <UserLink pubkey={request.pubkey} />
</Box>
<Text fontWeight="bold">
{readablizeSats(payment.amount / 1000)} <LightningIcon color="yellow.500" />
</Text>
{/* <Text width="35%" textAlign="right">
{moment(convertTimestampToDate(event.created_at)).fromNow()}
</Text> */}
</Flex> </Flex>
<Text>{request.content}</Text> <Text>{request.content}</Text>
<Text ml="auto" flexShrink={0}> </Box>
{moment(convertTimestampToDate(event.created_at)).fromNow()}
</Text>
</Flex>
); );
} catch (e) { } catch (e) {
return <Text>Invalid Zap</Text>; return <Text>Invalid Zap</Text>;
@@ -82,13 +90,14 @@ export default function NoteReactionsModal({
const zaps = useEventZaps(noteId, [], true) ?? []; const zaps = useEventZaps(noteId, [], true) ?? [];
const reactions = useEventReactions(noteId, [], true) ?? []; const reactions = useEventReactions(noteId, [], true) ?? [];
const [selected, setSelected] = useState("reactions"); const [selected, setSelected] = useState("reactions");
const isMobile = useIsMobile();
return ( return (
<Modal isOpen={isOpen} onClose={onClose}> <Modal isOpen={isOpen} onClose={onClose} size="lg">
<ModalOverlay /> <ModalOverlay />
<ModalContent> <ModalContent>
<ModalCloseButton /> <ModalCloseButton />
<ModalBody> <ModalBody p={isMobile ? "2" : "4"}>
<Flex direction="column" gap="2"> <Flex direction="column" gap="2">
<ButtonGroup> <ButtonGroup>
<Button size="sm" variant="outline" onClick={() => setSelected("reactions")}> <Button size="sm" variant="outline" onClick={() => setSelected("reactions")}>