merge: make trustedDomains persist across reloads (!1174)

View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1174

Approved-by: Marie <github@yuugi.dev>
Approved-by: Hazelnoot <acomputerdog@gmail.com>
This commit is contained in:
Hazelnoot 2025-07-27 20:33:37 +00:00
commit 7d005876fb
5 changed files with 36 additions and 3 deletions

16
locales/index.d.ts vendored
View file

@ -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
*/

View file

@ -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);
}

View file

@ -829,6 +829,15 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkPreferenceContainer>
</SearchMarker>
<SearchMarker :keywords="['warn', 'external', 'url']">
<MkPreferenceContainer k="trustedDomains">
<MkTextarea v-model="trustedDomains" :debounce="true">
<template #label><SearchLabel>{{ i18n.ts.trustedDomainsList }}</SearchLabel></template>
<template #caption>{{ i18n.ts.trustedDomainsListDescription }}</template>
</MkTextarea>
</MkPreferenceContainer>
</SearchMarker>
<SearchMarker :keywords="['image', 'photo', 'picture', 'media', 'thumbnail', 'new', 'tab']">
<MkPreferenceContainer k="imageNewTab">
<MkSwitch v-model="imageNewTab">
@ -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,

View file

@ -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 => {

View file

@ -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"