diff --git a/src/components/textNote/TextNoteContentDisplay.tsx b/src/components/textNote/TextNoteContentDisplay.tsx
index 2d07c81..c35da9e 100644
--- a/src/components/textNote/TextNoteContentDisplay.tsx
+++ b/src/components/textNote/TextNoteContentDisplay.tsx
@@ -61,6 +61,17 @@ const TextNoteContentDisplay = (props: TextNoteContentDisplayProps) => {
);
}
+ if (item.data.type === 'nevent' && props.embedding) {
+ return (
+
+
+
+ );
+ }
if (item.data.type === 'npub') {
return ;
}
diff --git a/src/components/textNote/TextNoteDisplay.tsx b/src/components/textNote/TextNoteDisplay.tsx
index d69439e..915a034 100644
--- a/src/components/textNote/TextNoteDisplay.tsx
+++ b/src/components/textNote/TextNoteDisplay.tsx
@@ -47,6 +47,8 @@ const TextNoteDisplay: Component = (props) => {
const { showProfile } = useModalState();
const timelineContext = useTimelineContext();
+ const [reacted, setReacted] = createSignal(false);
+ const [reposted, setReposted] = createSignal(false);
const [showReplyForm, setShowReplyForm] = createSignal(false);
const closeReplyForm = () => setShowReplyForm(false);
const [showOverflow, setShowOverflow] = createSignal(false);
@@ -61,11 +63,21 @@ const TextNoteDisplay: Component = (props) => {
pubkey: props.event.pubkey,
}));
- const { reactions, isReactedBy, invalidateReactions } = useReactions(() => ({
+ const {
+ reactions,
+ isReactedBy,
+ invalidateReactions,
+ query: reactionsQuery,
+ } = useReactions(() => ({
eventId: props.event.id,
}));
- const { reposts, isRepostedBy, invalidateReposts } = useReposts(() => ({
+ const {
+ reposts,
+ isRepostedBy,
+ invalidateReposts,
+ query: repostsQuery,
+ } = useReposts(() => ({
eventId: props.event.id,
}));
@@ -81,7 +93,9 @@ const TextNoteDisplay: Component = (props) => {
console.error('failed to publish reaction: ', err);
},
onSettled: () => {
- invalidateReactions().catch((err) => console.error('failed to refetch reactions', err));
+ invalidateReactions()
+ .then(() => reactionsQuery.refetch())
+ .catch((err) => console.error('failed to refetch reactions', err));
},
});
@@ -95,7 +109,9 @@ const TextNoteDisplay: Component = (props) => {
console.error('failed to publish repost: ', err);
},
onSettled: () => {
- invalidateReposts().catch((err) => console.error('failed to refetch reposts', err));
+ invalidateReposts()
+ .then(() => repostsQuery.refetch())
+ .catch((err) => console.error('failed to refetch reposts', err));
},
});
@@ -156,11 +172,11 @@ const TextNoteDisplay: Component = (props) => {
const isReactedByMe = createMemo(() => {
const p = pubkey();
- return p != null && isReactedBy(p);
+ return (p != null && isReactedBy(p)) || reacted();
});
const isRepostedByMe = createMemo(() => {
const p = pubkey();
- return p != null && isRepostedBy(p);
+ return (p != null && isRepostedBy(p)) || reposted();
});
const showReplyEvent = (): string | undefined => {
@@ -192,6 +208,7 @@ const TextNoteDisplay: Component = (props) => {
eventId: eventIdNonNull,
notifyPubkey: props.event.pubkey,
});
+ setReposted(true);
});
};
@@ -211,6 +228,7 @@ const TextNoteDisplay: Component = (props) => {
eventId: eventIdNonNull,
notifyPubkey: props.event.pubkey,
});
+ setReacted(true);
});
};
diff --git a/src/components/textNote/TextNoteDisplayById.tsx b/src/components/textNote/TextNoteDisplayById.tsx
index 5e90950..8f0b816 100644
--- a/src/components/textNote/TextNoteDisplayById.tsx
+++ b/src/components/textNote/TextNoteDisplayById.tsx
@@ -1,4 +1,6 @@
-import { Switch, Match, type Component } from 'solid-js';
+import { Switch, Match, type Component, Show } from 'solid-js';
+
+import { Kind } from 'nostr-tools';
import EventLink from '@/components/EventLink';
// eslint-disable-next-line import/no-cycle
@@ -13,22 +15,29 @@ type TextNoteDisplayByIdProps = Omit & {
const TextNoteDisplayById: Component = (props) => {
const { shouldMuteEvent } = useConfig();
- const { event, query: eventQuery } = useEvent(() =>
+ const { event: fetchedEvent, query: eventQuery } = useEvent(() =>
ensureNonNull([props.eventId] as const)(([eventIdNonNull]) => ({
eventId: eventIdNonNull,
})),
);
const hidden = (): boolean => {
- const ev = event();
+ const ev = fetchedEvent();
return ev != null && shouldMuteEvent(ev);
};
return (
{null}
-
- {(ev) => }
+
+ {(event) => (
+ 未対応のイベント種別({event.kind})}
+ >
+
+
+ )}
{(id) => (
diff --git a/src/nostr/useBatchedEvents.ts b/src/nostr/useBatchedEvents.ts
index d2b3d47..dc1847e 100644
--- a/src/nostr/useBatchedEvents.ts
+++ b/src/nostr/useBatchedEvents.ts
@@ -298,7 +298,7 @@ export const useProfile = (propsProvider: () => UseProfileProps | null): UseProf
try {
queryClient.setQueryData(queryKey, latestEvent());
} catch (err) {
- console.error('updating profile error', err);
+ console.error('updating profile error: ', err);
}
});
return latestEvent();
@@ -472,7 +472,7 @@ export const useFollowings = (propsProvider: () => UseFollowingsProps | null): U
try {
queryClient.setQueryData(queryKey, latestEvent());
} catch (err) {
- console.error('updating followings error', err);
+ console.error('updating followings error: ', err);
}
});
return latestEvent();