pr comments
This commit is contained in:
parent
0709f68f47
commit
d2be62dfe1
|
@ -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}
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue