- {#each $notifications as { type, icon, message, id, dismissable, action, wide } (id)}
+ {#each $notifications as { type, icon, message, id, dismissable, action, actionMessage, wide } (id)}
notifications.dismiss(id)}
/>
diff --git a/packages/bbui/src/Stores/banner.js b/packages/bbui/src/Stores/banner.js
index 1a0b2d9ecc..fc93e7be99 100644
--- a/packages/bbui/src/Stores/banner.js
+++ b/packages/bbui/src/Stores/banner.js
@@ -1,6 +1,7 @@
import { writable } from "svelte/store"
export const BANNER_TYPES = {
+ NEUTRAL: "neutral",
INFO: "info",
NEGATIVE: "negative",
WARNING: "warning",
diff --git a/packages/bbui/src/Stores/notifications.js b/packages/bbui/src/Stores/notifications.js
index 449d282f24..28331fffd8 100644
--- a/packages/bbui/src/Stores/notifications.js
+++ b/packages/bbui/src/Stores/notifications.js
@@ -27,7 +27,9 @@ export const createNotificationStore = () => {
icon = "",
autoDismiss = true,
action = null,
+ actionMessage = null,
wide = false,
+ dismissTimeout = NOTIFICATION_TIMEOUT,
}
) => {
if (block) {
@@ -44,14 +46,16 @@ export const createNotificationStore = () => {
icon,
dismissable: !autoDismiss,
action,
+ actionMessage,
wide,
+ dismissTimeout,
},
]
})
if (autoDismiss) {
const timeoutId = setTimeout(() => {
dismissNotification(_id)
- }, NOTIFICATION_TIMEOUT)
+ }, dismissTimeout)
timeoutIds.add(timeoutId)
}
}
diff --git a/packages/builder/src/pages/builder/_layout.svelte b/packages/builder/src/pages/builder/_layout.svelte
index b216958045..960822a39f 100644
--- a/packages/builder/src/pages/builder/_layout.svelte
+++ b/packages/builder/src/pages/builder/_layout.svelte
@@ -3,6 +3,7 @@
import { admin, auth, licensing } from "stores/portal"
import { onMount } from "svelte"
import { CookieUtils, Constants } from "@budibase/frontend-core"
+ import { banner, BANNER_TYPES } from "@budibase/bbui"
import { API } from "api"
import Branding from "./Branding.svelte"
@@ -16,6 +17,32 @@
$: user = $auth.user
$: useAccountPortal = cloud && !$admin.disableAccountPortal
+ let showVerificationPrompt = false
+
+ const checkVerification = user => {
+ if (!showVerificationPrompt && user?.account?.verified === false) {
+ showVerificationPrompt = true
+ banner.queue([
+ {
+ message: `Please verify your account. We've sent the verification link to ${user.email}`,
+ type: BANNER_TYPES.NEUTRAL,
+ showCloseButton: false,
+ extraButtonAction: () => {
+ fetch(`${$admin.accountPortalUrl}/api/auth/reset`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({ email: user.email }),
+ })
+ },
+ extraButtonText: "Resend email",
+ },
+ ])
+ }
+ }
+
+ $: checkVerification(user)
const validateTenantId = async () => {
const host = window.location.host