カスタム絵文字のキャッシュ時に"{}"が入ってしまう問題を修正 (#10573)
This commit is contained in:
		
							parent
							
								
									838625edcd
								
							
						
					
					
						commit
						0702f9775a
					
				| 
						 | 
					@ -43,12 +43,8 @@ export class CustomEmojiService {
 | 
				
			||||||
			lifetime: 1000 * 60 * 30, // 30m
 | 
								lifetime: 1000 * 60 * 30, // 30m
 | 
				
			||||||
			memoryCacheLifetime: 1000 * 60 * 3, // 3m
 | 
								memoryCacheLifetime: 1000 * 60 * 3, // 3m
 | 
				
			||||||
			fetcher: () => this.emojisRepository.find({ where: { host: IsNull() } }).then(emojis => new Map(emojis.map(emoji => [emoji.name, emoji]))),
 | 
								fetcher: () => this.emojisRepository.find({ where: { host: IsNull() } }).then(emojis => new Map(emojis.map(emoji => [emoji.name, emoji]))),
 | 
				
			||||||
			toRedisConverter: (value) => JSON.stringify(value.values()),
 | 
								toRedisConverter: (value) => JSON.stringify(Array.from(value.values())),
 | 
				
			||||||
			fromRedisConverter: (value) => {
 | 
								fromRedisConverter: (value) => new Map(JSON.parse(value).map((x: Emoji) => [x.name, x])), // TODO: Date型の変換
 | 
				
			||||||
				// 原因不明だが配列以外が入ってくることがあるため
 | 
					 | 
				
			||||||
				if (!Array.isArray(JSON.parse(value))) return undefined;
 | 
					 | 
				
			||||||
				return new Map(JSON.parse(value).map((x: Emoji) => [x.name, x]));
 | 
					 | 
				
			||||||
			}, // TODO: Date型の変換
 | 
					 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ export class RedisKVCache<T> {
 | 
				
			||||||
	private memoryCache: MemoryKVCache<T>;
 | 
						private memoryCache: MemoryKVCache<T>;
 | 
				
			||||||
	private fetcher: (key: string) => Promise<T>;
 | 
						private fetcher: (key: string) => Promise<T>;
 | 
				
			||||||
	private toRedisConverter: (value: T) => string;
 | 
						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: {
 | 
						constructor(redisClient: RedisKVCache<T>['redisClient'], name: RedisKVCache<T>['name'], opts: {
 | 
				
			||||||
		lifetime: RedisKVCache<T>['lifetime'];
 | 
							lifetime: RedisKVCache<T>['lifetime'];
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@ export class RedisSingleCache<T> {
 | 
				
			||||||
	private memoryCache: MemorySingleCache<T>;
 | 
						private memoryCache: MemorySingleCache<T>;
 | 
				
			||||||
	private fetcher: () => Promise<T>;
 | 
						private fetcher: () => Promise<T>;
 | 
				
			||||||
	private toRedisConverter: (value: T) => string;
 | 
						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: {
 | 
						constructor(redisClient: RedisSingleCache<T>['redisClient'], name: RedisSingleCache<T>['name'], opts: {
 | 
				
			||||||
		lifetime: RedisSingleCache<T>['lifetime'];
 | 
							lifetime: RedisSingleCache<T>['lifetime'];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue