Files
windmill/frontend/src/lib/stores.ts
T
Ruben Fiszel 66df58af47 feat: is_trigger is just a type tag, soon to include failure and command (#523)
* script kind

* all

* init code flow

* kind: trigger

* kind: trigger
2022-09-05 09:55:04 +02:00

54 lines
1.4 KiB
TypeScript

import { browser } from '$app/env'
import { writable } from 'svelte/store'
import type { UserWorkspaceList } from '$lib/gen/models/UserWorkspaceList.js'
import { getUserExt } from './user'
import type { TokenResponse } from './gen'
export interface UserExt {
email: string
username: string
is_admin: boolean
created_at: string
groups: string[]
pgroups: string[]
}
let persistedWorkspace = browser && localStorage.getItem('workspace')
export const oauthStore = writable<TokenResponse | undefined>(undefined)
export const userStore = writable<UserExt | undefined>(undefined)
export const workspaceStore = writable<string | undefined>(
persistedWorkspace ? String(persistedWorkspace) : undefined
)
export const usersWorkspaceStore = writable<UserWorkspaceList | undefined>(undefined)
export const superadmin = writable<String | false | undefined>(undefined)
export const hubScripts = writable<
| Array<{
path: string
summary: string
approved: boolean
kind: string
app: string
}>
| undefined
>(undefined)
if (browser) {
workspaceStore.subscribe(async (workspace) => {
if (workspace) {
localStorage.setItem('workspace', String(workspace))
userStore.set(await getUserExt(workspace))
} else {
userStore.set(undefined)
}
})
}
export function clearStores(): void {
localStorage.removeItem('workspace')
userStore.set(undefined)
workspaceStore.set(undefined)
usersWorkspaceStore.set(undefined)
superadmin.set(undefined)
}