From df8bc01e925ad2184c8eb32f46560579100cc3ad Mon Sep 17 00:00:00 2001 From: Shusui MOYATANI Date: Tue, 13 Jun 2023 00:39:03 +0900 Subject: [PATCH] update --- src/components/column/BookmarkColumn.tsx | 50 +++++++++++++++++++ src/components/column/Columns.tsx | 10 ++++ .../event/textNote/TextNoteContentDisplay.tsx | 3 +- src/components/modal/AddColumn.tsx | 12 +++++ src/components/timeline/Bookmark.tsx | 50 +++++++++++++++++++ src/core/column.ts | 8 +++ src/nostr/event/GenericEvent.ts | 44 ++-------------- src/nostr/event/Tags.ts | 20 ++++++++ src/nostr/event/TagsBase.ts | 42 ++++++++++++++++ src/nostr/event/{channel.tsx => channel.ts} | 0 src/nostr/useBatchedEvents.ts | 2 +- src/nostr/useBookMarks.ts | 23 +++++++++ src/nostr/useDecrypt.ts | 49 ++++++++++++++++++ src/nostr/useFollowers.ts | 2 +- src/nostr/useParameterizedReplaceableEvent.ts | 2 +- src/nostr/useReactions.ts | 7 ++- src/nostr/useReposts.ts | 7 ++- 17 files changed, 286 insertions(+), 45 deletions(-) create mode 100644 src/components/column/BookmarkColumn.tsx create mode 100644 src/components/timeline/Bookmark.tsx create mode 100644 src/nostr/event/Tags.ts create mode 100644 src/nostr/event/TagsBase.ts rename src/nostr/event/{channel.tsx => channel.ts} (100%) create mode 100644 src/nostr/useBookMarks.ts create mode 100644 src/nostr/useDecrypt.ts diff --git a/src/components/column/BookmarkColumn.tsx b/src/components/column/BookmarkColumn.tsx new file mode 100644 index 0000000..c7126e5 --- /dev/null +++ b/src/components/column/BookmarkColumn.tsx @@ -0,0 +1,50 @@ +import { Component, Show, createEffect, onCleanup, onMount } from 'solid-js'; + +import BookmarkIcon from 'heroicons/24/outline/bookmark.svg'; + +import BasicColumnHeader from '@/components/column/BasicColumnHeader'; +import Column from '@/components/column/Column'; +import ColumnSettings from '@/components/column/ColumnSettings'; +import Bookmark from '@/components/timeline/Bookmark'; +import { BookmarkColumnType } from '@/core/column'; +import useConfig from '@/core/useConfig'; +import useDecrypt from '@/nostr/useDecrypt'; +import useParameterizedReplaceableEvent from '@/nostr/useParameterizedReplaceableEvent'; + +type BookmarkColumnDisplayProps = { + columnIndex: number; + lastColumn: boolean; + column: BookmarkColumnType; +}; + +const BookmarkColumn: Component = (props) => { + const { removeColumn } = useConfig(); + + const { event } = useParameterizedReplaceableEvent(() => ({ + kind: 30001, + author: props.column.pubkey, + identifier: props.column.identifier, + })); + + return ( + } + settings={() => } + onClose={() => removeColumn(props.column.id)} + /> + } + width={props.column.width} + columnIndex={props.columnIndex} + lastColumn={props.lastColumn} + > + + {(ev) => } + + + ); +}; + +export default BookmarkColumn; diff --git a/src/components/column/Columns.tsx b/src/components/column/Columns.tsx index eb174b9..30ea38d 100644 --- a/src/components/column/Columns.tsx +++ b/src/components/column/Columns.tsx @@ -1,5 +1,6 @@ import { For, Switch, Match } from 'solid-js'; +import BookmarkColumn from '@/components/column/BookmarkColumn'; import FollowingColumn from '@/components/column/FollwingColumn'; import NotificationColumn from '@/components/column/NotificationColumn'; import PostsColumn from '@/components/column/PostsColumn'; @@ -64,6 +65,15 @@ const Columns = () => { /> )} + + {(bookmarkColumn) => ( + + )} + {(reactionsColumn) => ( { class="inline-block h-8 max-w-[128px] align-middle" src={emojiUrl} alt={item.content} + title={item.shortcode} /> ); } diff --git a/src/components/modal/AddColumn.tsx b/src/components/modal/AddColumn.tsx index 94ebd76..86c670b 100644 --- a/src/components/modal/AddColumn.tsx +++ b/src/components/modal/AddColumn.tsx @@ -1,6 +1,7 @@ import { Component } from 'solid-js'; import Bell from 'heroicons/24/outline/bell.svg'; +import BookmarkIcon from 'heroicons/24/outline/bookmark.svg'; import ChatBubbleLeftRight from 'heroicons/24/outline/chat-bubble-left-right.svg'; import GlobeAlt from 'heroicons/24/outline/globe-alt.svg'; import Heart from 'heroicons/24/outline/heart.svg'; @@ -115,6 +116,17 @@ const AddColumn: Component = (props) => { チャンネル */} + {/* + + */}