summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-05-06 09:34:21 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-05-06 09:34:21 +0900
commitc7d4264ecf66fd930c13e3da0627c15ddb1aab67 (patch)
tree9ceb5ec2e2352c273c3e6af92a099917739f5def
parentUpdate CHANGELOG.md (diff)
downloadmisskey-c7d4264ecf66fd930c13e3da0627c15ddb1aab67.tar.gz
misskey-c7d4264ecf66fd930c13e3da0627c15ddb1aab67.tar.bz2
misskey-c7d4264ecf66fd930c13e3da0627c15ddb1aab67.zip
refactor
-rw-r--r--packages/backend/src/queue/processors/ExportAntennasProcessorService.ts8
-rw-r--r--packages/backend/src/queue/processors/ImportAntennasProcessorService.ts71
-rw-r--r--packages/backend/src/server/api/endpoints/i/import-antennas.ts11
3 files changed, 50 insertions, 40 deletions
diff --git a/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts b/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts
index dba764dc35..894903e79b 100644
--- a/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts
@@ -9,10 +9,10 @@ import Logger from '@/logger.js';
import { DriveService } from '@/core/DriveService.js';
import { bindThis } from '@/decorators.js';
import { createTemp } from '@/misc/create-temp.js';
+import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type { DBExportAntennasData } from '../types.js';
import type Bull from 'bull';
-import { UtilityService } from '@/core/UtilityService.js';
@Injectable()
export class ExportAntennasProcessorService {
@@ -21,12 +21,16 @@ export class ExportAntennasProcessorService {
constructor (
@Inject(DI.config)
private config: Config,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
+
@Inject(DI.antennasRepository)
private antennsRepository: AntennasRepository,
+
@Inject(DI.userListJoiningsRepository)
private userListJoiningsRepository: UserListJoiningsRepository,
+
private driveService: DriveService,
private utilityService: UtilityService,
private queueLoggerService: QueueLoggerService,
@@ -72,7 +76,7 @@ export class ExportAntennasProcessorService {
keywords: antenna.keywords,
excludeKeywords: antenna.excludeKeywords,
users: antenna.users,
- userListAcct: typeof users !== 'undefined' ? users.map((u) => {
+ userListAccts: typeof users !== 'undefined' ? users.map((u) => {
return this.utilityService.getFullApAccount(u.username, u.host); // acct
}) : null,
caseSensitive: antenna.caseSensitive,
diff --git a/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts b/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts
index 67d255bdd3..d06131b8c8 100644
--- a/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts
+++ b/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts
@@ -10,12 +10,47 @@ import { QueueLoggerService } from '../QueueLoggerService.js';
import { DBAntennaImportJobData } from '../types.js';
import type Bull from 'bull';
+const validate = new Ajv().compile({
+ type: 'object',
+ properties: {
+ name: { type: 'string', minLength: 1, maxLength: 100 },
+ src: { type: 'string', enum: ['home', 'all', 'users', 'list'] },
+ userListAccts: {
+ type: 'array',
+ items: {
+ type: 'string',
+ },
+ nullable: true,
+ },
+ keywords: { type: 'array', items: {
+ type: 'array', items: {
+ type: 'string',
+ },
+ } },
+ excludeKeywords: { type: 'array', items: {
+ type: 'array', items: {
+ type: 'string',
+ },
+ } },
+ users: { type: 'array', items: {
+ type: 'string',
+ } },
+ caseSensitive: { type: 'boolean' },
+ withReplies: { type: 'boolean' },
+ withFile: { type: 'boolean' },
+ notify: { type: 'boolean' },
+ },
+ required: ['name', 'src', 'keywords', 'excludeKeywords', 'users', 'caseSensitive', 'withReplies', 'withFile', 'notify'],
+});
+
@Injectable()
export class ImportAntennasProcessorService {
private logger: Logger;
+
constructor (
@Inject(DI.antennasRepository)
private antennasRepository: AntennasRepository,
+
private queueLoggerService: QueueLoggerService,
private idService: IdService,
private globalEventService: GlobalEventService,
@@ -27,38 +62,6 @@ export class ImportAntennasProcessorService {
public async process(job: Bull.Job<DBAntennaImportJobData>, done: () => void): Promise<void> {
const now = new Date();
try {
- const validate = new Ajv().compile({
- type: 'object',
- properties: {
- name: { type: 'string', minLength: 1, maxLength: 100 },
- src: { type: 'string', enum: ['home', 'all', 'users', 'list'] },
- userListAcct: {
- type: 'array',
- items: {
- type: 'string',
- },
- nullable: true,
- },
- keywords: { type: 'array', items: {
- type: 'array', items: {
- type: 'string',
- },
- } },
- excludeKeywords: { type: 'array', items: {
- type: 'array', items: {
- type: 'string',
- },
- } },
- users: { type: 'array', items: {
- type: 'string',
- } },
- caseSensitive: { type: 'boolean' },
- withReplies: { type: 'boolean' },
- withFile: { type: 'boolean' },
- notify: { type: 'boolean' },
- },
- required: ['name', 'src', 'keywords', 'excludeKeywords', 'users', 'caseSensitive', 'withReplies', 'withFile', 'notify'],
- });
for (const antenna of job.data.antenna) {
if (antenna.keywords.length === 0 || antenna.keywords[0].every(x => x === '')) continue;
if (!validate(antenna)) {
@@ -71,11 +74,11 @@ export class ImportAntennasProcessorService {
lastUsedAt: now,
userId: job.data.user.id,
name: antenna.name,
- src: antenna.src === 'list' && antenna.userListAcct ? 'users' : antenna.src,
+ src: antenna.src === 'list' && antenna.userListAccts ? 'users' : antenna.src,
userListId: null,
keywords: antenna.keywords,
excludeKeywords: antenna.excludeKeywords,
- users: (antenna.src === 'list' && antenna.userListAcct !== null ? antenna.userListAcct : antenna.users).filter(Boolean),
+ users: (antenna.src === 'list' && antenna.userListAccts !== null ? antenna.userListAccts : antenna.users).filter(Boolean),
caseSensitive: antenna.caseSensitive,
withReplies: antenna.withReplies,
withFile: antenna.withFile,
diff --git a/packages/backend/src/server/api/endpoints/i/import-antennas.ts b/packages/backend/src/server/api/endpoints/i/import-antennas.ts
index 676648bde8..efb5ce4223 100644
--- a/packages/backend/src/server/api/endpoints/i/import-antennas.ts
+++ b/packages/backend/src/server/api/endpoints/i/import-antennas.ts
@@ -4,9 +4,9 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
import { QueueService } from '@/core/QueueService.js';
import type { AntennasRepository, DriveFilesRepository, UsersRepository, Antenna as _Antenna } from '@/models/index.js';
import { DI } from '@/di-symbols.js';
-import { ApiError } from '../../error.js';
import { RoleService } from '@/core/RoleService.js';
import { DownloadService } from '@/core/DownloadService.js';
+import { ApiError } from '../../error.js';
export const meta = {
secure: true,
@@ -54,13 +54,16 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
constructor (
@Inject(DI.driveFilesRepository)
private driveFilesRepository: DriveFilesRepository,
+
@Inject(DI.antennasRepository)
private antennasRepository: AntennasRepository,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
+
private roleService: RoleService,
private queueService: QueueService,
- private downloadService: DownloadService
+ private downloadService: DownloadService,
) {
super(meta, paramDef, async (ps, me) => {
const users = await this.usersRepository.findOneBy({ id: me.id });
@@ -68,7 +71,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
const file = await this.driveFilesRepository.findOneBy({ id: ps.fileId });
if (file === null) throw new ApiError(meta.errors.noSuchFile);
if (file.size === 0) throw new ApiError(meta.errors.emptyFile);
- const antennas: (_Antenna & { userListAcct: string[] | null })[] = JSON.parse(await this.downloadService.downloadTextFile(file.url));
+ const antennas: (_Antenna & { userListAccts: string[] | null })[] = JSON.parse(await this.downloadService.downloadTextFile(file.url));
const currentAntennasCount = await this.antennasRepository.countBy({ userId: me.id });
if (currentAntennasCount + antennas.length > (await this.roleService.getUserPolicies(me.id)).antennaLimit) {
throw new ApiError(meta.errors.tooManyAntennas);
@@ -78,4 +81,4 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
}
}
-export type Antenna = (_Antenna & { userListAcct: string[] | null })[];
+export type Antenna = (_Antenna & { userListAccts: string[] | null })[];