make roles derived store
This commit is contained in:
parent
f3aff12955
commit
62873dedf4
|
@ -1,28 +1,30 @@
|
||||||
import { derived, get } from "svelte/store"
|
import { derived, get, type Writable } from "svelte/store"
|
||||||
import { API } from "@/api"
|
import { API } from "@/api"
|
||||||
import { RoleUtils } from "@budibase/frontend-core"
|
import { RoleUtils } from "@budibase/frontend-core"
|
||||||
import { BudiStore } from "../BudiStore"
|
import { DerivedBudiStore } from "../BudiStore"
|
||||||
import { Role } from "@budibase/types"
|
import { Role } from "@budibase/types"
|
||||||
|
|
||||||
export class RoleStore extends BudiStore<Role[]> {
|
export class RoleStore extends DerivedBudiStore<Role[], Role[]> {
|
||||||
constructor() {
|
constructor() {
|
||||||
super([])
|
const makeDerivedStore = (store: Writable<Role[]>) =>
|
||||||
|
derived(store, $store => {
|
||||||
|
return $store.map((role: Role) => ({
|
||||||
|
...role,
|
||||||
|
// Ensure we have new metadata for all roles
|
||||||
|
uiMetadata: {
|
||||||
|
displayName: role.uiMetadata?.displayName || role.name,
|
||||||
|
color:
|
||||||
|
role.uiMetadata?.color ||
|
||||||
|
"var(--spectrum-global-color-magenta-400)",
|
||||||
|
description: role.uiMetadata?.description || "Custom role",
|
||||||
|
},
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
|
||||||
|
super([], makeDerivedStore)
|
||||||
}
|
}
|
||||||
|
|
||||||
enriched = derived(this, $store => {
|
setRoles = (roles: Role[]) => {
|
||||||
return $store.map(role => ({
|
|
||||||
...role,
|
|
||||||
// Ensure we have new metadata for all roles
|
|
||||||
uiMetadata: {
|
|
||||||
displayName: role.uiMetadata?.displayName || role.name,
|
|
||||||
color:
|
|
||||||
role.uiMetadata?.color || "var(--spectrum-global-color-magenta-400)",
|
|
||||||
description: role.uiMetadata?.description || "Custom role",
|
|
||||||
},
|
|
||||||
}))
|
|
||||||
})
|
|
||||||
|
|
||||||
private setRoles = (roles: Role[]) => {
|
|
||||||
this.set(
|
this.set(
|
||||||
roles.sort((a, b) => {
|
roles.sort((a, b) => {
|
||||||
// Ensure we have valid IDs for priority comparison
|
// Ensure we have valid IDs for priority comparison
|
||||||
|
@ -89,8 +91,4 @@ export class RoleStore extends BudiStore<Role[]> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const store = new RoleStore()
|
export const roles = new RoleStore()
|
||||||
export const roles = {
|
|
||||||
...store,
|
|
||||||
subscribe: store.enriched.subscribe,
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue