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

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