feature: record license info for custom emoji

This commit is contained in:
syuilo 2023-03-16 15:08:48 +09:00 committed by Gitea
parent 9e1fdeaf39
commit 58430cc28b
12 changed files with 47 additions and 0 deletions

View File

@ -935,6 +935,7 @@ moveFromLabel: "引っ越し元のアカウント:"
moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。必ず引っ越しを実行する前に作成してください!引っ越し元のアカウントをこのように入力してください:@person@instance.com"
migrationConfirm: "本当にこのアカウントを {account} に引っ越しますか?一度引っ越しを行うと取り消せず、二度とこのアカウントを元の状態で使用することはできません。\nまた、引っ越し先のアカウントでエイリアスを作成したことを確認してください。"
defaultReaction: "リモートとローカルの投稿に対するデフォルトの絵文字リアクション"
license: "ライセンス"
_sensitiveMediaDetection:
description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てることができます。サーバーの負荷が少し増えます。"

View File

@ -0,0 +1,11 @@
export class addPropsForCustomEmoji1678945242650 {
name = 'addPropsForCustomEmoji1678945242650'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "emoji" ADD "license" character varying(1024)`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "emoji" DROP COLUMN "license"`);
}
}

View File

@ -55,4 +55,9 @@ export class Emoji {
array: true, length: 128, default: '{}',
})
public aliases: string[];
@Column('varchar', {
length: 1024, nullable: true,
})
public license: string | null;
}

View File

@ -15,6 +15,7 @@ export const EmojiRepository = db.getRepository(Emoji).extend({
host: emoji.host,
// || emoji.originalUrl してるのは後方互換性のため
url: emoji.publicUrl || emoji.originalUrl,
license: emoji.license,
};
},

View File

@ -40,5 +40,10 @@ export const packedEmojiSchema = {
optional: false,
nullable: false,
},
license: {
type: "string",
optional: false,
nullable: true,
},
},
} as const;

View File

@ -75,6 +75,7 @@ export async function importCustomEmojis(
originalUrl: driveFile.url,
publicUrl: driveFile.webpublicUrl ?? driveFile.url,
type: driveFile.webpublicType ?? driveFile.type,
license: emojiInfo.license,
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
}

View File

@ -49,6 +49,7 @@ export default define(meta, paramDef, async (ps, me) => {
originalUrl: file.url,
publicUrl: file.webpublicUrl ?? file.url,
type: file.webpublicType ?? file.type,
license: null,
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
await db.queryResultCache!.remove(["meta_emojis"]);

View File

@ -73,6 +73,7 @@ export default define(meta, paramDef, async (ps, me) => {
originalUrl: driveFile.url,
publicUrl: driveFile.webpublicUrl ?? driveFile.url,
type: driveFile.webpublicType ?? driveFile.type,
license: emoji.license,
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
await db.queryResultCache!.remove(["meta_emojis"]);

View File

@ -55,6 +55,11 @@ export const meta = {
optional: false,
nullable: false,
},
license: {
type: "string",
optional: false,
nullable: true,
},
},
},
},

View File

@ -55,6 +55,11 @@ export const meta = {
optional: false,
nullable: false,
},
license: {
type: "string",
optional: false,
nullable: true,
},
},
},
},

View File

@ -34,6 +34,10 @@ export const paramDef = {
type: "string",
},
},
license: {
type: "string",
nullable: true,
},
},
required: ["id", "name", "aliases"],
} as const;
@ -48,6 +52,7 @@ export default define(meta, paramDef, async (ps) => {
name: ps.name,
category: ps.category,
aliases: ps.aliases,
license: ps.license,
});
await db.queryResultCache!.remove(["meta_emojis"]);

View File

@ -22,6 +22,9 @@
<template #label>{{ i18n.ts.tags }}</template>
<template #caption>{{ i18n.ts.setMultipleBySeparatingWithSpace }}</template>
</MkInput>
<MkInput v-model="license" class="_formBlock">
<template #label>{{ i18n.ts.license }}</template>
</MkInput>
<MkButton danger @click="del()"><i class="ph-trash ph-bold ph-lg"></i> {{ i18n.ts.delete }}</MkButton>
</div>
</div>
@ -47,6 +50,7 @@ let name: string = $ref(props.emoji.name);
let category: string = $ref(props.emoji.category);
let aliases: string = $ref(props.emoji.aliases.join(' '));
let categories: string[] = $ref(emojiCategories);
let license: string = $ref(props.emoji.license ?? '');
const emit = defineEmits<{
(ev: 'done', v: { deleted?: boolean, updated?: any }): void,
@ -63,6 +67,7 @@ async function update() {
name,
category,
aliases: aliases.split(' '),
license: license === '' ? null : license,
});
emit('done', {
@ -71,6 +76,7 @@ async function update() {
name,
category,
aliases: aliases.split(' '),
license: license === '' ? null : license,
},
});