diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-22 13:02:24 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-22 13:02:24 +0900 |
| commit | 4eaa02d25f83eff38cecd6db1724c8626dc3af2e (patch) | |
| tree | beedb76bfeae7a11109f25758f55f097f4c66d24 /packages/backend/src | |
| parent | Update CHANGELOG.md (diff) | |
| download | sharkey-4eaa02d25f83eff38cecd6db1724c8626dc3af2e.tar.gz sharkey-4eaa02d25f83eff38cecd6db1724c8626dc3af2e.tar.bz2 sharkey-4eaa02d25f83eff38cecd6db1724c8626dc3af2e.zip | |
enhance: improve avatar decoration
Diffstat (limited to 'packages/backend/src')
| -rw-r--r-- | packages/backend/src/core/entities/UserEntityService.ts | 8 | ||||
| -rw-r--r-- | packages/backend/src/models/User.ts | 10 | ||||
| -rw-r--r-- | packages/backend/src/models/json-schema/user.ts | 8 | ||||
| -rw-r--r-- | packages/backend/src/server/api/endpoints/i/update.ts | 14 |
4 files changed, 32 insertions, 8 deletions
diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index 66facce4c2..09a7e579f0 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -338,9 +338,11 @@ export class UserEntityService implements OnModuleInit { host: user.host, avatarUrl: user.avatarUrl ?? this.getIdenticonUrl(user), avatarBlurhash: user.avatarBlurhash, - avatarDecorations: user.avatarDecorations.length > 0 ? this.avatarDecorationService.getAll().then(decorations => decorations.filter(decoration => user.avatarDecorations.includes(decoration.id)).map(decoration => ({ - id: decoration.id, - url: decoration.url, + avatarDecorations: user.avatarDecorations.length > 0 ? this.avatarDecorationService.getAll().then(decorations => user.avatarDecorations.filter(ud => decorations.some(d => d.id === ud.id)).map(ud => ({ + id: ud.id, + angle: ud.angle || undefined, + flipH: ud.flipH || undefined, + url: decorations.find(d => d.id === ud.id)!.url, }))) : [], isBot: user.isBot, isCat: user.isCat, diff --git a/packages/backend/src/models/User.ts b/packages/backend/src/models/User.ts index c98426a7b6..c3762fcd3e 100644 --- a/packages/backend/src/models/User.ts +++ b/packages/backend/src/models/User.ts @@ -138,10 +138,14 @@ export class MiUser { }) public bannerBlurhash: string | null; - @Column('varchar', { - length: 512, array: true, default: '{}', + @Column('jsonb', { + default: [], }) - public avatarDecorations: string[]; + public avatarDecorations: { + id: string; + angle: number; + flipH: boolean; + }[]; @Index() @Column('varchar', { diff --git a/packages/backend/src/models/json-schema/user.ts b/packages/backend/src/models/json-schema/user.ts index bf283fbeb2..75f3286eff 100644 --- a/packages/backend/src/models/json-schema/user.ts +++ b/packages/backend/src/models/json-schema/user.ts @@ -54,6 +54,14 @@ export const packedUserLiteSchema = { format: 'url', nullable: false, optional: false, }, + angle: { + type: 'number', + nullable: false, optional: true, + }, + flipH: { + type: 'boolean', + nullable: false, optional: true, + }, }, }, }, diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 79ead57a66..b03381a3f3 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -133,7 +133,13 @@ export const paramDef = { lang: { type: 'string', enum: [null, ...Object.keys(langmap)] as string[], nullable: true }, avatarId: { type: 'string', format: 'misskey:id', nullable: true }, avatarDecorations: { type: 'array', maxItems: 1, items: { - type: 'string', + type: 'object', + properties: { + id: { type: 'string', format: 'misskey:id' }, + angle: { type: 'number', nullable: true, maximum: 0.5, minimum: -0.5 }, + flipH: { type: 'boolean', nullable: true }, + }, + required: ['id'], } }, bannerId: { type: 'string', format: 'misskey:id', nullable: true }, fields: { @@ -309,7 +315,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- .filter(d => d.roleIdsThatCanBeUsedThisDecoration.filter(roleId => allRoles.some(r => r.id === roleId)).length === 0 || myRoles.some(r => d.roleIdsThatCanBeUsedThisDecoration.includes(r.id))) .map(d => d.id); - updates.avatarDecorations = ps.avatarDecorations.filter(id => decorationIds.includes(id)); + updates.avatarDecorations = ps.avatarDecorations.filter(d => decorationIds.includes(d.id)).map(d => ({ + id: d.id, + angle: d.angle ?? 0, + flipH: d.flipH ?? false, + })); } if (ps.pinnedPageId) { |