Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: プロフィールからアクティビティとファイルを隠せるようにする #121

Merged
merged 2 commits into from
Mar 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions locales/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10124,13 +10124,33 @@ export interface Locale extends ILocale {
*/
"remoteLocalTimeline": string;
/**
* プロフィール上からアクティビティやファイルの非表示
* プロフィールを非表示にする機能
*/
"hiddenActivityAndFiles": string;
"hiddenProfile": string;
/**
* プロフィール上からアクティビティやファイルを非表示にします。ノートをいち早く見たい方にお勧めです。
* プロフィール上からピン留めしたノートを非表示にします
*/
"hiddenActivityAndFilesDescription": string;
"hiddenPinnedNotes": string;
/**
* ピン留めしたノートを非表示にすることで、プロフィールページをスッキリさせることができます。
*/
"hiddenPinnedNotesDescription": string;
/**
* プロフィール上からアクティビティを非表示にします
*/
"hiddenActivity": string;
/**
* プロフィール上からアクティビティを非表示にすることで、プロフィールページをスッキリさせることができます。
*/
"hiddenActivityDescription": string;
/**
* プロフィール上からファイルを非表示にします。
*/
"hiddenFiles": string;
/**
* ファイルを非表示にすることで、プロフィールページをスッキリさせることができます。
*/
"hiddenFilesDescription": string;
};
}
declare const locales: {
Expand Down
9 changes: 7 additions & 2 deletions locales/ja-JP.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2702,5 +2702,10 @@ _urlPreviewSetting:
_uniqueFeatures:
uniqueFeature: "独自機能"
remoteLocalTimeline: "リモート上のサーバーのローカルタイムラインを覗く機能"
hiddenActivityAndFiles: "プロフィール上からアクティビティやファイルの非表示"
hiddenActivityAndFilesDescription: "プロフィール上からアクティビティやファイルを非表示にします。ノートをいち早く見たい方にお勧めです。"
hiddenProfile: "プロフィールを非表示にする機能"
hiddenPinnedNotes: "プロフィール上からピン留めしたノートを非表示にします"
hiddenPinnedNotesDescription: "ピン留めしたノートを非表示にすることで、プロフィールページをスッキリさせることができます。"
hiddenActivity: "プロフィール上からアクティビティを非表示にします"
hiddenActivityDescription: "プロフィール上からアクティビティを非表示にすることで、プロフィールページをスッキリさせることができます。"
hiddenFiles: "プロフィール上からファイルを非表示にします。"
hiddenFilesDescription: "ファイルを非表示にすることで、プロフィールページをスッキリさせることができます。"
46 changes: 42 additions & 4 deletions packages/frontend/src/pages/settings/general.vue
Original file line number Diff line number Diff line change
Expand Up @@ -264,10 +264,27 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts._uniqueFeatures.uniqueFeature }}</template>

<div class="_gaps_m">
<MkSwitch v-model="hiddenActivityAndFiles">
<template #caption>{{ i18n.ts._uniqueFeatures.hiddenActivityAndFilesDescription }}</template>
{{ i18n.ts._uniqueFeatures.hiddenActivityAndFiles }}
</MkSwitch>
<MkFolder>
<template #label>{{ i18n.ts._uniqueFeatures.hiddenProfile }}</template>
<div class="_gaps_m">
<div class="_buttons">
<MkButton inline @click="enableAllHidden">{{ i18n.ts.enableAll }}</MkButton>
<MkButton inline @click="disableAllHidden">{{ i18n.ts.disableAll }}</MkButton>
</div>
<MkSwitch v-model="hiddenPinnedNotes">
<template #caption>{{ i18n.ts._uniqueFeatures.hiddenPinnedNotesDescription }}</template>
{{ i18n.ts._uniqueFeatures.hiddenPinnedNotes }}
</MkSwitch>
<MkSwitch v-model="hiddenActivity">
<template #caption>{{ i18n.ts._uniqueFeatures.hiddenActivityDescription }}</template>
{{ i18n.ts._uniqueFeatures.hiddenActivity }}
</MkSwitch>
<MkSwitch v-model="hiddenFiles">
<template #caption>{{ i18n.ts._uniqueFeatures.hiddenFilesDescription }}</template>
{{ i18n.ts._uniqueFeatures.hiddenFiles }}
</MkSwitch>
</div>
</MkFolder>

<MkFolder>
<template #label>{{ i18n.ts._uniqueFeatuers.remoteLocalTimeline }}</template>
Expand Down Expand Up @@ -456,7 +473,13 @@ const disableDrawer = computed(defaultStore.makeGetterSetter('disableDrawer'));
const disableShowingAnimatedImages = computed(defaultStore.makeGetterSetter('disableShowingAnimatedImages'));
const autoDataSaver = computed(defaultStore.makeGetterSetter('autoDataSaver'));
const enableDataSaverMode = computed(defaultStore.makeGetterSetter('enableDataSaverMode'));
<<<<<<< HEAD
const hiddenPinnedNotes = computed(defaultStore.makeGetterSetter('hiddenPinnedNotes'));
const hiddenActivity = computed(defaultStore.makeGetterSetter('hiddenActivity'));
const hiddenFiles = computed(defaultStore.makeGetterSetter('hiddenFiles'));
=======
const hiddenActivityAndFiles = computed(defaultStore.makeGetterSetter('hiddenActivityAndFiles'));
>>>>>>> b088ae5bbb273835c6fa2af7c089ce3ce790d046
const forceShowAds = computed(defaultStore.makeGetterSetter('forceShowAds'));
const loadRawImages = computed(defaultStore.makeGetterSetter('loadRawImages'));
const highlightSensitiveMedia = computed(defaultStore.makeGetterSetter('highlightSensitiveMedia'));
Expand Down Expand Up @@ -553,6 +576,9 @@ watch([
showReactionsCount,
showRenotesCount,
showRepliesCount,
hiddenPinnedNotes,
hiddenActivity,
hiddenFiles,
], async () => {
await reloadAsk();
});
Expand Down Expand Up @@ -682,6 +708,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 };

Expand Down
18 changes: 13 additions & 5 deletions packages/frontend/src/pages/user/home.vue
Original file line number Diff line number Diff line change
Expand Up @@ -123,20 +123,26 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>

<div class="contents _gaps">
<div v-if="user.pinnedNotes.length > 0" class="_gaps">
<MkNote v-for="note in user.pinnedNotes" :key="note.id" class="note _panel" :note="note" :pinned="true"/>
<div v-if="!hiddenPinnedNotes">
<div v-if="user.pinnedNotes.length > 0" class="_gaps">
<MkNote v-for="note in user.pinnedNotes" :key="note.id" class="note _panel" :note="note" :pinned="true"/>
</div>
</div>
<MkInfo v-else-if="$i && $i.id === user.id">{{ i18n.ts.userPagePinTip }}</MkInfo>
<template v-if="!hiddenActivityAndFiles">
<div v-if="!hiddenActivity">
<template v-if="narrow">
<MkLazy>
<XFiles :key="user.id" :user="user"/>
</MkLazy>
</template>
</div>
<div v-if="!hiddenFiles">
<template v-if="narrow">
<MkLazy>
<XActivity :key="user.id" :user="user"/>
</MkLazy>
</template>
</template>
</div>
<div v-if="!disableNotes">
<MkLazy>
<XTimeline :user="user"/>
Expand Down Expand Up @@ -216,7 +222,9 @@ const memoDraft = ref(props.user.memo);
const isEditingMemo = ref(false);
const moderationNote = ref(props.user.moderationNote);
const editModerationNote = ref(false);
const hiddenActivityAndFiles = defaultStore.state.hiddenActivityAndFiles;
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 });
Expand Down
10 changes: 9 additions & 1 deletion packages/frontend/src/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,15 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'device',
default: false,
},
hiddenActivityAndFiles: {
hiddenPinnedNotes: {
where: 'device',
default: false,
},
hiddenActivity: {
where: 'device',
default: false,
},
hiddenFiles: {
where: 'device',
default: false,
},
Expand Down
Loading