From a4cb8be4b2008d16f15faa46bf858d6f1f4efcd6 Mon Sep 17 00:00:00 2001 From: n1lsqn Date: Thu, 28 Mar 2024 21:37:33 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=97=E3=83=AD=E3=83=95=E3=82=A3?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=81=8B=E3=82=89=E3=82=A2=E3=82=AF=E3=83=86?= =?UTF-8?q?=E3=82=A3=E3=83=93=E3=83=86=E3=82=A3=E3=81=A8=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=82=92=E9=9A=A0=E3=81=9B=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit typo feat: 拡張する --- dev.sh | 6 + locales/index.d.ts | 38 +++ locales/ja-JP.yml | 11 + .../frontend/src/pages/settings/general.vue | 238 +++++++++++------- packages/frontend/src/pages/user/home.vue | 32 ++- packages/frontend/src/store.ts | 16 ++ 6 files changed, 234 insertions(+), 107 deletions(-) create mode 100755 dev.sh diff --git a/dev.sh b/dev.sh new file mode 100755 index 000000000000..a0a79dcf1119 --- /dev/null +++ b/dev.sh @@ -0,0 +1,6 @@ +#!/bin/sh +git submodule update --init +pnpm install --frozen-lockfile +pnpm run build +pnpm run migrate +pnpm dev \ No newline at end of file diff --git a/locales/index.d.ts b/locales/index.d.ts index 4ba76151d2d0..a18a8023e060 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -10114,6 +10114,44 @@ export interface Locale extends ILocale { */ "summaryProxyDescription2": string; }; + "_uniqueFeatures": { + /** + * 独自機能 + */ + "uniqueFeature": string; + /** + * リモート上のサーバーのローカルタイムラインを覗く機能 + */ + "remoteLocalTimeline": string; + /** + * プロフィールを非表示にする機能 + */ + "hiddenProfile": string; + /** + * プロフィール上からピン留めしたノートを非表示にします + */ + "hiddenPinnedNotes": string; + /** + * ピン留めしたノートを非表示にすることで、プロフィールページをスッキリさせることができます。 + */ + "hiddenPinnedNotesDescription": string; + /** + * プロフィール上からアクティビティを非表示にします + */ + "hiddenActivity": string; + /** + * プロフィール上からアクティビティを非表示にすることで、プロフィールページをスッキリさせることができます。 + */ + "hiddenActivityDescription": string; + /** + * プロフィール上からファイルを非表示にします。 + */ + "hiddenFiles": string; + /** + * ファイルを非表示にすることで、プロフィールページをスッキリさせることができます。 + */ + "hiddenFilesDescription": string; + }; } declare const locales: { [lang: string]: Locale; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index e85b9087d865..d95da69a215f 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -2698,3 +2698,14 @@ _urlPreviewSetting: summaryProxy: "プレビューを生成するプロキシのエンドポイント" summaryProxyDescription: "Misskey本体ではなく、サマリープロキシを使用してプレビューを生成します。" summaryProxyDescription2: "プロキシには下記パラメータがクエリ文字列として連携されます。プロキシ側がこれらをサポートしない場合、設定値は無視されます。" + +_uniqueFeatures: + uniqueFeature: "独自機能" + remoteLocalTimeline: "リモート上のサーバーのローカルタイムラインを覗く機能" + hiddenProfile: "プロフィールを非表示にする機能" + hiddenPinnedNotes: "プロフィール上からピン留めしたノートを非表示にします" + hiddenPinnedNotesDescription: "ピン留めしたノートを非表示にすることで、プロフィールページをスッキリさせることができます。" + hiddenActivity: "プロフィール上からアクティビティを非表示にします" + hiddenActivityDescription: "プロフィール上からアクティビティを非表示にすることで、プロフィールページをスッキリさせることができます。" + hiddenFiles: "プロフィール上からファイルを非表示にします。" + hiddenFilesDescription: "ファイルを非表示にすることで、プロフィールページをスッキリさせることができます。" diff --git a/packages/frontend/src/pages/settings/general.vue b/packages/frontend/src/pages/settings/general.vue index e9ef3206686c..676b0af067ff 100644 --- a/packages/frontend/src/pages/settings/general.vue +++ b/packages/frontend/src/pages/settings/general.vue @@ -261,105 +261,131 @@ SPDX-License-Identifier: AGPL-3.0-only - - - -
- -
- - - - - - - - - - - - {{ i18n.ts.enable }} - -
-
- - -
- - - - - - - - - - - - {{ i18n.ts.enable }} - -
-
- - -
- - - - - - - - - - - - {{ i18n.ts.enable }} - -
-
- - -
- - - - - - - - - - - - {{ i18n.ts.enable }} - -
-
- - -
- - - - - - - - - - - - {{ i18n.ts.enable }} - + + +
+ + +
+
+ {{ i18n.ts.enableAll }} + {{ i18n.ts.disableAll }}
- + + + {{ i18n.ts._uniqueFeatures.hiddenPinnedNotes }} + + + + {{ i18n.ts._uniqueFeatures.hiddenActivity }} + + + + {{ i18n.ts._uniqueFeatures.hiddenFiles }} + +
+
- - {{ i18n.ts.save }} - -
- + + + +
+ +
+ + + + + + + + + + + + {{ i18n.ts.enable }} + +
+
+ + +
+ + + + + + + + + + + + {{ i18n.ts.enable }} + +
+
+ + +
+ + + + + + + + + + + + {{ i18n.ts.enable }} + +
+
+ + +
+ + + + + + + + + + + + {{ i18n.ts.enable }} + +
+
+ + +
+ + + + + + + + + + + + {{ i18n.ts.enable }} + +
+
+ + + {{ i18n.ts.save }} + +
+
+
@@ -447,6 +473,9 @@ const disableDrawer = computed(defaultStore.makeGetterSetter('disableDrawer')); const disableShowingAnimatedImages = computed(defaultStore.makeGetterSetter('disableShowingAnimatedImages')); const autoDataSaver = computed(defaultStore.makeGetterSetter('autoDataSaver')); const enableDataSaverMode = computed(defaultStore.makeGetterSetter('enableDataSaverMode')); +const hiddenPinnedNotes = computed(defaultStore.makeGetterSetter('hiddenPinnedNotes')); +const hiddenActivity = computed(defaultStore.makeGetterSetter('hiddenActivity')); +const hiddenFiles = computed(defaultStore.makeGetterSetter('hiddenFiles')); const forceShowAds = computed(defaultStore.makeGetterSetter('forceShowAds')); const loadRawImages = computed(defaultStore.makeGetterSetter('loadRawImages')); const highlightSensitiveMedia = computed(defaultStore.makeGetterSetter('highlightSensitiveMedia')); @@ -543,6 +572,9 @@ watch([ showReactionsCount, showRenotesCount, showRepliesCount, + hiddenPinnedNotes, + hiddenActivity, + hiddenFiles, ], async () => { await reloadAsk(); }); @@ -672,6 +704,18 @@ function enableAllDataSaver() { dataSaver.value = g; } +function enableAllHidden() { + defaultStore.set('hiddenPinnedNotes', true); + defaultStore.set('hiddenActivity', true); + defaultStore.set('hiddenFiles', true); +} + +function disableAllHidden() { + defaultStore.set('hiddenPinnedNotes', false); + defaultStore.set('hiddenActivity', false); + defaultStore.set('hiddenFiles', false); +} + function disableAllDataSaver() { const g = { ...defaultStore.state.dataSaver }; diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index 4e3e383e33f6..94f09cd10f0f 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -123,18 +123,26 @@ SPDX-License-Identifier: AGPL-3.0-only
-
- +
+
+ +
{{ i18n.ts.userPagePinTip }} - +
+ +
+
+ +
@@ -173,6 +181,7 @@ import { confetti } from '@/scripts/confetti.js'; import { misskeyApi } from '@/scripts/misskey-api.js'; import { isFollowingVisibleForMe, isFollowersVisibleForMe } from '@/scripts/isFfVisibleForMe.js'; import { useRouter } from '@/router/supplier.js'; +import { defaultStore } from '@/store'; function calcAge(birthdate: string): number { const date = new Date(birthdate); @@ -213,6 +222,9 @@ const memoDraft = ref(props.user.memo); const isEditingMemo = ref(false); const moderationNote = ref(props.user.moderationNote); const editModerationNote = ref(false); +const hiddenPinnedNotes = defaultStore.state.hiddenPinnedNotes; +const hiddenActivity = defaultStore.state.hiddenActivity; +const hiddenFiles = defaultStore.state.hiddenFiles; watch(moderationNote, async () => { await misskeyApi('admin/update-user-note', { userId: props.user.id, text: moderationNote.value }); diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index bd09734713a5..76489845ea91 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -262,6 +262,22 @@ export const defaultStore = markRaw(new Storage('base', { where: 'device', default: false, }, + hiddenActivityAndFiles: { + where: 'device', + default: false, + }, + hiddenPinnedNotes: { + where: 'device', + default: false, + }, + hiddenActivity: { + where: 'device', + default: false, + }, + hiddenFiles: { + where: 'device', + default: false, + }, disableShowingAnimatedImages: { where: 'device', default: window.matchMedia('(prefers-reduced-motion)').matches,