Merge pull request '[PR]: chore: Use exist instead of findOneBy to check for existence' (#10484) from naskya/calckey:chore/findOneBy-exist into develop

Reviewed-on: https://codeberg.org/calckey/calckey/pulls/10484
This commit is contained in:
Kainoa Kanter 2023-07-13 18:44:05 +00:00
commit d2926e0822
33 changed files with 206 additions and 158 deletions

View file

@ -147,11 +147,11 @@ export async function fetchPerson(
} }
//#region Returns if already registered with this server //#region Returns if already registered with this server
const exist = await Users.findOneBy({ uri }); const user = await Users.findOneBy({ uri });
if (exist) { if (user != null) {
await uriPersonCache.set(uri, exist); await uriPersonCache.set(uri, user);
return exist; return user;
} }
//#endregion //#endregion
@ -396,9 +396,9 @@ export async function updatePerson(
} }
//#region Already registered on this server? //#region Already registered on this server?
const exist = (await Users.findOneBy({ uri })) as IRemoteUser; const user = (await Users.findOneBy({ uri })) as IRemoteUser;
if (exist == null) { if (user == null) {
return; return;
} }
//#endregion //#endregion
@ -416,17 +416,15 @@ export async function updatePerson(
[person.icon, person.image].map((img) => [person.icon, person.image].map((img) =>
img == null img == null
? Promise.resolve(null) ? Promise.resolve(null)
: resolveImage(exist, img).catch(() => null), : resolveImage(user, img).catch(() => null),
), ),
); );
// Custom pictogram acquisition // Custom pictogram acquisition
const emojis = await extractEmojis(person.tag || [], exist.host).catch( const emojis = await extractEmojis(person.tag || [], user.host).catch((e) => {
(e) => { logger.info(`extractEmojis: ${e}`);
logger.info(`extractEmojis: ${e}`); return [] as Emoji[];
return [] as Emoji[]; });
},
);
const emojiNames = emojis.map((emoji) => emoji.name); const emojiNames = emojis.map((emoji) => emoji.name);
@ -518,11 +516,11 @@ export async function updatePerson(
} }
// Update user // Update user
await Users.update(exist.id, updates); await Users.update(user.id, updates);
if (person.publicKey) { if (person.publicKey) {
await UserPublickeys.update( await UserPublickeys.update(
{ userId: exist.id }, { userId: user.id },
{ {
keyId: person.publicKey.id, keyId: person.publicKey.id,
keyPem: person.publicKey.publicKeyPem, keyPem: person.publicKey.publicKeyPem,
@ -531,7 +529,7 @@ export async function updatePerson(
} }
await UserProfiles.update( await UserProfiles.update(
{ userId: exist.id }, { userId: user.id },
{ {
url: url, url: url,
fields, fields,
@ -543,15 +541,15 @@ export async function updatePerson(
}, },
); );
publishInternalEvent("remoteUserUpdated", { id: exist.id }); publishInternalEvent("remoteUserUpdated", { id: user.id });
// Hashtag Update // Hashtag Update
updateUsertags(exist, tags); updateUsertags(user, tags);
// If the user in question is a follower, followers will also be updated. // If the user in question is a follower, followers will also be updated.
await Followings.update( await Followings.update(
{ {
followerId: exist.id, followerId: user.id,
}, },
{ {
followerSharedInbox: followerSharedInbox:
@ -560,7 +558,7 @@ export async function updatePerson(
}, },
); );
await updateFeatured(exist.id, resolver).catch((err) => logger.error(err)); await updateFeatured(user.id, resolver).catch((err) => logger.error(err));
} }
/** /**
@ -576,10 +574,10 @@ export async function resolvePerson(
if (typeof uri !== "string") throw new Error("uri is not string"); if (typeof uri !== "string") throw new Error("uri is not string");
//#region If already registered on this server, return it. //#region If already registered on this server, return it.
const exist = await fetchPerson(uri); const user = await fetchPerson(uri);
if (exist) { if (user != null) {
return exist; return user;
} }
//#endregion //#endregion

View file

@ -40,9 +40,9 @@ export default define(meta, paramDef, async (ps, user) => {
throw err; throw err;
}); });
const exist = await PromoNotes.findOneBy({ noteId: note.id }); const exist = await PromoNotes.exist({ where: { noteId: note.id } });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyPromoted); throw new ApiError(meta.errors.alreadyPromoted);
} }

View file

@ -41,12 +41,14 @@ export default define(meta, paramDef, async (ps, user) => {
const accessToken = secureRndstr(32, true); const accessToken = secureRndstr(32, true);
// Fetch exist access token // Fetch exist access token
const exist = await AccessTokens.findOneBy({ const exist = await AccessTokens.exist({
appId: session.appId, where: {
userId: user.id, appId: session.appId,
userId: user.id,
},
}); });
if (exist == null) { if (!exist) {
// Lookup app // Lookup app
const app = await Apps.findOneByOrFail({ id: session.appId }); const app = await Apps.findOneByOrFail({ id: session.appId });

View file

@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check if already blocking // Check if already blocking
const exist = await Blockings.findOneBy({ const exist = await Blockings.exist({
blockerId: blocker.id, where: {
blockeeId: blockee.id, blockerId: blocker.id,
blockeeId: blockee.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyBlocking); throw new ApiError(meta.errors.alreadyBlocking);
} }

View file

@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check not blocking // Check not blocking
const exist = await Blockings.findOneBy({ const exist = await Blockings.exist({
blockerId: blocker.id, where: {
blockeeId: blockee.id, blockerId: blocker.id,
blockeeId: blockee.id,
},
}); });
if (exist == null) { if (!exist) {
throw new ApiError(meta.errors.notBlocking); throw new ApiError(meta.errors.notBlocking);
} }

View file

@ -57,12 +57,14 @@ export default define(meta, paramDef, async (ps, user) => {
throw err; throw err;
}); });
const exist = await ClipNotes.findOneBy({ const exist = await ClipNotes.exist({
noteId: note.id, where: {
clipId: clip.id, noteId: note.id,
clipId: clip.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyClipped); throw new ApiError(meta.errors.alreadyClipped);
} }

View file

@ -26,10 +26,12 @@ export const paramDef = {
} as const; } as const;
export default define(meta, paramDef, async (ps, user) => { export default define(meta, paramDef, async (ps, user) => {
const file = await DriveFiles.findOneBy({ const exist = await DriveFiles.exist({
md5: ps.md5, where: {
userId: user.id, md5: ps.md5,
userId: user.id,
},
}); });
return file != null; return exist;
}); });

View file

@ -82,12 +82,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check if already following // Check if already following
const exist = await Followings.findOneBy({ const exist = await Followings.exist({
followerId: follower.id, where: {
followeeId: followee.id, followerId: follower.id,
followeeId: followee.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyFollowing); throw new ApiError(meta.errors.alreadyFollowing);
} }

View file

@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check not following // Check not following
const exist = await Followings.findOneBy({ const exist = await Followings.exist({
followerId: follower.id, where: {
followeeId: followee.id, followerId: follower.id,
followeeId: followee.id,
},
}); });
if (exist == null) { if (!exist) {
throw new ApiError(meta.errors.notFollowing); throw new ApiError(meta.errors.notFollowing);
} }

View file

@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check not following // Check not following
const exist = await Followings.findOneBy({ const exist = await Followings.exist({
followerId: follower.id, where: {
followeeId: followee.id, followerId: follower.id,
followeeId: followee.id,
},
}); });
if (exist == null) { if (!exist) {
throw new ApiError(meta.errors.notFollowing); throw new ApiError(meta.errors.notFollowing);
} }

View file

@ -40,12 +40,14 @@ export default define(meta, paramDef, async (ps, user) => {
} }
// if already liked // if already liked
const exist = await GalleryLikes.findOneBy({ const exist = await GalleryLikes.exist({
postId: post.id, where: {
userId: user.id, postId: post.id,
userId: user.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyLiked); throw new ApiError(meta.errors.alreadyLiked);
} }

View file

@ -38,17 +38,17 @@ export default define(meta, paramDef, async (ps, user) => {
throw new ApiError(meta.errors.noSuchPost); throw new ApiError(meta.errors.noSuchPost);
} }
const exist = await GalleryLikes.findOneBy({ const like = await GalleryLikes.findOneBy({
postId: post.id, postId: post.id,
userId: user.id, userId: user.id,
}); });
if (exist == null) { if (like == null) {
throw new ApiError(meta.errors.notLiked); throw new ApiError(meta.errors.notLiked);
} }
// Delete like // Delete like
await GalleryLikes.delete(exist.id); await GalleryLikes.delete(like.id);
GalleryPosts.decrement({ id: post.id }, "likedCount", 1); GalleryPosts.decrement({ id: post.id }, "likedCount", 1);
}); });

View file

@ -30,19 +30,23 @@ export const paramDef = {
export default define(meta, paramDef, async (ps, user) => { export default define(meta, paramDef, async (ps, user) => {
// Check if announcement exists // Check if announcement exists
const announcement = await Announcements.findOneBy({ id: ps.announcementId }); const exist = await Announcements.exist({
where: { id: ps.announcementId },
});
if (announcement == null) { if (!exist) {
throw new ApiError(meta.errors.noSuchAnnouncement); throw new ApiError(meta.errors.noSuchAnnouncement);
} }
// Check if already read // Check if already read
const read = await AnnouncementReads.findOneBy({ const read = await AnnouncementReads.exist({
announcementId: ps.announcementId, where: {
userId: user.id, announcementId: ps.announcementId,
userId: user.id,
},
}); });
if (read != null) { if (read) {
return; return;
} }

View file

@ -17,9 +17,9 @@ export const paramDef = {
} as const; } as const;
export default define(meta, paramDef, async (ps, user) => { export default define(meta, paramDef, async (ps, user) => {
const token = await AccessTokens.findOneBy({ id: ps.tokenId }); const exist = await AccessTokens.exist({ where: { id: ps.tokenId } });
if (token) { if (exist) {
await AccessTokens.delete({ await AccessTokens.delete({
id: ps.tokenId, id: ps.tokenId,
userId: user.id, userId: user.id,

View file

@ -64,12 +64,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check if already muting // Check if already muting
const exist = await Mutings.findOneBy({ const exist = await Mutings.exist({
muterId: muter.id, where: {
muteeId: mutee.id, muterId: muter.id,
muteeId: mutee.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyMuting); throw new ApiError(meta.errors.alreadyMuting);
} }

View file

@ -56,18 +56,18 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check not muting // Check not muting
const exist = await Mutings.findOneBy({ const muting = await Mutings.findOneBy({
muterId: muter.id, muterId: muter.id,
muteeId: mutee.id, muteeId: mutee.id,
}); });
if (exist == null) { if (muting == null) {
throw new ApiError(meta.errors.notMuting); throw new ApiError(meta.errors.notMuting);
} }
// Delete mute // Delete mute
await Mutings.delete({ await Mutings.delete({
id: exist.id, id: muting.id,
}); });
publishUserEvent(user.id, "unmute", mutee); publishUserEvent(user.id, "unmute", mutee);

View file

@ -224,11 +224,13 @@ export default define(meta, paramDef, async (ps, user) => {
// Check blocking // Check blocking
if (renote.userId !== user.id) { if (renote.userId !== user.id) {
const block = await Blockings.findOneBy({ const isBlocked = await Blockings.exist({
blockerId: renote.userId, where: {
blockeeId: user.id, blockerId: renote.userId,
blockeeId: user.id,
},
}); });
if (block) { if (isBlocked) {
throw new ApiError(meta.errors.youHaveBeenBlocked); throw new ApiError(meta.errors.youHaveBeenBlocked);
} }
} }
@ -249,11 +251,13 @@ export default define(meta, paramDef, async (ps, user) => {
// Check blocking // Check blocking
if (reply.userId !== user.id) { if (reply.userId !== user.id) {
const block = await Blockings.findOneBy({ const isBlocked = await Blockings.exist({
blockerId: reply.userId, where: {
blockeeId: user.id, blockerId: reply.userId,
blockeeId: user.id,
},
}); });
if (block) { if (isBlocked) {
throw new ApiError(meta.errors.youHaveBeenBlocked); throw new ApiError(meta.errors.youHaveBeenBlocked);
} }
} }

View file

@ -43,12 +43,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// if already favorited // if already favorited
const exist = await NoteFavorites.findOneBy({ const exist = await NoteFavorites.exist({
noteId: note.id, where: {
userId: user.id, noteId: note.id,
userId: user.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyFavorited); throw new ApiError(meta.errors.alreadyFavorited);
} }

View file

@ -42,15 +42,15 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// if already favorited // if already favorited
const exist = await NoteFavorites.findOneBy({ const favorite = await NoteFavorites.findOneBy({
noteId: note.id, noteId: note.id,
userId: user.id, userId: user.id,
}); });
if (exist == null) { if (favorite == null) {
throw new ApiError(meta.errors.notFavorited); throw new ApiError(meta.errors.notFavorited);
} }
// Delete favorite // Delete favorite
await NoteFavorites.delete(exist.id); await NoteFavorites.delete(favorite.id);
}); });

View file

@ -40,12 +40,14 @@ export default define(meta, paramDef, async (ps, user) => {
} }
// if already liked // if already liked
const exist = await PageLikes.findOneBy({ const exist = await PageLikes.exist({
pageId: page.id, where: {
userId: user.id, pageId: page.id,
userId: user.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyLiked); throw new ApiError(meta.errors.alreadyLiked);
} }

View file

@ -38,17 +38,17 @@ export default define(meta, paramDef, async (ps, user) => {
throw new ApiError(meta.errors.noSuchPage); throw new ApiError(meta.errors.noSuchPage);
} }
const exist = await PageLikes.findOneBy({ const like = await PageLikes.findOneBy({
pageId: page.id, pageId: page.id,
userId: user.id, userId: user.id,
}); });
if (exist == null) { if (like == null) {
throw new ApiError(meta.errors.notLiked); throw new ApiError(meta.errors.notLiked);
} }
// Delete like // Delete like
await PageLikes.delete(exist.id); await PageLikes.delete(like.id);
Pages.decrement({ id: page.id }, "likedCount", 1); Pages.decrement({ id: page.id }, "likedCount", 1);
}); });

View file

@ -33,12 +33,14 @@ export default define(meta, paramDef, async (ps, user) => {
throw err; throw err;
}); });
const exist = await PromoReads.findOneBy({ const exist = await PromoReads.exist({
noteId: note.id, where: {
userId: user.id, noteId: note.id,
userId: user.id,
},
}); });
if (exist != null) { if (exist) {
return; return;
} }

View file

@ -47,12 +47,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check if already muting // Check if already muting
const exist = await RenoteMutings.findOneBy({ const exist = await RenoteMutings.exist({
muterId: muter.id, where: {
muteeId: mutee.id, muterId: muter.id,
muteeId: mutee.id,
},
}); });
if (exist != null) { if (exist) {
throw new ApiError(meta.errors.alreadyMuting); throw new ApiError(meta.errors.alreadyMuting);
} }

View file

@ -45,18 +45,18 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
// Check not muting // Check not muting
const exist = await RenoteMutings.findOneBy({ const muting = await RenoteMutings.findOneBy({
muterId: muter.id, muterId: muter.id,
muteeId: mutee.id, muteeId: mutee.id,
}); });
if (exist == null) { if (muting == null) {
throw new ApiError(meta.errors.notMuting); throw new ApiError(meta.errors.notMuting);
} }
// Delete mute // Delete mute
await RenoteMutings.delete({ await RenoteMutings.delete({
id: exist.id, id: muting.id,
}); });
// publishUserEvent(user.id, "unmute", mutee); // publishUserEvent(user.id, "unmute", mutee);

View file

@ -57,8 +57,7 @@ export const paramDef = {
} as const; } as const;
export default define(meta, paramDef, async (ps, me) => { export default define(meta, paramDef, async (ps, me) => {
// if already subscribed const subscription = await SwSubscriptions.findOneBy({
const exist = await SwSubscriptions.findOneBy({
userId: me.id, userId: me.id,
endpoint: ps.endpoint, endpoint: ps.endpoint,
auth: ps.auth, auth: ps.auth,
@ -67,13 +66,14 @@ export default define(meta, paramDef, async (ps, me) => {
const instance = await fetchMeta(true); const instance = await fetchMeta(true);
if (exist != null) { // if already subscribed
if (subscription != null) {
return { return {
state: "already-subscribed" as const, state: "already-subscribed" as const,
key: instance.swPublicKey, key: instance.swPublicKey,
userId: me.id, userId: me.id,
endpoint: exist.endpoint, endpoint: subscription.endpoint,
sendReadMessage: exist.sendReadMessage, sendReadMessage: subscription.sendReadMessage,
}; };
} }

View file

@ -42,16 +42,16 @@ export const paramDef = {
// eslint-disable-next-line import/no-default-export // eslint-disable-next-line import/no-default-export
export default define(meta, paramDef, async (ps, me) => { export default define(meta, paramDef, async (ps, me) => {
const exist = await SwSubscriptions.findOneBy({ const subscription = await SwSubscriptions.findOneBy({
userId: me.id, userId: me.id,
endpoint: ps.endpoint, endpoint: ps.endpoint,
}); });
if (exist != null) { if (subscription != null) {
return { return {
userId: exist.userId, userId: subscription.userId,
endpoint: exist.endpoint, endpoint: subscription.endpoint,
sendReadMessage: exist.sendReadMessage, sendReadMessage: subscription.sendReadMessage,
}; };
} }

View file

@ -98,11 +98,13 @@ export default define(meta, paramDef, async (ps, me) => {
if (me == null) { if (me == null) {
throw new ApiError(meta.errors.forbidden); throw new ApiError(meta.errors.forbidden);
} else if (me.id !== user.id) { } else if (me.id !== user.id) {
const following = await Followings.findOneBy({ const isFollowed = await Followings.exist({
followeeId: user.id, where: {
followerId: me.id, followeeId: user.id,
followerId: me.id,
},
}); });
if (following == null) { if (!isFollowed) {
throw new ApiError(meta.errors.nullFollowers); throw new ApiError(meta.errors.nullFollowers);
} }
} }

View file

@ -97,11 +97,13 @@ export default define(meta, paramDef, async (ps, me) => {
if (me == null) { if (me == null) {
throw new ApiError(meta.errors.forbidden); throw new ApiError(meta.errors.forbidden);
} else if (me.id !== user.id) { } else if (me.id !== user.id) {
const following = await Followings.findOneBy({ const isFollowing = await Followings.exist({
followeeId: user.id, where: {
followerId: me.id, followeeId: user.id,
followerId: me.id,
},
}); });
if (following == null) { if (!isFollowing) {
throw new ApiError(meta.errors.cannot_find); throw new ApiError(meta.errors.cannot_find);
} }
} }

View file

@ -52,12 +52,14 @@ export const paramDef = {
export default define(meta, paramDef, async (ps, me) => { export default define(meta, paramDef, async (ps, me) => {
// Fetch the list // Fetch the list
const userList = await UserLists.findOneBy({ const listExists = await UserLists.exist({
id: ps.listId, where: {
userId: me.id, id: ps.listId,
userId: me.id,
},
}); });
if (userList == null) { if (!listExists) {
throw new ApiError(meta.errors.noSuchList); throw new ApiError(meta.errors.noSuchList);
} }
@ -70,18 +72,22 @@ export default define(meta, paramDef, async (ps, me) => {
// Check blocking // Check blocking
if (user.id !== me.id) { if (user.id !== me.id) {
const block = await Blockings.findOneBy({ const isBlocked = await Blockings.exist({
blockerId: user.id, where: {
blockeeId: me.id, blockerId: user.id,
blockeeId: me.id,
},
}); });
if (block) { if (isBlocked) {
throw new ApiError(meta.errors.youHaveBeenBlocked); throw new ApiError(meta.errors.youHaveBeenBlocked);
} }
} }
const exist = await UserListJoinings.findOneBy({ const exist = await UserListJoinings.exist({
userListId: userList.id, where: {
userId: user.id, userListId: userList.id,
userId: user.id,
},
}); });
if (exist) { if (exist) {

View file

@ -37,12 +37,14 @@ export const paramDef = {
export default define(meta, paramDef, async (ps, me) => { export default define(meta, paramDef, async (ps, me) => {
// Fetch the list // Fetch the list
const userList = await UserLists.findOneBy({ const exist = await UserLists.exist({
id: ps.listId, where: {
userId: me.id, id: ps.listId,
userId: me.id,
},
}); });
if (userList == null) { if (!exist) {
throw new ApiError(meta.errors.noSuchList); throw new ApiError(meta.errors.noSuchList);
} }

View file

@ -22,11 +22,13 @@ export default class extends Channel {
this.listId = params.listId as string; this.listId = params.listId as string;
// Check existence and owner // Check existence and owner
const list = await UserLists.findOneBy({ const exist = await UserLists.exist({
id: this.listId, where: {
userId: this.user!.id, id: this.listId,
userId: this.user!.id,
},
}); });
if (!list) return; if (!exist) return;
// Subscribe stream // Subscribe stream
this.subscriber.on(`userListStream:${this.listId}`, this.send); this.subscriber.on(`userListStream:${this.listId}`, this.send);

View file

@ -13,13 +13,13 @@ export default async (
user: { id: User["id"]; host: User["host"] }, user: { id: User["id"]; host: User["host"] },
note: Note, note: Note,
) => { ) => {
// if already unreacted const reaction = await NoteReactions.findOneBy({
const exist = await NoteReactions.findOneBy({
noteId: note.id, noteId: note.id,
userId: user.id, userId: user.id,
}); });
if (exist == null) { // if already unreacted
if (reaction == null) {
throw new IdentifiableError( throw new IdentifiableError(
"60527ec9-b4cb-4a88-a6bd-32d3ad26817d", "60527ec9-b4cb-4a88-a6bd-32d3ad26817d",
"not reacted", "not reacted",
@ -27,7 +27,7 @@ export default async (
} }
// Delete reaction // Delete reaction
const result = await NoteReactions.delete(exist.id); const result = await NoteReactions.delete(reaction.id);
if (result.affected !== 1) { if (result.affected !== 1) {
throw new IdentifiableError( throw new IdentifiableError(
@ -37,7 +37,7 @@ export default async (
} }
// Decrement reactions count // Decrement reactions count
const sql = `jsonb_set("reactions", '{${exist.reaction}}', (COALESCE("reactions"->>'${exist.reaction}', '0')::int - 1)::text::jsonb)`; const sql = `jsonb_set("reactions", '{${reaction.reaction}}', (COALESCE("reactions"->>'${reaction.reaction}', '0')::int - 1)::text::jsonb)`;
await Notes.createQueryBuilder() await Notes.createQueryBuilder()
.update() .update()
.set({ .set({
@ -49,14 +49,14 @@ export default async (
Notes.decrement({ id: note.id }, "score", 1); Notes.decrement({ id: note.id }, "score", 1);
publishNoteStream(note.id, "unreacted", { publishNoteStream(note.id, "unreacted", {
reaction: decodeReaction(exist.reaction).reaction, reaction: decodeReaction(reaction.reaction).reaction,
userId: user.id, userId: user.id,
}); });
//#region 配信 //#region 配信
if (Users.isLocalUser(user) && !note.localOnly) { if (Users.isLocalUser(user) && !note.localOnly) {
const content = renderActivity( const content = renderActivity(
renderUndo(await renderLike(exist, note), user), renderUndo(await renderLike(reaction, note), user),
); );
const dm = new DeliverManager(user, content); const dm = new DeliverManager(user, content);
if (note.userHost !== null) { if (note.userHost !== null) {

View file

@ -42,9 +42,9 @@ export async function insertNoteUnread(
// 2秒経っても既読にならなかったら「未読の投稿がありますよ」イベントを発行する // 2秒経っても既読にならなかったら「未読の投稿がありますよ」イベントを発行する
setTimeout(async () => { setTimeout(async () => {
const exist = await NoteUnreads.findOneBy({ id: unread.id }); const exist = await NoteUnreads.exist({ where: { id: unread.id } });
if (exist == null) return; if (!exist) return;
if (params.isMentioned) { if (params.isMentioned) {
publishMainStream(userId, "unreadMention", note.id); publishMainStream(userId, "unreadMention", note.id);