summaryrefslogtreecommitdiff
path: root/packages/frontend/src
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2025-02-05 17:02:10 +0900
committerGitHub <noreply@github.com>2025-02-05 08:02:10 +0000
commitfd880660a3120a0ff3c44740df98cd46c9113237 (patch)
tree36de6dc49a0dd10e819c08ab81c3e867c33ecf25 /packages/frontend/src
parentBump version to 2025.2.0-beta.1 (diff)
downloadmisskey-fd880660a3120a0ff3c44740df98cd46c9113237.tar.gz
misskey-fd880660a3120a0ff3c44740df98cd46c9113237.tar.bz2
misskey-fd880660a3120a0ff3c44740df98cd46c9113237.zip
fix(frontend): デッキのプロファイルが新規作成できない問題を修正 (#15406)
* fix(frontend): デッキのプロファイルが保存できない問題を修正 * Update Changelog * Update CHANGELOG.md
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/ui/deck.vue26
-rw-r--r--packages/frontend/src/ui/deck/deck-store.ts10
2 files changed, 27 insertions, 9 deletions
diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue
index a1a76a7e7d..71a18fbc66 100644
--- a/packages/frontend/src/ui/deck.vue
+++ b/packages/frontend/src/ui/deck.vue
@@ -95,7 +95,7 @@ SPDX-License-Identifier: AGPL-3.0-only
import { computed, defineAsyncComponent, ref, watch, shallowRef } from 'vue';
import { v4 as uuid } from 'uuid';
import XCommon from './_common_/common.vue';
-import { deckStore, columnTypes, addColumn as addColumnToStore, loadDeck, getProfiles, deleteProfile as deleteProfile_ } from './deck/deck-store.js';
+import { deckStore, columnTypes, addColumn as addColumnToStore, forceSaveDeck, loadDeck, getProfiles, deleteProfile as deleteProfile_ } from './deck/deck-store.js';
import type { ColumnType } from './deck/deck-store.js';
import type { MenuItem } from '@/types/menu.js';
import XSidebar from '@/ui/_common_/navbar.vue';
@@ -233,10 +233,15 @@ function changeProfile(ev: MouseEvent) {
title: i18n.ts._deck.profile,
minLength: 1,
});
+
if (canceled || name == null) return;
- deckStore.set('profile', name);
- unisonReload();
+ os.promiseDialog((async () => {
+ await deckStore.set('profile', name);
+ await forceSaveDeck();
+ })(), () => {
+ unisonReload();
+ });
},
});
}).then(() => {
@@ -251,9 +256,18 @@ async function deleteProfile() {
});
if (canceled) return;
- deleteProfile_(deckStore.state.profile);
- deckStore.set('profile', 'default');
- unisonReload();
+ os.promiseDialog((async () => {
+ if (deckStore.state.profile === 'default') {
+ await deckStore.set('columns', []);
+ await deckStore.set('layout', []);
+ await forceSaveDeck();
+ } else {
+ await deleteProfile_(deckStore.state.profile);
+ }
+ await deckStore.set('profile', 'default');
+ })(), () => {
+ unisonReload();
+ });
}
</script>
diff --git a/packages/frontend/src/ui/deck/deck-store.ts b/packages/frontend/src/ui/deck/deck-store.ts
index 3186982349..231bf19aa8 100644
--- a/packages/frontend/src/ui/deck/deck-store.ts
+++ b/packages/frontend/src/ui/deck/deck-store.ts
@@ -112,9 +112,8 @@ export const loadDeck = async () => {
deckStore.set('layout', deck.layout);
};
-// TODO: deckがloadされていない状態でsaveすると意図せず上書きが発生するので対策する
-export const saveDeck = throttle(1000, () => {
- misskeyApi('i/registry/set', {
+export async function forceSaveDeck() {
+ await misskeyApi('i/registry/set', {
scope: ['client', 'deck', 'profiles'],
key: deckStore.state.profile,
value: {
@@ -122,6 +121,11 @@ export const saveDeck = throttle(1000, () => {
layout: deckStore.reactiveState.layout.value,
},
});
+}
+
+// TODO: deckがloadされていない状態でsaveすると意図せず上書きが発生するので対策する
+export const saveDeck = throttle(1000, () => {
+ forceSaveDeck();
});
export async function getProfiles(): Promise<string[]> {