From 0702f9775a58900a7a827c23aaaa6aec85b80c50 Mon Sep 17 00:00:00 2001
From: Chimorium <130294972+Chimorium@users.noreply.github.com>
Date: Tue, 11 Apr 2023 07:39:46 +0900
Subject: [PATCH] =?UTF-8?q?=E3=82=AB=E3=82=B9=E3=82=BF=E3=83=A0=E7=B5=B5?=
 =?UTF-8?q?=E6=96=87=E5=AD=97=E3=81=AE=E3=82=AD=E3=83=A3=E3=83=83=E3=82=B7?=
 =?UTF-8?q?=E3=83=A5=E6=99=82=E3=81=AB"{}"=E3=81=8C=E5=85=A5=E3=81=A3?=
 =?UTF-8?q?=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86=E5=95=8F=E9=A1=8C=E3=82=92?=
 =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#10573)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 packages/backend/src/core/CustomEmojiService.ts | 8 ++------
 packages/backend/src/misc/cache.ts              | 4 ++--
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/packages/backend/src/core/CustomEmojiService.ts b/packages/backend/src/core/CustomEmojiService.ts
index dc365986fe..3de936dd65 100644
--- a/packages/backend/src/core/CustomEmojiService.ts
+++ b/packages/backend/src/core/CustomEmojiService.ts
@@ -43,12 +43,8 @@ export class CustomEmojiService {
 			lifetime: 1000 * 60 * 30, // 30m
 			memoryCacheLifetime: 1000 * 60 * 3, // 3m
 			fetcher: () => this.emojisRepository.find({ where: { host: IsNull() } }).then(emojis => new Map(emojis.map(emoji => [emoji.name, emoji]))),
-			toRedisConverter: (value) => JSON.stringify(value.values()),
-			fromRedisConverter: (value) => {
-				// 原因不明だが配列以外が入ってくることがあるため
-				if (!Array.isArray(JSON.parse(value))) return undefined;
-				return new Map(JSON.parse(value).map((x: Emoji) => [x.name, x]));
-			}, // TODO: Date型の変換
+			toRedisConverter: (value) => JSON.stringify(Array.from(value.values())),
+			fromRedisConverter: (value) => new Map(JSON.parse(value).map((x: Emoji) => [x.name, x])), // TODO: Date型の変換
 		});
 	}
 
diff --git a/packages/backend/src/misc/cache.ts b/packages/backend/src/misc/cache.ts
index a4abd4f878..d35414acf7 100644
--- a/packages/backend/src/misc/cache.ts
+++ b/packages/backend/src/misc/cache.ts
@@ -8,7 +8,7 @@ export class RedisKVCache<T> {
 	private memoryCache: MemoryKVCache<T>;
 	private fetcher: (key: string) => Promise<T>;
 	private toRedisConverter: (value: T) => string;
-	private fromRedisConverter: (value: string) => T | undefined; // undefined means no cache
+	private fromRedisConverter: (value: string) => T;
 
 	constructor(redisClient: RedisKVCache<T>['redisClient'], name: RedisKVCache<T>['name'], opts: {
 		lifetime: RedisKVCache<T>['lifetime'];
@@ -92,7 +92,7 @@ export class RedisSingleCache<T> {
 	private memoryCache: MemorySingleCache<T>;
 	private fetcher: () => Promise<T>;
 	private toRedisConverter: (value: T) => string;
-	private fromRedisConverter: (value: string) => T | undefined; // undefined means no cache
+	private fromRedisConverter: (value: string) => T;
 
 	constructor(redisClient: RedisSingleCache<T>['redisClient'], name: RedisSingleCache<T>['name'], opts: {
 		lifetime: RedisSingleCache<T>['lifetime'];