pr comments

This commit is contained in:
Peter Clement 2025-04-15 13:45:22 +01:00
parent 0709f68f47
commit d2be62dfe1
2 changed files with 28 additions and 6 deletions

View File

@ -9,7 +9,7 @@
Body, Body,
Link, Link,
} from "@budibase/bbui" } from "@budibase/bbui"
import { auth, admin } from "@/stores/portal" import { auth, admin, licensing } from "@/stores/portal"
import { createEventDispatcher } from "svelte" import { createEventDispatcher } from "svelte"
import { API } from "@/api" import { API } from "@/api"
@ -36,14 +36,15 @@
let containerWidth = "auto" let containerWidth = "auto"
let promptText = "" let promptText = ""
let animateBorder = false let animateBorder = false
let creditsExceeded = false // TODO: Make this computed when quota is implemented
let switchOnAIModal: Modal let switchOnAIModal: Modal
let addCreditsModal: Modal let addCreditsModal: Modal
$: accountPortalAccess = $auth?.user?.accountPortalAccess $: accountPortalAccess = $auth?.user?.accountPortalAccess
$: accountPortal = $admin.accountPortalUrl $: accountPortal = $admin.accountPortalUrl
$: aiEnabled = false $: aiEnabled = $auth?.user?.llm
$: expanded = expandedOnly ? true : expanded $: expanded = expandedOnly ? true : expanded
$: creditsExceeded = $licensing.aiCreditsExceeded
$: disabled = suggestedCode !== null || !aiEnabled || creditsExceeded
$: if (expandedOnly) { $: if (expandedOnly) {
containerWidth = calculateExpandedWidth() containerWidth = calculateExpandedWidth()
} }
@ -153,8 +154,7 @@
src={BBAI} src={BBAI}
alt="AI" alt="AI"
class="ai-icon" class="ai-icon"
class:disabled={expanded && class:disabled={expanded && disabled}
(suggestedCode !== null || !aiEnabled || creditsExceeded)}
on:click={!expandedOnly on:click={!expandedOnly
? e => { ? e => {
e.stopPropagation() e.stopPropagation()
@ -170,7 +170,7 @@
class="prompt-input" class="prompt-input"
placeholder="Generate Javascript..." placeholder="Generate Javascript..."
on:keydown={handleKeyPress} on:keydown={handleKeyPress}
disabled={suggestedCode !== null || !aiEnabled || creditsExceeded} {disabled}
readonly={suggestedCode !== null} readonly={suggestedCode !== null}
/> />
{:else} {:else}

View File

@ -56,7 +56,9 @@ interface LicensingState {
// user limits // user limits
userCount?: number userCount?: number
userLimit?: number userLimit?: number
aiCreditsLimit?: number
userLimitReached: boolean userLimitReached: boolean
aiCreditsExceeded: boolean
errUserLimit: boolean errUserLimit: boolean
} }
@ -102,6 +104,8 @@ class LicensingStore extends BudiStore<LicensingState> {
userLimit: undefined, userLimit: undefined,
userLimitReached: false, userLimitReached: false,
errUserLimit: false, errUserLimit: false,
// AI Limits
aiCreditsExceeded: false,
}) })
} }
@ -119,6 +123,16 @@ class LicensingStore extends BudiStore<LicensingState> {
return userCount > userLimit return userCount > userLimit
} }
aiCreditsExceeded(
aiCredits: number,
aiCreditsLimit = get(this.store).aiCreditsLimit
) {
if (aiCreditsLimit === UNLIMITED || aiCreditsLimit === undefined) {
return false
}
return aiCredits > aiCreditsLimit
}
async isCloud() { async isCloud() {
let adminStore = get(admin) let adminStore = get(admin)
if (!adminStore.loaded) { if (!adminStore.loaded) {
@ -291,9 +305,15 @@ class LicensingStore extends BudiStore<LicensingState> {
const userQuota = license.quotas.usage.static.users const userQuota = license.quotas.usage.static.users
const userLimit = userQuota.value const userLimit = userQuota.value
const aiCreditsQuota = license.quotas.usage.monthly.budibaseAICredits
const aiCreditsLimit = aiCreditsQuota.value
const userCount = usage.usageQuota.users const userCount = usage.usageQuota.users
const userLimitReached = this.usersLimitReached(userCount, userLimit) const userLimitReached = this.usersLimitReached(userCount, userLimit)
const userLimitExceeded = this.usersLimitExceeded(userCount, userLimit) const userLimitExceeded = this.usersLimitExceeded(userCount, userLimit)
const aiCreditsExceeded = this.aiCreditsExceeded(
usage.monthly.current.budibaseAICredits,
aiCreditsLimit
)
const isCloudAccount = await this.isCloud() const isCloudAccount = await this.isCloud()
const errUserLimit = const errUserLimit =
isCloudAccount && isCloudAccount &&
@ -315,6 +335,8 @@ class LicensingStore extends BudiStore<LicensingState> {
userLimit, userLimit,
userLimitReached, userLimitReached,
errUserLimit, errUserLimit,
aiCreditsLimit,
aiCreditsExceeded,
} }
}) })
} }