fix: ignore invalid event id and invalid pubkey

This commit is contained in:
Shusui MOYATANI
2023-05-14 03:26:25 +09:00
parent dd64ef1724
commit 1b15989faf
11 changed files with 258 additions and 199 deletions

View File

@@ -237,24 +237,23 @@ const { exec } = useBatch<TaskArg, TaskRes>(() => ({
const registeredTasks = textNoteTasks.get(event.id) ?? [];
resolveTasks(registeredTasks, event);
} else if (event.kind === Kind.Reaction) {
const eventTags = eventWrapper(event).taggedEvents();
eventTags.forEach((eventTag) => {
const taggedEventId = eventTag.id;
const registeredTasks = reactionsTasks.get(taggedEventId) ?? [];
// Use the last event id
const id = eventWrapper(event).lastTaggedEventId();
if (id != null) {
const registeredTasks = reactionsTasks.get(id) ?? [];
resolveTasks(registeredTasks, event);
});
}
} else if ((event.kind as number) === 6) {
const eventTags = eventWrapper(event).taggedEvents();
eventTags.forEach((eventTag) => {
const taggedEventId = eventTag.id;
const registeredTasks = repostsTasks.get(taggedEventId) ?? [];
// Use the last event id
const id = eventWrapper(event).lastTaggedEventId();
if (id != null) {
const registeredTasks = repostsTasks.get(id) ?? [];
resolveTasks(registeredTasks, event);
});
}
} else if (event.kind === Kind.Zap) {
const eventTags = eventWrapper(event).taggedEvents();
eventTags.forEach((eventTag) => {
const taggedEventId = eventTag.id;
const registeredTasks = repostsTasks.get(taggedEventId) ?? [];
const eTags = eventWrapper(event).eTags();
eTags.forEach(([, id]) => {
const registeredTasks = repostsTasks.get(id) ?? [];
resolveTasks(registeredTasks, event);
});
} else if (event.kind === Kind.Contacts) {
@@ -298,7 +297,7 @@ export const useProfile = (propsProvider: () => UseProfileProps | null): UseProf
try {
queryClient.setQueryData(queryKey, latestEvent());
} catch (err) {
console.error('updating profile error: ', err);
console.error('error occurred while updating profile cache: ', err);
}
});
return latestEvent();
@@ -472,7 +471,7 @@ export const useFollowings = (propsProvider: () => UseFollowingsProps | null): U
try {
queryClient.setQueryData(queryKey, latestEvent());
} catch (err) {
console.error('updating followings error: ', err);
console.error('error occurred while updating followings cache: ', err);
}
});
return latestEvent();
@@ -491,14 +490,12 @@ export const useFollowings = (propsProvider: () => UseFollowingsProps | null): U
const followings = () => {
if (query.data == null) return [];
const event = query.data;
const result: Following[] = [];
event.tags.forEach((tag) => {
// TODO zodにする
const [tagName, followingPubkey, mainRelayUrl, petname] = tag;
if (!tag.every((e) => typeof e === 'string')) return;
if (tagName !== 'p') return;
// TODO zodにする
const event = eventWrapper(query.data);
event.pTags().forEach((tag) => {
const [, followingPubkey, mainRelayUrl, petname] = tag;
const following: Following = { pubkey: followingPubkey, petname };
if (mainRelayUrl != null && mainRelayUrl.length > 0) {