From 435945d09d9f6113ae299225c4561ae47e4c7576 Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Thu, 3 Feb 2022 02:41:22 +0900
Subject: [PATCH] refactor

---
 .../backend/src/misc/is-duplicate-key-value-error.ts |  4 ++--
 packages/backend/src/server/api/stream/types.ts      |  5 ++++-
 packages/backend/src/services/note/create.ts         | 12 ++++++------
 packages/backend/src/services/note/delete.ts         |  2 +-
 .../backend/src/services/note/reaction/create.ts     |  2 +-
 packages/backend/src/services/note/read.ts           |  2 +-
 packages/backend/src/services/send-email.ts          |  8 ++++----
 7 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/packages/backend/src/misc/is-duplicate-key-value-error.ts b/packages/backend/src/misc/is-duplicate-key-value-error.ts
index 23d8ceb1b7..04ff191e41 100644
--- a/packages/backend/src/misc/is-duplicate-key-value-error.ts
+++ b/packages/backend/src/misc/is-duplicate-key-value-error.ts
@@ -1,3 +1,3 @@
-export function isDuplicateKeyValueError(e: Error): boolean {
-	return e.message.startsWith('duplicate key value');
+export function isDuplicateKeyValueError(e: unknown | Error): boolean {
+	return (e as any).message && (e as Error).message.startsWith('duplicate key value');
 }
diff --git a/packages/backend/src/server/api/stream/types.ts b/packages/backend/src/server/api/stream/types.ts
index e70c26f5e5..e2f1c6fc9c 100644
--- a/packages/backend/src/server/api/stream/types.ts
+++ b/packages/backend/src/server/api/stream/types.ts
@@ -105,7 +105,10 @@ export interface NoteStreamTypes {
 	};
 	reacted: {
 		reaction: string;
-		emoji?: Emoji;
+		emoji?: {
+			name: string;
+			url: string;
+		} | null;
 		userId: User['id'];
 	};
 	unreacted: {
diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts
index fb22bd6593..cfb1f8c1e5 100644
--- a/packages/backend/src/services/note/create.ts
+++ b/packages/backend/src/services/note/create.ts
@@ -59,7 +59,7 @@ class NotificationManager {
 
 		if (exist) {
 			// 「メンションされているかつ返信されている」場合は、メンションとしての通知ではなく返信としての通知にする
-			if (reason != 'mention') {
+			if (reason !== 'mention') {
 				exist.reason = reason;
 			}
 		} else {
@@ -201,7 +201,7 @@ export default async (user: { id: User['id']; username: User['username']; host:
 		mentionedUsers.push(await Users.findOneOrFail(data.reply.userId));
 	}
 
-	if (data.visibility == 'specified') {
+	if (data.visibility === 'specified') {
 		if (data.visibleUsers == null) throw new Error('invalid param');
 
 		for (const u of data.visibleUsers) {
@@ -301,7 +301,7 @@ export default async (user: { id: User['id']; username: User['username']; host:
 		if (Users.isRemoteUser(user)) activeUsersChart.update(user);
 
 		// 未読通知を作成
-		if (data.visibility == 'specified') {
+		if (data.visibility === 'specified') {
 			if (data.visibleUsers == null) throw new Error('invalid param');
 
 			for (const u of data.visibleUsers) {
@@ -439,7 +439,7 @@ export default async (user: { id: User['id']; username: User['username']; host:
 async function renderNoteOrRenoteActivity(data: Option, note: Note) {
 	if (data.localOnly) return null;
 
-	const content = data.renote && data.text == null && data.poll == null && (data.files == null || data.files.length == 0)
+	const content = data.renote && data.text == null && data.poll == null && (data.files == null || data.files.length === 0)
 		? renderAnnounce(data.renote.uri ? data.renote.uri : `${config.url}/notes/${data.renote.id}`, note)
 		: renderCreate(await renderNote(note, false), note);
 
@@ -478,7 +478,7 @@ async function insertNote(user: { id: User['id']; host: User['host']; }, data: O
 		userId: user.id,
 		localOnly: data.localOnly!,
 		visibility: data.visibility as any,
-		visibleUserIds: data.visibility == 'specified'
+		visibleUserIds: data.visibility === 'specified'
 			? data.visibleUsers
 				? data.visibleUsers.map(u => u.id)
 				: []
@@ -502,7 +502,7 @@ async function insertNote(user: { id: User['id']; host: User['host']; }, data: O
 		insert.mentions = mentionedUsers.map(u => u.id);
 		const profiles = await UserProfiles.find({ userId: In(insert.mentions) });
 		insert.mentionedRemoteUsers = JSON.stringify(mentionedUsers.filter(u => Users.isRemoteUser(u)).map(u => {
-			const profile = profiles.find(p => p.userId == u.id);
+			const profile = profiles.find(p => p.userId === u.id);
 			const url = profile != null ? profile.url : null;
 			return {
 				uri: u.uri,
diff --git a/packages/backend/src/services/note/delete.ts b/packages/backend/src/services/note/delete.ts
index 64383ee928..77723fe8b7 100644
--- a/packages/backend/src/services/note/delete.ts
+++ b/packages/backend/src/services/note/delete.ts
@@ -39,7 +39,7 @@ export default async function(user: User, note: Note, quiet = false) {
 			let renote: Note | undefined;
 
 			// if deletd note is renote
-			if (note.renoteId && note.text == null && !note.hasPoll && (note.fileIds == null || note.fileIds.length == 0)) {
+			if (note.renoteId && note.text == null && !note.hasPoll && (note.fileIds == null || note.fileIds.length === 0)) {
 				renote = await Notes.findOne({
 					id: note.renoteId,
 				});
diff --git a/packages/backend/src/services/note/reaction/create.ts b/packages/backend/src/services/note/reaction/create.ts
index 47f46419dd..c01d43c221 100644
--- a/packages/backend/src/services/note/reaction/create.ts
+++ b/packages/backend/src/services/note/reaction/create.ts
@@ -76,7 +76,7 @@ export default async (user: { id: User['id']; host: User['host']; }, note: Note,
 	// カスタム絵文字リアクションだったら絵文字情報も送る
 	const decodedReaction = decodeReaction(reaction);
 
-	let emoji = await Emojis.findOne({
+	const emoji = await Emojis.findOne({
 		where: {
 			name: decodedReaction.name,
 			host: decodedReaction.host,
diff --git a/packages/backend/src/services/note/read.ts b/packages/backend/src/services/note/read.ts
index aaf1c5ed71..032f1e84e6 100644
--- a/packages/backend/src/services/note/read.ts
+++ b/packages/backend/src/services/note/read.ts
@@ -52,7 +52,7 @@ export default async function(
 
 		if (note.user != null) { // たぶんnullになることは無いはずだけど一応
 			for (const antenna of myAntennas) {
-				if (await checkHitAntenna(antenna, note, note.user as any, undefined, Array.from(following))) {
+				if (await checkHitAntenna(antenna, note, note.user, undefined, Array.from(following))) {
 					readAntennaNotes.push(note);
 				}
 			}
diff --git a/packages/backend/src/services/send-email.ts b/packages/backend/src/services/send-email.ts
index f5f36148f6..1fd406cb68 100644
--- a/packages/backend/src/services/send-email.ts
+++ b/packages/backend/src/services/send-email.ts
@@ -114,9 +114,9 @@ export async function sendEmail(to: string, subject: string, html: string, text:
 </html>`,
 		});
 
-		logger.info('Message sent: %s', info.messageId);
-	} catch (e) {
-		logger.error(e);
-		throw e;
+		logger.info(`Message sent: ${info.messageId}`);
+	} catch (err) {
+		logger.error(err as Error);
+		throw err;
 	}
 }