<script>
  import Provider from "./Provider.svelte"
  import { authStore, devToolsStore } from "stores"
  import { ActionTypes } from "constants"
  import { Constants } from "@budibase/frontend-core"

  // Register this as a refreshable datasource so that user changes cause
  // the user object to be refreshed
  $: actions = [
    {
      type: ActionTypes.RefreshDatasource,
      callback: () => authStore.actions.fetchUser(),
      metadata: {
        dataSource: { type: "table", tableId: Constants.TableNames.USERS },
      },
    },
  ]
</script>

<Provider
  key="user"
  data={{ ...$authStore, roleId: $devToolsStore.role || $authStore?.roleId }}
  {actions}
>
  <slot />
</Provider>
