From 770cbf4fd39be7a0b6e85feb352631acd39c018d Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 22 Jun 2022 15:42:08 +0100 Subject: [PATCH] Update autoscreen link creation and deletion to use new app level navigation settings --- .../src/builderStore/store/frontend.js | 40 +++++++++++-------- .../screens/_components/ScreenWizard.svelte | 3 +- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 35d84f7c5c..468e8ecdfd 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -1,6 +1,11 @@ import { get, writable } from "svelte/store" import { cloneDeep } from "lodash/fp" -import { currentAsset, mainLayout, selectedComponent } from "builderStore" +import { + currentAsset, + mainLayout, + selectedComponent, + selectedScreen, +} from "builderStore" import { datasources, integrations, @@ -617,35 +622,38 @@ export const getFrontendStore = () => { }, links: { save: async (url, title) => { - const layout = get(mainLayout) - if (!layout) { + const navigation = get(store).navigation + let links = [...navigation?.links] + + // Skip if we have an identical link + if (links.find(link => link.url === url && link.text === title)) { return } - // Add link setting to main layout - if (!layout.props.links) { - layout.props.links = [] - } - layout.props.links.push({ + links.push({ text: title, url, }) - - await store.actions.layouts.save(layout) + await store.actions.navigation.save({ + ...navigation, + links: [...links], + }) }, delete: async urls => { - const layout = get(mainLayout) - if (!layout?.props.links?.length) { + const navigation = get(store).navigation + let links = navigation?.links + if (!links?.length) { return } // Filter out the URLs to delete urls = Array.isArray(urls) ? urls : [urls] - layout.props.links = layout.props.links.filter( - link => !urls.includes(link.url) - ) + links = links.filter(link => !urls.includes(link.url)) - await store.actions.layouts.save(layout) + await store.actions.navigation.save({ + ...navigation, + links, + }) }, }, settings: { diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/screens/_components/ScreenWizard.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/screens/_components/ScreenWizard.svelte index 1955f3cae9..6485e7a13f 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/screens/_components/ScreenWizard.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/screens/_components/ScreenWizard.svelte @@ -10,6 +10,7 @@ import getTemplates from "builderStore/store/screenTemplates" import { tables } from "stores/backend" import { Roles } from "constants/backend" + import { capitalise } from "helpers" let pendingScreen @@ -70,7 +71,7 @@ if (screen.props._instanceName.endsWith("List")) { await store.actions.links.save( screen.routing.route, - screen.routing.route.split("/")[1] + capitalise(screen.routing.route.split("/")[1]) ) } }