enhance(credits): use instance meta instead of hard code
This commit is contained in:
parent
00729a9b8e
commit
06f160a2b4
19 changed files with 219 additions and 11 deletions
|
@ -397,6 +397,13 @@ export const meta = {
|
|||
optional: false, nullable: false,
|
||||
},
|
||||
},
|
||||
endingCreditMembers: {
|
||||
type: 'array',
|
||||
optional: false, nullable: false,
|
||||
items: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
urlPreviewDenyList: {
|
||||
type: 'array',
|
||||
optional: false, nullable: false,
|
||||
|
@ -646,6 +653,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
|||
perUserHomeTimelineCacheMax: instance.perUserHomeTimelineCacheMax,
|
||||
perUserListTimelineCacheMax: instance.perUserListTimelineCacheMax,
|
||||
wellKnownWebsites: instance.wellKnownWebsites,
|
||||
endingCreditMembers: instance.endingCreditMembers,
|
||||
notesPerOneAd: instance.notesPerOneAd,
|
||||
urlPreviewDenyList: instance.urlPreviewDenyList,
|
||||
featuredGameChannels: instance.featuredGameChannels,
|
||||
|
|
|
@ -161,6 +161,11 @@ export const paramDef = {
|
|||
type: 'string',
|
||||
},
|
||||
},
|
||||
endingCreditMembers: {
|
||||
type: 'array', nullable: true, items: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
urlPreviewDenyList: {
|
||||
type: 'array', nullable: true, items: {
|
||||
type: 'string',
|
||||
|
@ -240,6 +245,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
|||
set.wellKnownWebsites = ps.wellKnownWebsites.filter(Boolean);
|
||||
}
|
||||
|
||||
if (Array.isArray(ps.endingCreditMembers)) {
|
||||
set.wellKnownWebsites = ps.endingCreditMembers.filter(Boolean);
|
||||
}
|
||||
|
||||
if (Array.isArray(ps.urlPreviewDenyList)) {
|
||||
set.urlPreviewDenyList = ps.urlPreviewDenyList.filter(Boolean);
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
|||
if (meta.featuredGameChannels.length === 0) return [];
|
||||
|
||||
const channels = await this.channelsRepository.findBy({
|
||||
id: In(meta.featuredGameChannels)
|
||||
id: In(meta.featuredGameChannels),
|
||||
});
|
||||
|
||||
return await this.channelEntityService.packMany(channels, me);
|
||||
|
|
66
packages/backend/src/server/api/endpoints/users/credits.ts
Normal file
66
packages/backend/src/server/api/endpoints/users/credits.ts
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import { In, IsNull } from 'typeorm';
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import type { UsersRepository } from '@/models/_.js';
|
||||
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||
import { UserEntityService } from '@/core/entities/UserEntityService.js';
|
||||
import { DI } from '@/di-symbols.js';
|
||||
import { MetaService } from '@/core/MetaService.js';
|
||||
|
||||
export const meta = {
|
||||
tags: ['users'],
|
||||
|
||||
requireCredential: false,
|
||||
|
||||
description: 'List up the users of ending credits.',
|
||||
|
||||
res: {
|
||||
optional: false, nullable: false,
|
||||
oneOf: [
|
||||
{
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
ref: 'UserLite',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
errors: {},
|
||||
} as const;
|
||||
|
||||
export const paramDef = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
},
|
||||
required: [],
|
||||
} as const;
|
||||
|
||||
@Injectable()
|
||||
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
|
||||
constructor(
|
||||
@Inject(DI.usersRepository)
|
||||
private usersRepository: UsersRepository,
|
||||
|
||||
private metaService: MetaService,
|
||||
private userEntityService: UserEntityService,
|
||||
) {
|
||||
super(meta, paramDef, async (ps, me) => {
|
||||
const meta = await this.metaService.fetch();
|
||||
|
||||
if (meta.endingCreditMembers.length === 0) return [];
|
||||
|
||||
const staffs = await this.usersRepository.findBy({
|
||||
id: In(meta.endingCreditMembers),
|
||||
host: IsNull(),
|
||||
});
|
||||
|
||||
return await this.userEntityService.packMany(staffs, me);
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue