fix(desktop): онбординг ЦПП — авто-обновление столов по завершении
После утверждения Советом обоих документов ЦПП «Стол заказов» расширение подключается и grants в getDesktop меняются, но фронт перечитывал desktop workspace только на init и при install/enable расширения — для онбординга триггера не было. Итог: рабочие столы и страницы Стола заказов появлялись лишь после ручной перезагрузки страницы. Добавлен watcher на isCompleted в useMarketplaceOnboarding: при переходе false→true (оба шага completed) вызывается desktopStore.loadDesktop(), который перечитывает getDesktop с новыми grants. Меню/столы появляются сразу. loadDesktop идемпотентен (мерджит маршруты); watch не срабатывает на initial mount, только на реальном завершении онбординга в течение сессии. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+14
-1
@@ -1,7 +1,8 @@
|
||||
import { computed, ref } from 'vue';
|
||||
import { computed, ref, watch } from 'vue';
|
||||
import { FailAlert, SuccessAlert } from 'src/shared/api';
|
||||
import { useSystemStore } from 'src/entities/System/model';
|
||||
import { useSessionStore } from 'src/entities/Session';
|
||||
import { useDesktopStore } from 'src/entities/Desktop/model';
|
||||
import type {
|
||||
ICouncilOnboardingConfig,
|
||||
ICouncilOnboardingStep,
|
||||
@@ -63,6 +64,7 @@ const STEP_META: StepMeta[] = [
|
||||
export const useMarketplaceOnboarding = () => {
|
||||
const systemStore = useSystemStore();
|
||||
const sessionStore = useSessionStore();
|
||||
const desktopStore = useDesktopStore();
|
||||
|
||||
const onboardingState = ref<MarketplaceOnboardingState | null>(null);
|
||||
const loading = ref(false);
|
||||
@@ -117,6 +119,17 @@ export const useMarketplaceOnboarding = () => {
|
||||
stepsConfig.value.every((s) => s.status === 'completed'),
|
||||
);
|
||||
|
||||
// Как только онбординг завершился (оба документа утверждены Советом →
|
||||
// расширение подключилось), grants в getDesktop меняются. Перечитываем
|
||||
// desktop workspace, чтобы рабочие столы и страницы Стола заказов появились
|
||||
// сразу, без перезагрузки страницы. watch не срабатывает на initial mount —
|
||||
// только на реальном переходе false→true в течение сессии.
|
||||
watch(isCompleted, async (completed) => {
|
||||
if (completed) {
|
||||
await desktopStore.loadDesktop();
|
||||
}
|
||||
});
|
||||
|
||||
const loadState = async () => {
|
||||
try {
|
||||
loading.value = true;
|
||||
|
||||
Reference in New Issue
Block a user