diff --git a/packages/frontend/src/components/global/MkTip.vue b/packages/frontend/src/components/global/MkTip.vue index afe204cfcb..231957a232 100644 --- a/packages/frontend/src/components/global/MkTip.vue +++ b/packages/frontend/src/components/global/MkTip.vue @@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.tip }}:
- {{ i18n.ts.gotIt }} + {{ i18n.ts.gotIt }}
@@ -19,20 +19,17 @@ import { i18n } from '@/i18n.js'; import { store } from '@/store.js'; import MkButton from '@/components/MkButton.vue'; import * as os from '@/os.js'; -import { hideAllTips } from '@/store.js'; +import { TIPS, hideAllTips, closeTip } from '@/tips.js'; const props = withDefaults(defineProps<{ - k: keyof (typeof store['s']['tips']); + k: typeof TIPS[number]; warn?: boolean; }>(), { warn: false, }); -function closeTip() { - store.set('tips', { - ...store.r.tips.value, - [props.k]: true, - }); +function _closeTip() { + closeTip(props.k); } function showMenu(ev: MouseEvent) { diff --git a/packages/frontend/src/pages/settings/other.vue b/packages/frontend/src/pages/settings/other.vue index f729903a88..ac432e9f32 100644 --- a/packages/frontend/src/pages/settings/other.vue +++ b/packages/frontend/src/pages/settings/other.vue @@ -161,8 +161,7 @@ import { prefer } from '@/preferences.js'; import MkRolePreview from '@/components/MkRolePreview.vue'; import { signout } from '@/signout.js'; import { migrateOldSettings } from '@/pref-migrate.js'; -import { store } from '@/store.js'; -import { hideAllTips as _hideAllTips } from '@/store.js'; +import { hideAllTips as _hideAllTips, resetAllTips as _resetAllTips } from '@/tips.js'; const $i = ensureSignin(); @@ -206,7 +205,7 @@ function migrate() { } function resetAllTips() { - store.set('tips', {}); + _resetAllTips(); os.success(); } diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 03ef37ced5..9afaf2c9b9 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -10,30 +10,11 @@ import darkTheme from '@@/themes/d-green-lime.json5'; import { hemisphere } from '@@/js/intl-const.js'; import type { DeviceKind } from '@/utility/device-kind.js'; import type { Plugin } from '@/plugin.js'; +import type { TIPS } from '@/tips.js'; import { miLocalStorage } from '@/local-storage.js'; import { Pizzax } from '@/lib/pizzax.js'; import { DEFAULT_DEVICE_KIND } from '@/utility/device-kind.js'; -export const TIPS = [ - 'drive', - 'uploader', - 'clips', - 'userLists', - 'tl.home', - 'tl.local', - 'tl.social', - 'tl.global', - 'abuses', -] as const; - -export function hideAllTips() { - const v = {}; - for (const k of TIPS) { - v[k] = true; - } - store.set('tips', v); -} - /** * 「状態」を管理するストア(not「設定」) */ diff --git a/packages/frontend/src/tips.ts b/packages/frontend/src/tips.ts new file mode 100644 index 0000000000..a6850d0406 --- /dev/null +++ b/packages/frontend/src/tips.ts @@ -0,0 +1,37 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { store } from '@/store.js'; + +export const TIPS = [ + 'drive', + 'uploader', + 'clips', + 'userLists', + 'tl.home', + 'tl.local', + 'tl.social', + 'tl.global', + 'abuses', +] as const; + +export function closeTip(tip: typeof TIPS[number]) { + store.set('tips', { + ...store.r.tips.value, + [tip]: true, + }); +} + +export function resetAllTips() { + store.set('tips', {}); +} + +export function hideAllTips() { + const v = {}; + for (const k of TIPS) { + v[k] = true; + } + store.set('tips', v); +}