diff options
| author | anatawa12 <anatawa12@icloud.com> | 2025-04-02 10:37:16 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-02 10:37:16 +0900 |
| commit | 55d835ad51dd4e114d367b3711ce0025a15fe26f (patch) | |
| tree | 4e886142e418596661ebadef799c46e1c6fec91f /packages/backend/src/core/IdService.ts | |
| parent | 🎨 (diff) | |
| download | misskey-55d835ad51dd4e114d367b3711ce0025a15fe26f.tar.gz misskey-55d835ad51dd4e114d367b3711ce0025a15fe26f.tar.bz2 misskey-55d835ad51dd4e114d367b3711ce0025a15fe26f.zip | |
Fix: 通知のページネーションで2つ以上読み込めなくなることがある問題 (#15277)
* fix: notifications-groupedのinclude/exclude typesに:groupedを指定できてしまう問題
* refactor: 通知の取得処理を Notification Service に移動
* feat: add function to parse additional part of id
* fix: 通知のページネーションが正しく動かない問題
Redisにのページネーションで使用する時間及びidとRedis上のものが混同されていたので、Misskeyが生成するものに寄せました。
* pnpm run build-misskey-js-with-types
* chore: XADDをretryするように
* fix: notifications-groupedでxrevrangeしているのを消し忘れていた
Diffstat (limited to 'packages/backend/src/core/IdService.ts')
| -rw-r--r-- | packages/backend/src/core/IdService.ts | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/packages/backend/src/core/IdService.ts b/packages/backend/src/core/IdService.ts index 10df6ef266..223a8de678 100644 --- a/packages/backend/src/core/IdService.ts +++ b/packages/backend/src/core/IdService.ts @@ -7,13 +7,13 @@ import { Inject, Injectable } from '@nestjs/common'; import { ulid } from 'ulid'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; -import { genAid, isSafeAidT, parseAid } from '@/misc/id/aid.js'; -import { genAidx, isSafeAidxT, parseAidx } from '@/misc/id/aidx.js'; -import { genMeid, isSafeMeidT, parseMeid } from '@/misc/id/meid.js'; -import { genMeidg, isSafeMeidgT, parseMeidg } from '@/misc/id/meidg.js'; -import { genObjectId, isSafeObjectIdT, parseObjectId } from '@/misc/id/object-id.js'; +import { genAid, isSafeAidT, parseAid, parseAidFull } from '@/misc/id/aid.js'; +import { genAidx, isSafeAidxT, parseAidx, parseAidxFull } from '@/misc/id/aidx.js'; +import { genMeid, isSafeMeidT, parseMeid, parseMeidFull } from '@/misc/id/meid.js'; +import { genMeidg, isSafeMeidgT, parseMeidg, parseMeidgFull } from '@/misc/id/meidg.js'; +import { genObjectId, isSafeObjectIdT, parseObjectId, parseObjectIdFull } from '@/misc/id/object-id.js'; import { bindThis } from '@/decorators.js'; -import { parseUlid } from '@/misc/id/ulid.js'; +import { parseUlid, parseUlidFull } from '@/misc/id/ulid.js'; @Injectable() export class IdService { @@ -70,4 +70,18 @@ export class IdService { default: throw new Error('unrecognized id generation method'); } } + + // Note: additional is at most 64 bits + @bindThis + public parseFull(id: string): { date: number; additional: bigint; } { + switch (this.method) { + case 'aid': return parseAidFull(id); + case 'aidx': return parseAidxFull(id); + case 'objectid': return parseObjectIdFull(id); + case 'meid': return parseMeidFull(id); + case 'meidg': return parseMeidgFull(id); + case 'ulid': return parseUlidFull(id); + default: throw new Error('unrecognized id generation method'); + } + } } |