From 0a6865431d4427257b06f1c5e151d6af712e8da7 Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Fri, 16 Jun 2023 18:41:44 +0700 Subject: [PATCH] update channel --- src/app/channel/components/createModal.tsx | 8 +- src/app/channel/components/item.tsx | 16 +- src/app/channel/components/list.tsx | 6 +- src/app/channel/components/messageList.tsx | 2 +- src/app/channel/components/messages/item.tsx | 67 ++--- src/app/channel/components/metadata.tsx | 9 +- src/app/channel/components/updateModal.tsx | 267 ------------------- src/app/channel/hooks/useChannelProfile.tsx | 54 ++-- src/app/channel/pages/index.page.tsx | 184 +++++++------ src/app/chat/components/item.tsx | 10 +- src/app/chat/components/list.tsx | 12 +- src/app/chat/components/self.tsx | 13 +- src/app/chat/pages/index.page.tsx | 2 +- src/app/space/components/blocks/feed.tsx | 2 +- src/app/space/components/blocks/image.tsx | 2 +- src/app/user/_default.page.tsx | 1 + src/app/user/layout.tsx | 14 + src/app/user/pages/index.page.tsx | 13 + src/libs/storage.tsx | 2 +- src/shared/navigation.tsx | 8 +- src/shared/notes/base.tsx | 2 +- src/shared/notes/metadata/reply.tsx | 2 +- src/shared/notes/metadata/repost.tsx | 2 +- src/shared/notes/metadata/zap.tsx | 2 +- src/shared/notes/replies/item.tsx | 2 +- src/shared/user.tsx | 8 +- src/stores/channels.tsx | 15 +- src/utils/parser.tsx | 4 +- 28 files changed, 240 insertions(+), 489 deletions(-) delete mode 100644 src/app/channel/components/updateModal.tsx create mode 100644 src/app/user/_default.page.tsx create mode 100644 src/app/user/layout.tsx create mode 100644 src/app/user/pages/index.page.tsx diff --git a/src/app/channel/components/createModal.tsx b/src/app/channel/components/createModal.tsx index 9c2226c4..832701e3 100644 --- a/src/app/channel/components/createModal.tsx +++ b/src/app/channel/components/createModal.tsx @@ -80,15 +80,13 @@ export function ChannelCreateModal() { diff --git a/src/app/channel/components/item.tsx b/src/app/channel/components/item.tsx index 053ffc81..319c395e 100644 --- a/src/app/channel/components/item.tsx +++ b/src/app/channel/components/item.tsx @@ -3,7 +3,7 @@ import { usePageContext } from "@utils/hooks/usePageContext"; import { twMerge } from "tailwind-merge"; export function ChannelsListItem({ data }: { data: any }) { - const channel: any = useChannelProfile(data.event_id, data.pubkey); + const channel: any = useChannelProfile(data.event_id); const pageContext = usePageContext(); const searchParams: any = pageContext.urlParsed.search; @@ -11,20 +11,16 @@ export function ChannelsListItem({ data }: { data: any }) { return (
# diff --git a/src/app/channel/components/list.tsx b/src/app/channel/components/list.tsx index c97b41dc..da5dd53c 100644 --- a/src/app/channel/components/list.tsx +++ b/src/app/channel/components/list.tsx @@ -12,14 +12,14 @@ export function ChannelsList() { }, [fetchChannels]); return ( -
+
{!channels ? ( <> -
+
-
+
diff --git a/src/app/channel/components/messageList.tsx b/src/app/channel/components/messageList.tsx index eb76bf23..adbe1b8c 100644 --- a/src/app/channel/components/messageList.tsx +++ b/src/app/channel/components/messageList.tsx @@ -28,7 +28,7 @@ export function ChannelMessageList() {
( diff --git a/src/app/channel/components/messages/item.tsx b/src/app/channel/components/messages/item.tsx index 96bbc6a0..8dd8cd9e 100644 --- a/src/app/channel/components/messages/item.tsx +++ b/src/app/channel/components/messages/item.tsx @@ -2,65 +2,40 @@ import { MessageHideButton } from "@app/channel/components/messages/hideButton"; import { MessageMuteButton } from "@app/channel/components/messages/muteButton"; import { MessageReplyButton } from "@app/channel/components/messages/replyButton"; import { ChannelMessageUser } from "@app/channel/components/messages/user"; -import { ChannelMessageUserMute } from "@app/channel/components/messages/userMute"; +import { NDKEvent } from "@nostr-dev-kit/ndk"; import { MentionNote } from "@shared/notes/mentions/note"; import { ImagePreview } from "@shared/notes/preview/image"; import { VideoPreview } from "@shared/notes/preview/video"; import { parser } from "@utils/parser"; -import { useMemo, useState } from "react"; +import { useMemo } from "react"; -export function ChannelMessageItem({ data }: { data: any }) { +export function ChannelMessageItem({ data }: { data: NDKEvent }) { const content = useMemo(() => parser(data), [data]); - const [hide, setHide] = useState(data.hide); - - const toggleHide = () => { - setHide((prev) => !prev); - }; - - if (data.mute) - return ( -
- -
- ); return (
- {hide ? ( - <> -

- [hided message] -

- - +

+ {content.parsed} +

+ {Array.isArray(content.images) && content.images.length ? ( + ) : ( - <> -

- {content.parsed} -

- {Array.isArray(content.images) && content.images.length ? ( - - ) : ( - <> - )} - {Array.isArray(content.videos) && content.videos.length ? ( - - ) : ( - <> - )} - {Array.isArray(content.notes) && content.notes.length ? ( - content.notes.map((note: string) => ( - - )) - ) : ( - <> - )} - + <> + )} + {Array.isArray(content.videos) && content.videos.length ? ( + + ) : ( + <> + )} + {Array.isArray(content.notes) && content.notes.length ? ( + content.notes.map((note: string) => ( + + )) + ) : ( + <> )}
diff --git a/src/app/channel/components/metadata.tsx b/src/app/channel/components/metadata.tsx index 65c940f6..c08837f1 100644 --- a/src/app/channel/components/metadata.tsx +++ b/src/app/channel/components/metadata.tsx @@ -4,11 +4,8 @@ import { Image } from "@shared/image"; import { DEFAULT_AVATAR } from "@stores/constants"; import { nip19 } from "nostr-tools"; -export function ChannelMetadata({ - id, - pubkey, -}: { id: string; pubkey: string }) { - const metadata = useChannelProfile(id, pubkey); +export function ChannelMetadata({ id }: { id: string }) { + const metadata = useChannelProfile(id); const noteID = id ? nip19.noteEncode(id) : null; const copyNoteID = async () => { @@ -22,7 +19,7 @@ export function ChannelMetadata({
{id} diff --git a/src/app/channel/components/updateModal.tsx b/src/app/channel/components/updateModal.tsx deleted file mode 100644 index 3d3a674f..00000000 --- a/src/app/channel/components/updateModal.tsx +++ /dev/null @@ -1,267 +0,0 @@ -import { Dialog, Transition } from "@headlessui/react"; -import { getChannel } from "@libs/storage"; -import { NDKEvent, NDKPrivateKeySigner } from "@nostr-dev-kit/ndk"; -import { AvatarUploader } from "@shared/avatarUploader"; -import { CancelIcon, EditIcon } from "@shared/icons"; -import { Image } from "@shared/image"; -import { RelayContext } from "@shared/relayProvider"; -import { useActiveAccount } from "@stores/accounts"; -import { DEFAULT_AVATAR } from "@stores/constants"; -import { dateToUnix } from "@utils/date"; -import { Fragment, useContext, useEffect, useState } from "react"; -import { useForm } from "react-hook-form"; - -export function ChannelUpdateModal({ id }: { id: string }) { - const ndk = useContext(RelayContext); - const account = useActiveAccount((state: any) => state.account); - - const [isOpen, setIsOpen] = useState(false); - const [image, setImage] = useState(DEFAULT_AVATAR); - const [loading, setLoading] = useState(false); - - const closeModal = () => { - setIsOpen(false); - }; - - const openModal = () => { - setIsOpen(true); - }; - - const { - register, - handleSubmit, - reset, - setValue, - formState: { isDirty, isValid }, - } = useForm({ - defaultValues: async () => { - const channel = await getChannel(id); - const metadata = JSON.parse(channel.metadata); - // update image state - setImage(metadata.image); - // set default values - return metadata; - }, - }); - - const onSubmit = (data: any) => { - setLoading(true); - - try { - const signer = new NDKPrivateKeySigner(account.privkey); - ndk.signer = signer; - - const event = new NDKEvent(ndk); - // build event - event.content = JSON.stringify(data); - event.kind = 41; - event.created_at = dateToUnix(); - event.pubkey = account.pubkey; - event.tags = [["e", id]]; - - // publish event - event.publish(); - - // reset form - reset(); - - // close modal - setIsOpen(false); - } catch (e) { - console.log("error: ", e); - } - }; - - useEffect(() => { - setValue("picture", image); - }, [setValue, image]); - - return ( - <> - - - - -
- -
- - -
-
-
- - Update channel - - -
- - New metadata will be published on all relays, and will be - immediately available to all users, so please carefully. - -
-
-
-
- -
- -
- channel picture -
- -
-
-
-
- -
- -
-
-
- -
-