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);
+}