+
Start from scratch
@@ -74,7 +77,7 @@
align-items: center;
cursor: pointer;
border-radius: 4px;
- background: #1a1a1a;
+ background: var(--background-alt);
padding: 8px 16px;
}
diff --git a/packages/builder/src/pages/builder/portal/_layout.svelte b/packages/builder/src/pages/builder/portal/_layout.svelte
index 02f49bec5a..8fca18d29d 100644
--- a/packages/builder/src/pages/builder/portal/_layout.svelte
+++ b/packages/builder/src/pages/builder/portal/_layout.svelte
@@ -46,11 +46,16 @@
title: "Theming",
href: "/builder/portal/settings/theming",
},
- {
- title: "Updates",
- href: "/builder/portal/settings/update",
- },
])
+
+ if (!$adminStore.cloud) {
+ menu = menu.concat([
+ {
+ title: "Updates",
+ href: "/builder/portal/settings/update",
+ },
+ ])
+ }
} else {
menu = menu.concat([
{
diff --git a/packages/builder/src/pages/builder/portal/settings/update.svelte b/packages/builder/src/pages/builder/portal/settings/update.svelte
index 3931203f44..5deb724a7c 100644
--- a/packages/builder/src/pages/builder/portal/settings/update.svelte
+++ b/packages/builder/src/pages/builder/portal/settings/update.svelte
@@ -10,14 +10,14 @@
Label,
} from "@budibase/bbui"
import api from "builderStore/api"
- import { auth } from "stores/portal"
+ import { auth, admin } from "stores/portal"
import { redirect } from "@roxi/routify"
let version
// Only admins allowed here
$: {
- if (!$auth.isAdmin) {
+ if (!$auth.isAdmin || $admin.cloud) {
$redirect("../../portal")
}
}
diff --git a/packages/builder/src/stores/portal/auth.js b/packages/builder/src/stores/portal/auth.js
index f522095473..7beb25a1b4 100644
--- a/packages/builder/src/stores/portal/auth.js
+++ b/packages/builder/src/stores/portal/auth.js
@@ -56,7 +56,7 @@ export function createAuthStore() {
analytics.identify(user._id, user)
analytics.showChat({
email: user.email,
- created_at: user.createdAt || Date.now(),
+ created_at: (user.createdAt || Date.now()) / 1000,
name: user.name,
user_id: user._id,
tenant: user.tenantId,
diff --git a/packages/client/src/components/MadeInBudibase.svelte b/packages/client/src/components/MadeInBudibase.svelte
new file mode 100644
index 0000000000..2e5d6336f1
--- /dev/null
+++ b/packages/client/src/components/MadeInBudibase.svelte
@@ -0,0 +1,42 @@
+
+
+
+
Made In Budibase
+
+
+
+
diff --git a/packages/server/src/api/controllers/analytics.js b/packages/server/src/api/controllers/analytics.js
index e6e5d6a748..0c0761840e 100644
--- a/packages/server/src/api/controllers/analytics.js
+++ b/packages/server/src/api/controllers/analytics.js
@@ -21,9 +21,12 @@ exports.endUserPing = async ctx => {
return
}
- posthogClient.capture("budibase:end_user_ping", {
- userId: ctx.user && ctx.user._id,
- appId: ctx.appId,
+ posthogClient.capture({
+ event: "budibase:end_user_ping",
+ distinctId: ctx.user && ctx.user._id,
+ properties: {
+ appId: ctx.appId,
+ },
})
ctx.body = {
diff --git a/packages/server/src/api/controllers/view/utils.js b/packages/server/src/api/controllers/view/utils.js
index 1f3b980882..27fccaf47f 100644
--- a/packages/server/src/api/controllers/view/utils.js
+++ b/packages/server/src/api/controllers/view/utils.js
@@ -2,6 +2,8 @@ const {
ViewNames,
generateMemoryViewID,
getMemoryViewParams,
+ DocumentTypes,
+ SEPARATOR,
} = require("../../../db/utils")
const env = require("../../../environment")
@@ -10,6 +12,11 @@ exports.getView = async (db, viewName) => {
const designDoc = await db.get("_design/database")
return designDoc.views[viewName]
} else {
+ // This is a table view, don't read the view from the DB
+ if (viewName.startsWith(DocumentTypes.TABLE + SEPARATOR)) {
+ return null
+ }
+
const viewDoc = await db.get(generateMemoryViewID(viewName))
return viewDoc.view
}