diff --git a/packages/client/src/api/app.js b/packages/client/src/api/app.js
new file mode 100644
index 0000000000..61c23ef6a6
--- /dev/null
+++ b/packages/client/src/api/app.js
@@ -0,0 +1,10 @@
+import API from "./api"
+
+/**
+ * Fetches screen definition for an app.
+ */
+export const fetchAppDefinition = async appId => {
+ return await API.get({
+ url: `/api/applications/${appId}/definition`,
+ })
+}
diff --git a/packages/client/src/api/attachments.js b/packages/client/src/api/attachments.js
index 68bc7df415..ff5c48c911 100644
--- a/packages/client/src/api/attachments.js
+++ b/packages/client/src/api/attachments.js
@@ -1,10 +1,10 @@
-import api from "./api"
+import API from "./api"
/**
* Uploads an attachment to the server.
*/
export const uploadAttachment = async data => {
- return await api.post({
+ return await API.post({
url: "/api/attachments/upload",
body: data,
json: false,
diff --git a/packages/client/src/api/auth.js b/packages/client/src/api/auth.js
index 04fc1169b9..9273a00cc7 100644
--- a/packages/client/src/api/auth.js
+++ b/packages/client/src/api/auth.js
@@ -1,16 +1,16 @@
-import api from "./api"
+import API from "./api"
/**
* Performs a log in request.
*/
export const logIn = async ({ username, password }) => {
if (!username) {
- return api.error("Please enter your username")
+ return API.error("Please enter your username")
}
if (!password) {
- return api.error("Please enter your password")
+ return API.error("Please enter your password")
}
- return await api.post({
+ return await API.post({
url: "/api/authenticate",
body: { username, password },
})
diff --git a/packages/client/src/api/index.js b/packages/client/src/api/index.js
index f1ea13bc38..878964107b 100644
--- a/packages/client/src/api/index.js
+++ b/packages/client/src/api/index.js
@@ -6,3 +6,4 @@ export * from "./attachments"
export * from "./views"
export * from "./relationships"
export * from "./routes"
+export * from "./app"
diff --git a/packages/client/src/api/relationships.js b/packages/client/src/api/relationships.js
index af2331291c..fe92bfd038 100644
--- a/packages/client/src/api/relationships.js
+++ b/packages/client/src/api/relationships.js
@@ -1,4 +1,4 @@
-import api from "./api"
+import API from "./api"
import { enrichRows } from "./rows"
/**
@@ -8,7 +8,7 @@ export const fetchRelationshipData = async ({ tableId, rowId, fieldName }) => {
if (!tableId || !rowId || !fieldName) {
return []
}
- const response = await api.get({ url: `/api/${tableId}/${rowId}/enrich` })
+ const response = await API.get({ url: `/api/${tableId}/${rowId}/enrich` })
const rows = response[fieldName] || []
return await enrichRows(rows, tableId)
}
diff --git a/packages/client/src/api/routes.js b/packages/client/src/api/routes.js
index 35b0dbb512..d762461075 100644
--- a/packages/client/src/api/routes.js
+++ b/packages/client/src/api/routes.js
@@ -1,10 +1,10 @@
-import api from "./api"
+import API from "./api"
/**
* Fetches available routes for the client app.
*/
export const fetchRoutes = async () => {
- return await api.get({
+ return await API.get({
url: `/api/routing/client`,
})
}
diff --git a/packages/client/src/api/rows.js b/packages/client/src/api/rows.js
index a8b16a1c06..2df57be60d 100644
--- a/packages/client/src/api/rows.js
+++ b/packages/client/src/api/rows.js
@@ -1,11 +1,11 @@
-import api from "./api"
+import API from "./api"
import { fetchTableDefinition } from "./tables"
/**
* Fetches data about a certain row in a table.
*/
export const fetchRow = async ({ tableId, rowId }) => {
- const row = await api.get({
+ const row = await API.get({
url: `/api/${tableId}/rows/${rowId}`,
})
return (await enrichRows([row], tableId))[0]
@@ -15,7 +15,7 @@ export const fetchRow = async ({ tableId, rowId }) => {
* Creates a row in a table.
*/
export const saveRow = async row => {
- return await api.post({
+ return await API.post({
url: `/api/${row.tableId}/rows`,
body: row,
})
@@ -25,7 +25,7 @@ export const saveRow = async row => {
* Updates a row in a table.
*/
export const updateRow = async row => {
- return await api.patch({
+ return await API.patch({
url: `/api/${row.tableId}/rows/${row._id}`,
body: row,
})
@@ -35,7 +35,7 @@ export const updateRow = async row => {
* Deletes a row from a table.
*/
export const deleteRow = async ({ tableId, rowId, revId }) => {
- return await api.del({
+ return await API.del({
url: `/api/${tableId}/rows/${rowId}/${revId}`,
})
}
@@ -44,7 +44,7 @@ export const deleteRow = async ({ tableId, rowId, revId }) => {
* Deletes many rows from a table.
*/
export const deleteRows = async ({ tableId, rows }) => {
- return await api.post({
+ return await API.post({
url: `/api/${tableId}/rows`,
body: {
rows,
diff --git a/packages/client/src/api/screens.js b/packages/client/src/api/screens.js
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/packages/client/src/api/tables.js b/packages/client/src/api/tables.js
index 7ad5633b07..83c92efa8e 100644
--- a/packages/client/src/api/tables.js
+++ b/packages/client/src/api/tables.js
@@ -1,4 +1,4 @@
-import api from "./api"
+import API from "./api"
import { enrichRows } from "./rows"
/**
@@ -6,13 +6,13 @@ import { enrichRows } from "./rows"
* Since definitions cannot change at runtime, the result is cached.
*/
export const fetchTableDefinition = async tableId => {
- return await api.get({ url: `/api/tables/${tableId}`, cache: true })
+ return await API.get({ url: `/api/tables/${tableId}`, cache: true })
}
/**
* Fetches all rows from a table.
*/
export const fetchTableData = async tableId => {
- const rows = await api.get({ url: `/api/${tableId}/rows` })
+ const rows = await API.get({ url: `/api/${tableId}/rows` })
return await enrichRows(rows, tableId)
}
diff --git a/packages/client/src/api/views.js b/packages/client/src/api/views.js
index 7c1386d721..88dfbe5187 100644
--- a/packages/client/src/api/views.js
+++ b/packages/client/src/api/views.js
@@ -1,4 +1,4 @@
-import api from "./api"
+import API from "./api"
import { enrichRows } from "./rows"
/**
@@ -25,6 +25,6 @@ export const fetchViewData = async ({
? `/api/views/${name}?${params}`
: `/api/views/${name}`
- const rows = await api.get({ url: QUERY_VIEW_URL })
+ const rows = await API.get({ url: QUERY_VIEW_URL })
return await enrichRows(rows, tableId)
}
diff --git a/packages/client/src/components/ClientApp.svelte b/packages/client/src/components/ClientApp.svelte
index e3712f3b80..77454edfa5 100644
--- a/packages/client/src/components/ClientApp.svelte
+++ b/packages/client/src/components/ClientApp.svelte
@@ -1,14 +1,22 @@
-