1
0
Fork 0
mirror of synced 2024-10-03 10:36:59 +13:00

Finishing UI - getting API ready.

This commit is contained in:
mike12345567 2023-09-19 13:45:24 +01:00
parent bd197bee9e
commit e8e4dd5c90
4 changed files with 50 additions and 6 deletions

View file

@ -1,5 +1,7 @@
<script>
import { ModalContent, Toggle, Input, Layout, Dropzone } from "@budibase/bbui"
import { ModalContent, Toggle, Input, Layout, Dropzone, notifications } from "@budibase/bbui"
import { API } from "api"
import { automationStore, store } from "../../builderStore"
export let app
@ -8,8 +10,22 @@
password
let file
function updateApp() {
console.log("confirm")
async function updateApp() {
try {
let data = new FormData()
data.append("appExport", file)
if (encrypted) {
data.append("encryptionPassword", password.trim())
}
const appId = app.devId
await API.updateAppFromExport(appId, data)
const pkg = await API.fetchAppPackage(appId)
await store.actions.initialise(pkg)
await automationStore.actions.fetch()
notifications.success("App updated successfully")
} catch (err) {
notifications.error(`Failed to update app - ${err.message || err}`)
}
}
</script>

View file

@ -1,3 +1,5 @@
import { sdk } from "@budibase/shared-core"
export const buildAppEndpoints = API => ({
/**
* Fetches screen definition for an app.
@ -81,6 +83,22 @@ export const buildAppEndpoints = API => ({
})
},
/**
* Update an application using an export - the body
* should be of type FormData, with a "file" and a "password" if encrypted.
* @param appId The ID of the app to update - this will always be
* converted to development ID.
* @param body a FormData body with a file and password.
*/
updateAppFromExport: async (appId, body) => {
const devId = sdk.applications.getDevAppID(appId)
return await API.post({
url: `/api/applications/${devId}/import`,
body,
json: false,
})
},
/**
* Imports an export of all apps.
* @param apps the FormData containing the apps to import

View file

@ -575,7 +575,16 @@ export async function sync(ctx: UserCtx) {
}
}
export async function updateWithExport(ctx: UserCtx) {}
export async function importToApp(ctx: UserCtx) {
const { appId } = ctx.params
const appExport = ctx.request.files?.appExport
const password = ctx.request.body.encryptionPassword
if (!appExport) {
ctx.throw(400, "Must supply app export to import")
}
console.log(appExport)
ctx.body = { message: "app updated" }
}
export async function updateAppPackage(appPackage: any, appId: any) {
return context.doInAppContext(appId, async () => {

View file

@ -4,6 +4,7 @@ import * as deploymentController from "../controllers/deploy"
import authorized from "../../middleware/authorized"
import { permissions } from "@budibase/backend-core"
import { applicationValidator } from "./utils/validators"
import { importToApp } from "../controllers/application"
const router: Router = new Router()
@ -59,9 +60,9 @@ router
controller.destroy
)
.post(
"/api/applications/:appId/update",
"/api/applications/:appId/import",
authorized(permissions.BUILDER),
controller.updateWithExport
controller.importToApp
)
export default router