mirror of
https://github.com/misskey-dev/misskey.git
synced 2024-12-28 16:38:23 +01:00
Merge branch 'develop' into feat-14931
This commit is contained in:
commit
8e01cc12b5
7 changed files with 55 additions and 16 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -68,6 +68,8 @@ misskey-assets
|
||||||
# Vite temporary files
|
# Vite temporary files
|
||||||
vite.config.js.timestamp-*
|
vite.config.js.timestamp-*
|
||||||
vite.config.ts.timestamp-*
|
vite.config.ts.timestamp-*
|
||||||
|
vite.config.local-dev.js.timestamp-*
|
||||||
|
vite.config.local-dev.ts.timestamp-*
|
||||||
|
|
||||||
# blender backups
|
# blender backups
|
||||||
*.blend1
|
*.blend1
|
||||||
|
|
16
locales/index.d.ts
vendored
16
locales/index.d.ts
vendored
|
@ -1546,10 +1546,6 @@ export interface Locale extends ILocale {
|
||||||
* 登録
|
* 登録
|
||||||
*/
|
*/
|
||||||
"registration": string;
|
"registration": string;
|
||||||
/**
|
|
||||||
* 誰でも新規登録できるようにする
|
|
||||||
*/
|
|
||||||
"enableRegistration": string;
|
|
||||||
/**
|
/**
|
||||||
* 招待
|
* 招待
|
||||||
*/
|
*/
|
||||||
|
@ -5218,6 +5214,10 @@ export interface Locale extends ILocale {
|
||||||
* 利用可能なロール
|
* 利用可能なロール
|
||||||
*/
|
*/
|
||||||
"availableRoles": string;
|
"availableRoles": string;
|
||||||
|
/**
|
||||||
|
* 注意事項を理解した上でオンにします。
|
||||||
|
*/
|
||||||
|
"acknowledgeNotesAndEnable": string;
|
||||||
"_accountSettings": {
|
"_accountSettings": {
|
||||||
/**
|
/**
|
||||||
* コンテンツの表示にログインを必須にする
|
* コンテンツの表示にログインを必須にする
|
||||||
|
@ -5794,6 +5794,14 @@ export interface Locale extends ILocale {
|
||||||
* サーバー運営者へのお問い合わせフォームのURLや、運営者の連絡先等が記載されたWebページのURLを指定します。
|
* サーバー運営者へのお問い合わせフォームのURLや、運営者の連絡先等が記載されたWebページのURLを指定します。
|
||||||
*/
|
*/
|
||||||
"inquiryUrlDescription": string;
|
"inquiryUrlDescription": string;
|
||||||
|
/**
|
||||||
|
* アカウントの作成をオープンにする
|
||||||
|
*/
|
||||||
|
"openRegistration": string;
|
||||||
|
/**
|
||||||
|
* 登録を開放することはリスクが伴います。サーバーを常に監視し、トラブルが発生した際にすぐに対応できる体制がある場合のみオンにすることを推奨します。
|
||||||
|
*/
|
||||||
|
"openRegistrationWarning": string;
|
||||||
/**
|
/**
|
||||||
* 一定期間モデレーターのアクティビティが検出されなかった場合、スパム防止のためこの設定は自動でオフになります。
|
* 一定期間モデレーターのアクティビティが検出されなかった場合、スパム防止のためこの設定は自動でオフになります。
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -382,7 +382,6 @@ enableLocalTimeline: "ローカルタイムラインを有効にする"
|
||||||
enableGlobalTimeline: "グローバルタイムラインを有効にする"
|
enableGlobalTimeline: "グローバルタイムラインを有効にする"
|
||||||
disablingTimelinesInfo: "これらのタイムラインを無効化しても、利便性のため管理者およびモデレーターは引き続き利用することができます。"
|
disablingTimelinesInfo: "これらのタイムラインを無効化しても、利便性のため管理者およびモデレーターは引き続き利用することができます。"
|
||||||
registration: "登録"
|
registration: "登録"
|
||||||
enableRegistration: "誰でも新規登録できるようにする"
|
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量"
|
driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量"
|
driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
|
@ -1300,6 +1299,7 @@ thisContentsAreMarkedAsSigninRequiredByAuthor: "投稿者により、表示に
|
||||||
lockdown: "ロックダウン"
|
lockdown: "ロックダウン"
|
||||||
pleaseSelectAccount: "アカウントを選択してください"
|
pleaseSelectAccount: "アカウントを選択してください"
|
||||||
availableRoles: "利用可能なロール"
|
availableRoles: "利用可能なロール"
|
||||||
|
acknowledgeNotesAndEnable: "注意事項を理解した上でオンにします。"
|
||||||
|
|
||||||
_accountSettings:
|
_accountSettings:
|
||||||
requireSigninToViewContents: "コンテンツの表示にログインを必須にする"
|
requireSigninToViewContents: "コンテンツの表示にログインを必須にする"
|
||||||
|
@ -1466,6 +1466,8 @@ _serverSettings:
|
||||||
reactionsBufferingDescription: "有効にすると、リアクション作成時のパフォーマンスが大幅に向上し、データベースへの負荷を軽減することが可能です。ただし、Redisのメモリ使用量は増加します。"
|
reactionsBufferingDescription: "有効にすると、リアクション作成時のパフォーマンスが大幅に向上し、データベースへの負荷を軽減することが可能です。ただし、Redisのメモリ使用量は増加します。"
|
||||||
inquiryUrl: "問い合わせ先URL"
|
inquiryUrl: "問い合わせ先URL"
|
||||||
inquiryUrlDescription: "サーバー運営者へのお問い合わせフォームのURLや、運営者の連絡先等が記載されたWebページのURLを指定します。"
|
inquiryUrlDescription: "サーバー運営者へのお問い合わせフォームのURLや、運営者の連絡先等が記載されたWebページのURLを指定します。"
|
||||||
|
openRegistration: "アカウントの作成をオープンにする"
|
||||||
|
openRegistrationWarning: "登録を開放することはリスクが伴います。サーバーを常に監視し、トラブルが発生した際にすぐに対応できる体制がある場合のみオンにすることを推奨します。"
|
||||||
thisSettingWillAutomaticallyOffWhenModeratorsInactive: "一定期間モデレーターのアクティビティが検出されなかった場合、スパム防止のためこの設定は自動でオフになります。"
|
thisSettingWillAutomaticallyOffWhenModeratorsInactive: "一定期間モデレーターのアクティビティが検出されなかった場合、スパム防止のためこの設定は自動でオフになります。"
|
||||||
|
|
||||||
_accountMigration:
|
_accountMigration:
|
||||||
|
|
|
@ -355,7 +355,7 @@ export class ApPersonService implements OnModuleInit {
|
||||||
usernameLower: person.preferredUsername?.toLowerCase(),
|
usernameLower: person.preferredUsername?.toLowerCase(),
|
||||||
host,
|
host,
|
||||||
inbox: person.inbox,
|
inbox: person.inbox,
|
||||||
sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox,
|
sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null,
|
||||||
followersUri: person.followers ? getApId(person.followers) : undefined,
|
followersUri: person.followers ? getApId(person.followers) : undefined,
|
||||||
featured: person.featured ? getApId(person.featured) : undefined,
|
featured: person.featured ? getApId(person.featured) : undefined,
|
||||||
uri: person.id,
|
uri: person.id,
|
||||||
|
@ -521,7 +521,7 @@ export class ApPersonService implements OnModuleInit {
|
||||||
const updates = {
|
const updates = {
|
||||||
lastFetchedAt: new Date(),
|
lastFetchedAt: new Date(),
|
||||||
inbox: person.inbox,
|
inbox: person.inbox,
|
||||||
sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox,
|
sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null,
|
||||||
followersUri: person.followers ? getApId(person.followers) : undefined,
|
followersUri: person.followers ? getApId(person.followers) : undefined,
|
||||||
featured: person.featured,
|
featured: person.featured,
|
||||||
emojis: emojiNames,
|
emojis: emojiNames,
|
||||||
|
@ -593,7 +593,7 @@ export class ApPersonService implements OnModuleInit {
|
||||||
// 該当ユーザーが既にフォロワーになっていた場合はFollowingもアップデートする
|
// 該当ユーザーが既にフォロワーになっていた場合はFollowingもアップデートする
|
||||||
await this.followingsRepository.update(
|
await this.followingsRepository.update(
|
||||||
{ followerId: exist.id },
|
{ followerId: exist.id },
|
||||||
{ followerSharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox },
|
{ followerSharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null },
|
||||||
);
|
);
|
||||||
|
|
||||||
await this.updateFeatured(exist.id, resolver).catch(err => this.logger.error(err));
|
await this.updateFeatured(exist.id, resolver).catch(err => this.logger.error(err));
|
||||||
|
|
|
@ -10,9 +10,12 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
|
<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
|
||||||
<FormSuspense :p="init">
|
<FormSuspense :p="init">
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<MkSwitch v-model="enableRegistration" @change="onChange_enableRegistration">
|
<MkSwitch :modelValue="enableRegistration" @update:modelValue="onChange_enableRegistration">
|
||||||
<template #label>{{ i18n.ts.enableRegistration }}</template>
|
<template #label>{{ i18n.ts._serverSettings.openRegistration }}</template>
|
||||||
<template #caption>{{ i18n.ts._serverSettings.thisSettingWillAutomaticallyOffWhenModeratorsInactive }}</template>
|
<template #caption>
|
||||||
|
<div>{{ i18n.ts._serverSettings.thisSettingWillAutomaticallyOffWhenModeratorsInactive }}</div>
|
||||||
|
<div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.ts._serverSettings.openRegistrationWarning }}</div>
|
||||||
|
</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
|
|
||||||
<MkSwitch v-model="emailRequiredForSignup" @change="onChange_emailRequiredForSignup">
|
<MkSwitch v-model="emailRequiredForSignup" @change="onChange_emailRequiredForSignup">
|
||||||
|
@ -164,7 +167,17 @@ async function init() {
|
||||||
mediaSilencedHosts.value = meta.mediaSilencedHosts.join('\n');
|
mediaSilencedHosts.value = meta.mediaSilencedHosts.join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
function onChange_enableRegistration(value: boolean) {
|
async function onChange_enableRegistration(value: boolean) {
|
||||||
|
if (value) {
|
||||||
|
const { canceled } = await os.confirm({
|
||||||
|
type: 'warning',
|
||||||
|
text: i18n.ts.acknowledgeNotesAndEnable,
|
||||||
|
});
|
||||||
|
if (canceled) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
enableRegistration.value = value;
|
||||||
|
|
||||||
os.apiWithDialog('admin/update-meta', {
|
os.apiWithDialog('admin/update-meta', {
|
||||||
disableRegistration: !value,
|
disableRegistration: !value,
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
|
@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #default="{items}">
|
<template #default="{items}">
|
||||||
<div class="mk-follow-requests">
|
<div class="mk-follow-requests _gaps">
|
||||||
<div v-for="req in items" :key="req.id" class="user _panel">
|
<div v-for="req in items" :key="req.id" class="user _panel">
|
||||||
<MkAvatar class="avatar" :user="displayUser(req)" indicator link preview/>
|
<MkAvatar class="avatar" :user="displayUser(req)" indicator link preview/>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
|
@ -94,11 +94,11 @@ const headerTabs = computed(() => [
|
||||||
{
|
{
|
||||||
key: 'list',
|
key: 'list',
|
||||||
title: i18n.ts._followRequest.recieved,
|
title: i18n.ts._followRequest.recieved,
|
||||||
icon: 'ti ti-mail',
|
icon: 'ti ti-download',
|
||||||
}, {
|
}, {
|
||||||
key: 'sent',
|
key: 'sent',
|
||||||
title: i18n.ts._followRequest.sent,
|
title: i18n.ts._followRequest.sent,
|
||||||
icon: 'ti ti-send',
|
icon: 'ti ti-upload',
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #label>{{ i18n.ts.lockdown }}<span class="_beta">{{ i18n.ts.beta }}</span></template>
|
<template #label>{{ i18n.ts.lockdown }}<span class="_beta">{{ i18n.ts.beta }}</span></template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<MkSwitch v-model="requireSigninToViewContents" @update:modelValue="save()">
|
<MkSwitch :modelValue="requireSigninToViewContents" @update:modelValue="update_requireSigninToViewContents">
|
||||||
{{ i18n.ts._accountSettings.requireSigninToViewContents }}
|
{{ i18n.ts._accountSettings.requireSigninToViewContents }}
|
||||||
<template #caption>
|
<template #caption>
|
||||||
<div>{{ i18n.ts._accountSettings.requireSigninToViewContentsDescription1 }}</div>
|
<div>{{ i18n.ts._accountSettings.requireSigninToViewContentsDescription1 }}</div>
|
||||||
|
@ -172,6 +172,7 @@ import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||||
import FormSlot from '@/components/form/slot.vue';
|
import FormSlot from '@/components/form/slot.vue';
|
||||||
import { formatDateTimeString } from '@/scripts/format-time-string.js';
|
import { formatDateTimeString } from '@/scripts/format-time-string.js';
|
||||||
import MkInput from '@/components/MkInput.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
|
import * as os from '@/os.js';
|
||||||
|
|
||||||
const $i = signinRequired();
|
const $i = signinRequired();
|
||||||
|
|
||||||
|
@ -217,6 +218,19 @@ watch([makeNotesFollowersOnlyBefore, makeNotesHiddenBefore], () => {
|
||||||
save();
|
save();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
async function update_requireSigninToViewContents(value: boolean) {
|
||||||
|
if (value) {
|
||||||
|
const { canceled } = await os.confirm({
|
||||||
|
type: 'warning',
|
||||||
|
text: i18n.ts.acknowledgeNotesAndEnable,
|
||||||
|
});
|
||||||
|
if (canceled) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
requireSigninToViewContents.value = value;
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
function save() {
|
function save() {
|
||||||
misskeyApi('i/update', {
|
misskeyApi('i/update', {
|
||||||
isLocked: !!isLocked.value,
|
isLocked: !!isLocked.value,
|
||||||
|
|
Loading…
Reference in a new issue