-
-
- {profile.ident}
+
+
+ {user.display_name || user.displayName || user.name}
- {displayNpub(profile.pubkey, 16)}
+ {displayNpub(pubkey, 16)}
diff --git a/src/shared/composer/mention/list.tsx b/src/shared/composer/mention/list.tsx
deleted file mode 100644
index a34a2b3a..00000000
--- a/src/shared/composer/mention/list.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import { NDKUserProfile } from '@nostr-dev-kit/ndk';
-import { type SuggestionProps } from '@tiptap/suggestion';
-import {
- ForwardedRef,
- forwardRef,
- useEffect,
- useImperativeHandle,
- useState,
-} from 'react';
-import { twMerge } from 'tailwind-merge';
-
-import { MentionItem } from '@shared/composer';
-
-export const MentionList = forwardRef(
- (props: SuggestionProps, ref: ForwardedRef
) => {
- const [selectedIndex, setSelectedIndex] = useState(0);
-
- const selectItem = (index) => {
- const item = props.items[index];
-
- if (item) {
- props.command({ id: item });
- }
- };
-
- const upHandler = () => {
- setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);
- };
-
- const downHandler = () => {
- setSelectedIndex((selectedIndex + 1) % props.items.length);
- };
-
- const enterHandler = () => {
- selectItem(selectedIndex);
- };
-
- useEffect(() => setSelectedIndex(0), [props.items]);
-
- useImperativeHandle(ref, () => ({
- onKeyDown: ({ event }) => {
- if (event.key === 'ArrowUp') {
- upHandler();
- return true;
- }
-
- if (event.key === 'ArrowDown') {
- downHandler();
- return true;
- }
-
- if (event.key === 'Enter') {
- enterHandler();
- return true;
- }
-
- return false;
- },
- }));
-
- return (
-
- {props.items.length ? (
- props.items.map((item: NDKUserProfile, index: number) => (
-
- ))
- ) : (
-
No result
- )}
-
- );
- }
-);
-
-MentionList.displayName = 'MentionList';
diff --git a/src/shared/composer/mention/popup.tsx b/src/shared/composer/mention/popup.tsx
index 04cccffb..a9004cbb 100644
--- a/src/shared/composer/mention/popup.tsx
+++ b/src/shared/composer/mention/popup.tsx
@@ -1,7 +1,38 @@
-export function MentionPopup() {
+import * as Popover from '@radix-ui/react-popover';
+import { Editor } from '@tiptap/react';
+import { nip19 } from 'nostr-tools';
+
+import { useStorage } from '@libs/storage/provider';
+
+import { MentionItem } from '@shared/composer';
+import { MentionIcon } from '@shared/icons';
+
+export function MentionPopup({ editor }: { editor: Editor }) {
+ const { db } = useStorage();
+
+ const insertMention = (pubkey: string) => {
+ editor.commands.insertContent(`nostr:${nip19.npubEncode(pubkey)}`);
+ };
+
return (
-
+
+
+
+
+
+
+ {db.account.follows.map((item) => (
+
+ ))}
+
+
+
);
}
diff --git a/src/shared/composer/mention/suggestion.tsx b/src/shared/composer/mention/suggestion.tsx
deleted file mode 100644
index 9eb62391..00000000
--- a/src/shared/composer/mention/suggestion.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import { ReactRenderer } from '@tiptap/react';
-import tippy from 'tippy.js';
-
-import { MentionList } from '@shared/composer';
-
-export const Suggestion = {
- items: async ({ query }) => {
- const users = [];
- return users
- .filter((item) => item.ident.toLowerCase().startsWith(query.toLowerCase()))
- .slice(0, 5);
- },
-
- render: () => {
- let component;
- let popup;
-
- return {
- onStart: (props) => {
- component = new ReactRenderer(MentionList, {
- props,
- editor: props.editor,
- });
-
- if (!props.clientRect) {
- return;
- }
-
- popup = tippy('body', {
- getReferenceClientRect: props.clientRect,
- appendTo: () => document.body,
- content: component.element,
- showOnCreate: true,
- interactive: true,
- trigger: 'manual',
- placement: 'bottom-start',
- });
- },
-
- onUpdate(props) {
- component.updateProps(props);
-
- if (!props.clientRect) {
- return;
- }
-
- popup[0].setProps({
- getReferenceClientRect: props.clientRect,
- });
- },
-
- onKeyDown(props) {
- if (props.event.key === 'Escape') {
- popup[0].hide();
-
- return true;
- }
-
- return component.ref?.onKeyDown(props);
- },
-
- onExit() {
- popup[0].destroy();
- component.destroy();
- },
- };
- },
-};
diff --git a/src/shared/notes/actions.tsx b/src/shared/notes/actions.tsx
index c9bdb62f..7e58fdcf 100644
--- a/src/shared/notes/actions.tsx
+++ b/src/shared/notes/actions.tsx
@@ -50,7 +50,7 @@ export function NoteActions({
- Open thread
+ Focus
diff --git a/src/shared/user.tsx b/src/shared/user.tsx
index a8a3be2d..11587379 100644
--- a/src/shared/user.tsx
+++ b/src/shared/user.tsx
@@ -88,7 +88,7 @@ export function User({