Merge pull request #11070 from Budibase/fix/general-embed-fixes

General embed fixes
This commit is contained in:
deanhannigan 2023-06-30 11:32:20 +01:00 committed by GitHub
commit 8aabbad269
7 changed files with 45 additions and 35 deletions

View File

@ -155,6 +155,7 @@ export const getFrontendStore = () => {
...INITIAL_FRONTEND_STATE.features, ...INITIAL_FRONTEND_STATE.features,
...application.features, ...application.features,
}, },
icon: application.icon || {},
initialised: true, initialised: true,
})) }))
screenHistoryStore.reset() screenHistoryStore.reset()

View File

@ -275,7 +275,7 @@
} }
}} }}
> >
{selectedApp ? `${selectedApp?.url}` : ""} {$store.url}
{#if isPublished} {#if isPublished}
<Icon size="S" name="LinkOut" /> <Icon size="S" name="LinkOut" />
{:else} {:else}
@ -344,7 +344,12 @@
<Modal bind:this={updateAppModal} padding={false} width="600px"> <Modal bind:this={updateAppModal} padding={false} width="600px">
<UpdateAppModal <UpdateAppModal
app={selectedApp} app={{
name: $store.name,
url: $store.url,
icon: $store.icon,
appId: $store.appId,
}}
onUpdateComplete={async () => { onUpdateComplete={async () => {
await initialiseApp() await initialiseApp()
}} }}

View File

@ -16,6 +16,9 @@
export let app export let app
export let onUpdateComplete export let onUpdateComplete
$: appIdParts = app.appId ? app.appId?.split("_") : []
$: appId = appIdParts.slice(-1)[0]
const values = writable({ const values = writable({
name: app.name, name: app.name,
url: app.url, url: app.url,
@ -35,8 +38,20 @@
const setupValidation = async () => { const setupValidation = async () => {
const applications = svelteGet(apps) const applications = svelteGet(apps)
appValidation.name(validation, { apps: applications, currentApp: app }) appValidation.name(validation, {
appValidation.url(validation, { apps: applications, currentApp: app }) apps: applications,
currentApp: {
...app,
appId,
},
})
appValidation.url(validation, {
apps: applications,
currentApp: {
...app,
appId,
},
})
// init validation // init validation
const { url } = $values const { url } = $values
validation.check({ validation.check({
@ -47,7 +62,7 @@
async function updateApp() { async function updateApp() {
try { try {
await apps.update(app.instance._id, { await apps.update(app.appId, {
name: $values.name?.trim(), name: $values.name?.trim(),
url: $values.url?.trim(), url: $values.url?.trim(),
icon: { icon: {

View File

@ -52,7 +52,13 @@ export const url = (validation, { apps, currentApp } = { apps: [] }) => {
} }
return !apps return !apps
.map(app => app.url) .map(app => app.url)
.some(appUrl => appUrl?.toLowerCase() === value.toLowerCase()) .some(appUrl => {
const url =
appUrl?.[0] === "/"
? appUrl.substring(1, appUrl.length)
: appUrl
return url?.toLowerCase() === value.toLowerCase()
})
} }
) )
.test("valid-url", "Not a valid URL", value => { .test("valid-url", "Not a valid URL", value => {

View File

@ -39,7 +39,7 @@
notifications.success("Copied") notifications.success("Copied")
}} }}
> >
Copy Code Copy code
</Button> </Button>
</div> </div>
{:else} {:else}

View File

@ -19,11 +19,10 @@
$: filteredApps = $apps.filter(app => app.devId == $store.appId) $: filteredApps = $apps.filter(app => app.devId == $store.appId)
$: app = filteredApps.length ? filteredApps[0] : {} $: app = filteredApps.length ? filteredApps[0] : {}
$: appUrl = `${window.origin}/app${app?.url}`
$: appDeployed = app?.status === AppStatus.DEPLOYED $: appDeployed = app?.status === AppStatus.DEPLOYED
const initialiseApp = async () => { const initialiseApp = async () => {
const applicationPkg = await API.fetchAppPackage(app.devId) const applicationPkg = await API.fetchAppPackage($store.appId)
await store.actions.initialise(applicationPkg) await store.actions.initialise(applicationPkg)
} }
</script> </script>
@ -37,7 +36,7 @@
<Layout noPadding gap="XXS"> <Layout noPadding gap="XXS">
<Label size="L">Name</Label> <Label size="L">Name</Label>
<Body>{app?.name}</Body> <Body>{$store?.name}</Body>
</Layout> </Layout>
<Layout noPadding gap="XS"> <Layout noPadding gap="XS">
@ -45,15 +44,15 @@
<div class="icon"> <div class="icon">
<Icon <Icon
size="L" size="L"
name={app?.icon?.name || "Apps"} name={$store?.icon?.name || "Apps"}
color={app?.icon?.color} color={$store?.icon?.color}
/> />
</div> </div>
</Layout> </Layout>
<Layout noPadding gap="XXS"> <Layout noPadding gap="XXS">
<Label size="L">URL</Label> <Label size="L">URL</Label>
<Body>{appUrl}</Body> <Body>{$store.url}</Body>
</Layout> </Layout>
<div> <div>
@ -75,7 +74,12 @@
<Modal bind:this={updatingModal} padding={false} width="600px"> <Modal bind:this={updatingModal} padding={false} width="600px">
<UpdateAppModal <UpdateAppModal
{app} app={{
name: $store.name,
url: $store.url,
icon: $store.icon,
appId: $store.appId,
}}
onUpdateComplete={async () => { onUpdateComplete={async () => {
await initialiseApp() await initialiseApp()
}} }}

View File

@ -1,21 +0,0 @@
import { writable, derived } from "svelte/store"
import { apps } from "./apps"
const createOverviewStore = () => {
const store = writable({
selectedAppId: null,
})
const derivedStore = derived([store, apps], ([$store, $apps]) => {
return {
...$store,
selectedApp: $apps?.find(app => app.devId === $store.selectedAppId),
}
})
return {
update: store.update,
subscribe: derivedStore.subscribe,
}
}
export const overview = createOverviewStore()