wip: changes initialise function to getPackage and runs once you select application instead of at run-time.

This commit is contained in:
kevmodrome 2020-04-02 16:27:19 +02:00
parent f80f4a6c43
commit 75051a194d
4 changed files with 29 additions and 21 deletions

View File

@ -7,8 +7,6 @@
showAppNotification,
} from "components/common/AppNotification.svelte"
let init = initialise()
function showErrorBanner() {
showAppNotification({
status: "danger",

View File

@ -10,7 +10,6 @@ export const initialise = async () => {
if (process.env.NODE_ENV === "production") {
LogRocket.init("knlald/budibase")
}
await store.initialise()
} catch (err) {
console.log(err)
}

View File

@ -50,7 +50,7 @@ export const getStore = () => {
const store = writable(initial)
store.initialise = initialise(store, initial)
store.setPackage = setPackage(store, initial)
store.newChildRecord = backendStoreActions.newRecord(store, false)
store.newRootRecord = backendStoreActions.newRecord(store, true)
@ -101,22 +101,12 @@ export const getStore = () => {
export default getStore
const initialise = (store, initial) => async () => {
if (!appname) {
initial.apps = await api.get(`/_builder/api/apps`).then(r => r.json())
initial.hasAppPackage = false
store.set(initial)
return initial
}
const pkg = await api
.get(`/_builder/api/${appname}/appPackage`)
.then(r => r.json())
const setPackage = (store, initial) => async (pkg) => {
const [main_screens, unauth_screens] = await Promise.all([
api.get(`/_builder/api/${appname}/pages/main/screens`).then(r => r.json()),
api.get(`/_builder/api/${pkg.application.name}/pages/main/screens`).then(r => r.json()),
api
.get(`/_builder/api/${appname}/pages/unauthenticated/screens`)
.get(`/_builder/api/${pkg.application.name}/pages/unauthenticated/screens`)
.then(r => r.json()),
])
@ -131,12 +121,12 @@ const initialise = (store, initial) => async () => {
},
}
initial.libraries = await loadLibs(appname, pkg)
initial.libraries = await loadLibs(pkg.application.name, pkg)
initial.loadLibraryUrls = pageName => {
const libs = libUrlsForPreview(pkg, pageName)
return libs
}
initial.appname = appname
initial.appname = pkg.application.name
initial.pages = pkg.pages
initial.hasAppPackage = true
initial.hierarchy = pkg.appDefinition.hierarchy

View File

@ -1,10 +1,27 @@
<script>
import { store } from "builderStore"
import { fade } from "svelte/transition"
import { isActive, goto, url, context } from "@sveltech/routify"
import { isActive, goto, url, context, params } from "@sveltech/routify"
import { SettingsIcon, PreviewIcon } from "components/common/Icons/"
import IconButton from "components/common/IconButton.svelte"
// Get Package and set store
let promise = getPackage()
async function getPackage() {
const res = await fetch(`/_builder/api/${$params.application}/appPackage`)
const pkg = await res.json()
if (res.ok) {
await store.setPackage(pkg)
return pkg
} else {
throw new Error(pkg)
}
}
$: ({ component } = $context)
$: list = component.parent.children.filter(child => child.isIndexable)
</script>
@ -48,7 +65,11 @@
</div>
</div>
<slot />
{#await promise}
should probably load this in a nicer way
{:then}
<slot />
{/await}
</div>