This commit is contained in:
NoriDev 2023-06-19 01:12:56 +09:00
parent 0491042d95
commit 42cc15d7f8
8 changed files with 57 additions and 20 deletions

View file

@ -47,6 +47,7 @@
- 이벤트 기능 (misskey-dev/misskey#10628) - 이벤트 기능 (misskey-dev/misskey#10628)
- Play에 API Token을 요청할 수 있는 기능 추가 (misskey-dev/misskey#10949) - Play에 API Token을 요청할 수 있는 기능 추가 (misskey-dev/misskey#10949)
- 절대 시간 표기 (sakura-tel/milkey#69) - 절대 시간 표기 (sakura-tel/milkey#69)
- 초대 코드 해지 기능 ([atsu1125/groundpolis@2da90e7](https://github.com/atsu1125/groundpolis/commit/2da90e7241d2f88390a7713e76a86f26e158248e))
### Client ### Client
- (Friendly) 일부 페이지를 제외하고 플로팅 버튼을 표시하지 않음 - (Friendly) 일부 페이지를 제외하고 플로팅 버튼을 표시하지 않음

2
locales/index.d.ts vendored
View file

@ -1118,6 +1118,8 @@ export interface Locale {
"doYouWantToAllowThisPlayToAccessYourAccount": string; "doYouWantToAllowThisPlayToAccessYourAccount": string;
"translateProfile": string; "translateProfile": string;
"enableAbsoluteTime": string; "enableAbsoluteTime": string;
"inviteRevoke": string;
"inviteRevokeConfirm": string;
"_group": { "_group": {
"leader": string; "leader": string;
"banish": string; "banish": string;

View file

@ -1115,6 +1115,8 @@ thisFlashRequiresTheFollowingPermissions: "이 Play는 다음 권한을 요구
doYouWantToAllowThisPlayToAccessYourAccount: "이 Play가 계정에 접근하도록 허용할까요?" doYouWantToAllowThisPlayToAccessYourAccount: "이 Play가 계정에 접근하도록 허용할까요?"
translateProfile: "프로필 번역하기" translateProfile: "프로필 번역하기"
enableAbsoluteTime: "절대 시간 표기 사용" enableAbsoluteTime: "절대 시간 표기 사용"
inviteRevoke: "모든 초대 코드 무효화"
inviteRevokeConfirm: "정말로 모든 초대 코드를 무효화 할까요?"
_group: _group:
leader: "그룹 주인" leader: "그룹 주인"
banish: "추방" banish: "추방"

View file

@ -39,6 +39,7 @@ import * as ep___admin_getIndexStats from './endpoints/admin/get-index-stats.js'
import * as ep___admin_getTableStats from './endpoints/admin/get-table-stats.js'; import * as ep___admin_getTableStats from './endpoints/admin/get-table-stats.js';
import * as ep___admin_getUserIps from './endpoints/admin/get-user-ips.js'; import * as ep___admin_getUserIps from './endpoints/admin/get-user-ips.js';
import * as ep___invite from './endpoints/invite.js'; import * as ep___invite from './endpoints/invite.js';
import * as ep___inviteRevoke from './endpoints/invite-revoke.js';
import * as ep___admin_promo_create from './endpoints/admin/promo/create.js'; import * as ep___admin_promo_create from './endpoints/admin/promo/create.js';
import * as ep___admin_queue_clear from './endpoints/admin/queue/clear.js'; import * as ep___admin_queue_clear from './endpoints/admin/queue/clear.js';
import * as ep___admin_queue_deliverDelayed from './endpoints/admin/queue/deliver-delayed.js'; import * as ep___admin_queue_deliverDelayed from './endpoints/admin/queue/deliver-delayed.js';
@ -402,6 +403,7 @@ const $admin_getIndexStats: Provider = { provide: 'ep:admin/get-index-stats', us
const $admin_getTableStats: Provider = { provide: 'ep:admin/get-table-stats', useClass: ep___admin_getTableStats.default }; const $admin_getTableStats: Provider = { provide: 'ep:admin/get-table-stats', useClass: ep___admin_getTableStats.default };
const $admin_getUserIps: Provider = { provide: 'ep:admin/get-user-ips', useClass: ep___admin_getUserIps.default }; const $admin_getUserIps: Provider = { provide: 'ep:admin/get-user-ips', useClass: ep___admin_getUserIps.default };
const $invite: Provider = { provide: 'ep:invite', useClass: ep___invite.default }; const $invite: Provider = { provide: 'ep:invite', useClass: ep___invite.default };
const $inviteRevoke: Provider = { provide: 'ep:invite-revoke', useClass: ep___inviteRevoke.default };
const $admin_promo_create: Provider = { provide: 'ep:admin/promo/create', useClass: ep___admin_promo_create.default }; const $admin_promo_create: Provider = { provide: 'ep:admin/promo/create', useClass: ep___admin_promo_create.default };
const $admin_queue_clear: Provider = { provide: 'ep:admin/queue/clear', useClass: ep___admin_queue_clear.default }; const $admin_queue_clear: Provider = { provide: 'ep:admin/queue/clear', useClass: ep___admin_queue_clear.default };
const $admin_queue_deliverDelayed: Provider = { provide: 'ep:admin/queue/deliver-delayed', useClass: ep___admin_queue_deliverDelayed.default }; const $admin_queue_deliverDelayed: Provider = { provide: 'ep:admin/queue/deliver-delayed', useClass: ep___admin_queue_deliverDelayed.default };
@ -769,6 +771,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention
$admin_getTableStats, $admin_getTableStats,
$admin_getUserIps, $admin_getUserIps,
$invite, $invite,
$inviteRevoke,
$admin_promo_create, $admin_promo_create,
$admin_queue_clear, $admin_queue_clear,
$admin_queue_deliverDelayed, $admin_queue_deliverDelayed,
@ -1130,6 +1133,7 @@ const $retention: Provider = { provide: 'ep:retention', useClass: ep___retention
$admin_getTableStats, $admin_getTableStats,
$admin_getUserIps, $admin_getUserIps,
$invite, $invite,
$inviteRevoke,
$admin_promo_create, $admin_promo_create,
$admin_queue_clear, $admin_queue_clear,
$admin_queue_deliverDelayed, $admin_queue_deliverDelayed,

View file

@ -39,6 +39,7 @@ import * as ep___admin_getIndexStats from './endpoints/admin/get-index-stats.js'
import * as ep___admin_getTableStats from './endpoints/admin/get-table-stats.js'; import * as ep___admin_getTableStats from './endpoints/admin/get-table-stats.js';
import * as ep___admin_getUserIps from './endpoints/admin/get-user-ips.js'; import * as ep___admin_getUserIps from './endpoints/admin/get-user-ips.js';
import * as ep___invite from './endpoints/invite.js'; import * as ep___invite from './endpoints/invite.js';
import * as ep___inviteRevoke from './endpoints/invite-revoke.js';
import * as ep___admin_promo_create from './endpoints/admin/promo/create.js'; import * as ep___admin_promo_create from './endpoints/admin/promo/create.js';
import * as ep___admin_queue_clear from './endpoints/admin/queue/clear.js'; import * as ep___admin_queue_clear from './endpoints/admin/queue/clear.js';
import * as ep___admin_queue_deliverDelayed from './endpoints/admin/queue/deliver-delayed.js'; import * as ep___admin_queue_deliverDelayed from './endpoints/admin/queue/deliver-delayed.js';
@ -400,6 +401,7 @@ const eps = [
['admin/get-table-stats', ep___admin_getTableStats], ['admin/get-table-stats', ep___admin_getTableStats],
['admin/get-user-ips', ep___admin_getUserIps], ['admin/get-user-ips', ep___admin_getUserIps],
['invite', ep___invite], ['invite', ep___invite],
['invite-revoke', ep___inviteRevoke],
['admin/promo/create', ep___admin_promo_create], ['admin/promo/create', ep___admin_promo_create],
['admin/queue/clear', ep___admin_queue_clear], ['admin/queue/clear', ep___admin_queue_clear],
['admin/queue/deliver-delayed', ep___admin_queue_deliverDelayed], ['admin/queue/deliver-delayed', ep___admin_queue_deliverDelayed],

View file

@ -0,0 +1,31 @@
import { Inject, Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import type { RegistrationTicketsRepository } from '@/models/index.js';
import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['admin'],
requireCredential: true,
requireRolePolicy: 'canInvite',
requireModerator: true,
} as const;
export const paramDef = {
type: 'object',
properties: {},
required: [],
} as const;
@Injectable()
export default class extends Endpoint<typeof meta, typeof paramDef> {
constructor(
@Inject(DI.registrationTicketsRepository)
private registrationTicketsRepository: RegistrationTicketsRepository,
) {
super(meta, paramDef, async () => {
await this.registrationTicketsRepository.delete({
});
});
}
}

View file

@ -82,6 +82,11 @@ const menuDef = $computed(() => [{
icon: 'ti ti-user-plus', icon: 'ti ti-user-plus',
text: i18n.ts.invite, text: i18n.ts.invite,
action: invite, action: invite,
}, {
type: 'button',
icon: 'ti ti-user-cancel',
text: i18n.ts.inviteRevoke,
action: inviteRevoke,
}] : [])], }] : [])],
}, { }, {
title: i18n.ts.administration, title: i18n.ts.administration,
@ -253,6 +258,16 @@ const invite = () => {
}); });
}; };
const inviteRevoke = () => {
os.confirm({
type: 'warning',
text: i18n.ts.inviteRevokeConfirm,
}).then(({ canceled }) => {
if (canceled) return;
os.apiWithDialog('invite-revoke');
});
};
const lookup = (ev) => { const lookup = (ev) => {
os.popupMenu([{ os.popupMenu([{
text: i18n.ts.user, text: i18n.ts.user,

View file

@ -1,20 +0,0 @@
import define from '../../define';
import { RegistrationTickets } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '招待コードを失効します。'
},
tags: ['admin'],
requireCredential: true as const,
requireModerator: true,
params: {}
};
export default define(meta, async () => {
await RegistrationTickets.delete({
});
});