feature: record license info for custom emoji
This commit is contained in:
parent
9e1fdeaf39
commit
58430cc28b
|
@ -935,6 +935,7 @@ moveFromLabel: "引っ越し元のアカウント:"
|
||||||
moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。必ず引っ越しを実行する前に作成してください!引っ越し元のアカウントをこのように入力してください:@person@instance.com"
|
moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。必ず引っ越しを実行する前に作成してください!引っ越し元のアカウントをこのように入力してください:@person@instance.com"
|
||||||
migrationConfirm: "本当にこのアカウントを {account} に引っ越しますか?一度引っ越しを行うと取り消せず、二度とこのアカウントを元の状態で使用することはできません。\nまた、引っ越し先のアカウントでエイリアスを作成したことを確認してください。"
|
migrationConfirm: "本当にこのアカウントを {account} に引っ越しますか?一度引っ越しを行うと取り消せず、二度とこのアカウントを元の状態で使用することはできません。\nまた、引っ越し先のアカウントでエイリアスを作成したことを確認してください。"
|
||||||
defaultReaction: "リモートとローカルの投稿に対するデフォルトの絵文字リアクション"
|
defaultReaction: "リモートとローカルの投稿に対するデフォルトの絵文字リアクション"
|
||||||
|
license: "ライセンス"
|
||||||
|
|
||||||
_sensitiveMediaDetection:
|
_sensitiveMediaDetection:
|
||||||
description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てることができます。サーバーの負荷が少し増えます。"
|
description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てることができます。サーバーの負荷が少し増えます。"
|
||||||
|
|
|
@ -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"`);
|
||||||
|
}
|
||||||
|
}
|
|
@ -55,4 +55,9 @@ export class Emoji {
|
||||||
array: true, length: 128, default: '{}',
|
array: true, length: 128, default: '{}',
|
||||||
})
|
})
|
||||||
public aliases: string[];
|
public aliases: string[];
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024, nullable: true,
|
||||||
|
})
|
||||||
|
public license: string | null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ export const EmojiRepository = db.getRepository(Emoji).extend({
|
||||||
host: emoji.host,
|
host: emoji.host,
|
||||||
// || emoji.originalUrl してるのは後方互換性のため
|
// || emoji.originalUrl してるのは後方互換性のため
|
||||||
url: emoji.publicUrl || emoji.originalUrl,
|
url: emoji.publicUrl || emoji.originalUrl,
|
||||||
|
license: emoji.license,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -40,5 +40,10 @@ export const packedEmojiSchema = {
|
||||||
optional: false,
|
optional: false,
|
||||||
nullable: false,
|
nullable: false,
|
||||||
},
|
},
|
||||||
|
license: {
|
||||||
|
type: "string",
|
||||||
|
optional: false,
|
||||||
|
nullable: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|
|
@ -75,6 +75,7 @@ export async function importCustomEmojis(
|
||||||
originalUrl: driveFile.url,
|
originalUrl: driveFile.url,
|
||||||
publicUrl: driveFile.webpublicUrl ?? driveFile.url,
|
publicUrl: driveFile.webpublicUrl ?? driveFile.url,
|
||||||
type: driveFile.webpublicType ?? driveFile.type,
|
type: driveFile.webpublicType ?? driveFile.type,
|
||||||
|
license: emojiInfo.license,
|
||||||
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
|
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@ export default define(meta, paramDef, async (ps, me) => {
|
||||||
originalUrl: file.url,
|
originalUrl: file.url,
|
||||||
publicUrl: file.webpublicUrl ?? file.url,
|
publicUrl: file.webpublicUrl ?? file.url,
|
||||||
type: file.webpublicType ?? file.type,
|
type: file.webpublicType ?? file.type,
|
||||||
|
license: null,
|
||||||
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
|
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
|
||||||
|
|
||||||
await db.queryResultCache!.remove(["meta_emojis"]);
|
await db.queryResultCache!.remove(["meta_emojis"]);
|
||||||
|
|
|
@ -73,6 +73,7 @@ export default define(meta, paramDef, async (ps, me) => {
|
||||||
originalUrl: driveFile.url,
|
originalUrl: driveFile.url,
|
||||||
publicUrl: driveFile.webpublicUrl ?? driveFile.url,
|
publicUrl: driveFile.webpublicUrl ?? driveFile.url,
|
||||||
type: driveFile.webpublicType ?? driveFile.type,
|
type: driveFile.webpublicType ?? driveFile.type,
|
||||||
|
license: emoji.license,
|
||||||
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
|
}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
|
||||||
|
|
||||||
await db.queryResultCache!.remove(["meta_emojis"]);
|
await db.queryResultCache!.remove(["meta_emojis"]);
|
||||||
|
|
|
@ -55,6 +55,11 @@ export const meta = {
|
||||||
optional: false,
|
optional: false,
|
||||||
nullable: false,
|
nullable: false,
|
||||||
},
|
},
|
||||||
|
license: {
|
||||||
|
type: "string",
|
||||||
|
optional: false,
|
||||||
|
nullable: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -55,6 +55,11 @@ export const meta = {
|
||||||
optional: false,
|
optional: false,
|
||||||
nullable: false,
|
nullable: false,
|
||||||
},
|
},
|
||||||
|
license: {
|
||||||
|
type: "string",
|
||||||
|
optional: false,
|
||||||
|
nullable: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -34,6 +34,10 @@ export const paramDef = {
|
||||||
type: "string",
|
type: "string",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
license: {
|
||||||
|
type: "string",
|
||||||
|
nullable: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
required: ["id", "name", "aliases"],
|
required: ["id", "name", "aliases"],
|
||||||
} as const;
|
} as const;
|
||||||
|
@ -48,6 +52,7 @@ export default define(meta, paramDef, async (ps) => {
|
||||||
name: ps.name,
|
name: ps.name,
|
||||||
category: ps.category,
|
category: ps.category,
|
||||||
aliases: ps.aliases,
|
aliases: ps.aliases,
|
||||||
|
license: ps.license,
|
||||||
});
|
});
|
||||||
|
|
||||||
await db.queryResultCache!.remove(["meta_emojis"]);
|
await db.queryResultCache!.remove(["meta_emojis"]);
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
<template #label>{{ i18n.ts.tags }}</template>
|
<template #label>{{ i18n.ts.tags }}</template>
|
||||||
<template #caption>{{ i18n.ts.setMultipleBySeparatingWithSpace }}</template>
|
<template #caption>{{ i18n.ts.setMultipleBySeparatingWithSpace }}</template>
|
||||||
</MkInput>
|
</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>
|
<MkButton danger @click="del()"><i class="ph-trash ph-bold ph-lg"></i> {{ i18n.ts.delete }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -47,6 +50,7 @@ let name: string = $ref(props.emoji.name);
|
||||||
let category: string = $ref(props.emoji.category);
|
let category: string = $ref(props.emoji.category);
|
||||||
let aliases: string = $ref(props.emoji.aliases.join(' '));
|
let aliases: string = $ref(props.emoji.aliases.join(' '));
|
||||||
let categories: string[] = $ref(emojiCategories);
|
let categories: string[] = $ref(emojiCategories);
|
||||||
|
let license: string = $ref(props.emoji.license ?? '');
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'done', v: { deleted?: boolean, updated?: any }): void,
|
(ev: 'done', v: { deleted?: boolean, updated?: any }): void,
|
||||||
|
@ -63,6 +67,7 @@ async function update() {
|
||||||
name,
|
name,
|
||||||
category,
|
category,
|
||||||
aliases: aliases.split(' '),
|
aliases: aliases.split(' '),
|
||||||
|
license: license === '' ? null : license,
|
||||||
});
|
});
|
||||||
|
|
||||||
emit('done', {
|
emit('done', {
|
||||||
|
@ -71,6 +76,7 @@ async function update() {
|
||||||
name,
|
name,
|
||||||
category,
|
category,
|
||||||
aliases: aliases.split(' '),
|
aliases: aliases.split(' '),
|
||||||
|
license: license === '' ? null : license,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue