diff --git a/locales/en-US.yml b/locales/en-US.yml index 21bd38422b27..783191ea10cf 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1302,6 +1302,11 @@ relationalDate: "Registration datetime to allow RTL" confirmAddEmoji: "Is there a chance that the emoji you are about to add will be used more than once by someone other than you?" community: "Community" manageRole: "Manage roles" +selfMadeResource: "I created the image myself." +nonSelfResourceLicense: "License and Evidence of Use" +pleaseEnterTheLicenseNonSelf: "Please enter a license." +checkLicenseNonSelf: "License and Evidence of Use: {license}\nDo you have the license to register the image you are about to add as a emoji?" +nonLicenseCannotAddNonSelf: "Emoji without license and evidence of use cannot be registered.\nPlease check our Emoji Guidelines." _delivery: status: "Delivery status" stop: "Suspended" diff --git a/locales/index.d.ts b/locales/index.d.ts index c39e59c7c50d..9d8db2d8f72a 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5244,6 +5244,28 @@ export interface Locale extends ILocale { * 作成したアンテナ */ "createdAntennas": string; + /** + * 自分で画像を作成しました + */ + "selfMadeResource": string; + /** + * 使用許諾と根拠 + */ + "nonSelfResourceLicense": string; + /** + * 使用許諾を入力してください + */ + "pleaseEnterTheLicenseNonSelf": string; + /** + * 使用許諾と根拠: {license} + * あなたが追加しようとしている画像を絵文字として登録する権利を有していますか? + */ + "checkLicenseNonSelf": ParameterizedString<"license">; + /** + * 使用許諾と根拠のない絵文字は登録することができません。 + * 絵文字ガイドラインをご確認ください。 + */ + "nonLicenseCannotAddNonSelf": string; "_delivery": { /** * 配信状態 diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index e150391c61c7..f6118ffd15bf 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1307,6 +1307,11 @@ confirmWhenRevealingSensitiveMedia: "センシティブなメディアを表示 sensitiveMediaRevealConfirm: "センシティブなメディアです。表示しますか?" createdLists: "作成したリスト" createdAntennas: "作成したアンテナ" +selfMadeResource: "自分で画像を作成しました" +nonSelfResourceLicense: "使用許諾と根拠" +pleaseEnterTheLicenseNonSelf: "使用許諾を入力してください" +checkLicenseNonSelf: "使用許諾と根拠: {license}\n あなたが追加しようとしている画像を絵文字として登録する権利を有していますか?" +nonLicenseCannotAddNonSelf: "使用許諾と根拠のない絵文字は登録することができません。\n絵文字ガイドラインをご確認ください。" _delivery: status: "配信状態" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index decc0c61b9dc..1a6408d3776b 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1275,6 +1275,11 @@ changeLog: "更新履歴" confirmAddEmoji: "今追加しとる絵文字はあんた以外が2回以上使用される可能性があるんか?" community: "コミュニティー" manageRole: "ロールの管理" +selfMadeResource: "自分で画像を作成しました" +nonSelfResourceLicense: "使用許諾と根拠" +pleaseEnterTheLicenseNonSelf: "使用許諾を入力してください" +checkLicenseNonSelf: "使用許諾と根拠: {license}\n あなたが追加しようとしている画像を絵文字として登録する権利を有していますか?" +nonLicenseCannotAddNonSelf: "使用許諾と根拠のない絵文字は登録することができません。\n絵文字ガイドラインをご確認ください。" _delivery: stop: "配信せぇへん" _type: diff --git a/packages/frontend/src/components/MkEmojiLog.vue b/packages/frontend/src/components/MkEmojiLog.vue index d7fc1c78e4dd..725c835645a6 100644 --- a/packages/frontend/src/components/MkEmojiLog.vue +++ b/packages/frontend/src/components/MkEmojiLog.vue @@ -61,6 +61,7 @@ const typeToi18n = { category: i18n.ts.category, originalUrl: i18n.ts.emojiUrl, aliases: i18n.ts.tags, + isSelfMadeResource: i18n.ts.selfMadeResource, license: i18n.ts.license, localOnly: i18n.ts.localOnly, isSensitive: i18n.ts.markAsSensitive, diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue index 06a4362acf80..24a6ab464d25 100644 --- a/packages/frontend/src/pages/emoji-edit-dialog.vue +++ b/packages/frontend/src/pages/emoji-edit-dialog.vue @@ -85,8 +85,10 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts.setMultipleBySeparatingWithSpace }} - - + {{ i18n.ts.selfMadeResource }} + + + @@ -188,6 +190,7 @@ const aliasesText = computed({ })); } }); +const isSelfMadeResource = ref(props.emoji ? props.emoji.isSelfMadeResource : false); const license = ref(props.emoji ? (props.emoji.license ?? '') : ''); const isSensitive = ref(props.emoji ? props.emoji.isSensitive : false); const localOnly = ref(props.emoji ? props.emoji.localOnly : false); @@ -264,7 +267,59 @@ async function removeRole(role, ev) { rolesThatCanBeUsedThisEmojiAsReaction.value = rolesThatCanBeUsedThisEmojiAsReaction.value.filter(x => x.id !== role.id); } +async function licenseCheckWithCanceled(): Promise { + if (isSelfMadeResource.value) { + if (license.value === '') { + const { canceled } = await os.confirm({ + type: 'warning', + text: i18n.ts.noneLicense, + okText: i18n.ts.yes, + cancelText: i18n.ts.no, + }); + if (canceled) { + await os.alert({ + type: 'error', + title: i18n.ts.error, + text: i18n.ts.noneLicenseNo, + }); + return true; + } + } + return false; + } + + if (license.value === '') { + await os.alert({ + type: 'error', + title: i18n.ts.error, + text: i18n.ts.pleaseEnterTheLicenseNonSelf, + }); + return true; + } + const { canceled } = await os.confirm({ + type: 'warning', + text: i18n.tsx.checkLicenseNonSelf({ + license: license.value, + }), + okText: i18n.ts.yes, + cancelText: i18n.ts.no, + }); + if (canceled) { + await os.alert({ + type: 'error', + title: i18n.ts.error, + text: i18n.ts.nonLicenseCannotAddNonSelf, + }); + return true; + } + return false; +} + async function done() { + if (await licenseCheckWithCanceled()) { + return; + } + if (!props.emoji && $i.emojiCount < 10) { const { canceled } = await os.confirm({ type: 'warning', @@ -274,27 +329,12 @@ async function done() { }); if (canceled) return; } - if (license.value === '') { - const { canceled } = await os.confirm({ - type: 'warning', - text: i18n.ts.noneLicense, - okText: i18n.ts.yes, - cancelText: i18n.ts.no, - }); - if (canceled) { - await os.alert({ - type: 'error', - title: i18n.ts.error, - text: i18n.ts.noneLicenseNo, - }); - return; - } - } const params = { name: name.value, category: category.value === '' ? null : category.value, aliases: aliases.value.map(v => v.value), + isSelfMadeResource: isSelfMadeResource.value, license: license.value === '' ? null : license.value, isSensitive: isSensitive.value, localOnly: localOnly.value, diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index 9829dd813e6f..fd9fad4778f2 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -4733,6 +4733,7 @@ export type components = { /** @description The local host is represented with `null`. */ host: string | null; url: string; + isSelfMadeResource: boolean; license: string | null; isSensitive: boolean; localOnly: boolean; @@ -7076,6 +7077,7 @@ export type operations = { /** @description Use `null` to reset the category. */ category?: string | null; aliases?: string[]; + isSelfMadeResource?: boolean; license?: string | null; isSensitive?: boolean; localOnly?: boolean; @@ -7706,6 +7708,7 @@ export type operations = { /** @description Use `null` to reset the category. */ category?: string | null; aliases?: string[]; + isSelfMadeResource?: boolean; license?: string | null; isSensitive?: boolean; localOnly?: boolean;