diff --git a/locales/index.d.ts b/locales/index.d.ts index cb467f690a..9c2769ab82 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -6005,6 +6005,14 @@ export interface Locale extends ILocale { * New */ "new": string; + /** + * Throw confetti + */ + "confetti": string; + /** + * If enabled, the announcement will display a confetti effect when viewed. + */ + "confettiDescription": string; }; "_initialAccountSetting": { /** @@ -11984,6 +11992,14 @@ export interface Locale extends ILocale { * Separate with spaces for an AND condition or with line breaks for an OR condition. Using surrounding keywords with slashes will turn them into a regular expression. If you write only the domain name, it will be a backward match. */ "trustedLinkUrlPatternsDescription": string; + /** + * Link to external site warning exclusion list + */ + "trustedDomainsList": string; + /** + * Following links to these domains will not show a warning. Write one domain per line. + */ + "trustedDomainsListDescription": string; /** * Mutuals */ diff --git a/packages/frontend/src/components/MkUrlWarningDialog.vue b/packages/frontend/src/components/MkUrlWarningDialog.vue index 01ecba1817..8b18942719 100644 --- a/packages/frontend/src/components/MkUrlWarningDialog.vue +++ b/packages/frontend/src/components/MkUrlWarningDialog.vue @@ -64,7 +64,7 @@ function done(canceled: boolean, result?: Result): void { // eslint-disable-line async function ok() { const result = true; if (!prefer.s.trustedDomains.includes(domain.value) && trustThisDomain.value) { - prefer.r.trustedDomains.value = prefer.s.trustedDomains.concat(domain.value); + prefer.commit('trustedDomains', prefer.s.trustedDomains.concat(domain.value)); } done(false, result); } diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index 54b5b6be1c..d21faf61e9 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -829,6 +829,15 @@ SPDX-License-Identifier: AGPL-3.0-only + + + + + + + + + @@ -967,6 +976,7 @@ import FormLink from '@/components/form/link.vue'; import MkLink from '@/components/MkLink.vue'; import MkInfo from '@/components/MkInfo.vue'; import MkInput from '@/components/MkInput.vue'; +import MkTextarea from '@/components/MkTextarea.vue'; import { store } from '@/store.js'; import * as os from '@/os.js'; import { misskeyApi } from '@/utility/misskey-api.js'; @@ -1073,6 +1083,11 @@ const lang = prefer.model('lang'); const fontSize = prefer.model('fontSize'); const useSystemFont = prefer.model('useSystemFont'); const cornerRadius = prefer.model('cornerRadius'); +const trustedDomains = prefer.model( + 'trustedDomains', + (domainsList) => domainsList.join('\n'), + (domainsString) => domainsString.split('\n').map( d => d.trim() ).filter( x => x.length > 0), +); watch([ hemisphere, diff --git a/packages/frontend/src/utility/warning-external-website.ts b/packages/frontend/src/utility/warning-external-website.ts index 33cf379b50..28c03c419d 100644 --- a/packages/frontend/src/utility/warning-external-website.ts +++ b/packages/frontend/src/utility/warning-external-website.ts @@ -36,8 +36,8 @@ export async function warningExternalWebsite(url: string) { } }); - const isTrustedByUser = prefer.r.trustedDomains.value.includes(hostname); - const isDisabledByUser = !prefer.r.warnExternalUrl.value; + const isTrustedByUser = prefer.s.trustedDomains.includes(hostname); + const isDisabledByUser = !prefer.s.warnExternalUrl; if (!isTrustedByInstance && !isTrustedByUser && !isDisabledByUser) { const confirm = await new Promise<{ canceled: boolean }>(resolve => { diff --git a/sharkey-locales/en-US.yml b/sharkey-locales/en-US.yml index 140d8f16a3..99fe75b26b 100644 --- a/sharkey-locales/en-US.yml +++ b/sharkey-locales/en-US.yml @@ -8,6 +8,8 @@ deleteAndEditConfirm: "Are you sure you want to redraft this note? This means yo openRemoteProfile: "Open remote profile" trustedLinkUrlPatterns: "Link to external site warning exclusion list" trustedLinkUrlPatternsDescription: "Separate with spaces for an AND condition or with line breaks for an OR condition. Using surrounding keywords with slashes will turn them into a regular expression. If you write only the domain name, it will be a backward match." +trustedDomainsList: "Link to external site warning exclusion list" +trustedDomainsListDescription: "Following links to these domains will not show a warning. Write one domain per line." mutuals: "Mutuals" isLocked: "Private account" isAdmin: "Administrator"