1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { defineStore } from 'pinia'
- import gql from 'graphql-tag'
- import { clone, cloneDeep } from 'lodash-es'
- import semverGte from 'semver/functions/gte'
- /* global APOLLO_CLIENT */
- export const useAdminStore = defineStore('admin', {
- state: () => ({
- currentSiteId: null,
- info: {
- currentVersion: 'n/a',
- latestVersion: 'n/a',
- groupsTotal: 0,
- pagesTotal: 0,
- usersTotal: 0,
- loginsPastDay: 0,
- isApiEnabled: false,
- isMailConfigured: false,
- isSchedulerHealthy: false
- },
- overlay: null,
- overlayOpts: {},
- sites: [],
- locales: [
- { code: 'en', name: 'English' }
- ]
- }),
- getters: {
- isVersionLatest: (state) => {
- if (!state.info.currentVersion || !state.info.latestVersion || state.info.currentVersion === 'n/a' || state.info.latestVersion === 'n/a') {
- return false
- }
- return semverGte(state.info.currentVersion, state.info.latestVersion)
- }
- },
- actions: {
- async fetchSites () {
- const resp = await APOLLO_CLIENT.query({
- query: gql`
- query getSites {
- sites {
- id
- hostname
- isEnabled
- title
- }
- }
- `,
- fetchPolicy: 'network-only'
- })
- this.sites = cloneDeep(resp?.data?.sites ?? [])
- if (!this.currentSiteId) {
- this.currentSiteId = this.sites[0].id
- }
- },
- async fetchInfo () {
- const resp = await APOLLO_CLIENT.query({
- query: gql`
- query getAdminInfo {
- apiState
- systemInfo {
- groupsTotal
- usersTotal
- currentVersion
- latestVersion
- isMailConfigured
- isSchedulerHealthy
- }
- }
- `,
- fetchPolicy: 'network-only'
- })
- this.info.groupsTotal = clone(resp?.data?.systemInfo?.groupsTotal ?? 0)
- this.info.usersTotal = clone(resp?.data?.systemInfo?.usersTotal ?? 0)
- this.info.currentVersion = clone(resp?.data?.systemInfo?.currentVersion ?? 'n/a')
- this.info.latestVersion = clone(resp?.data?.systemInfo?.latestVersion ?? 'n/a')
- this.info.isApiEnabled = clone(resp?.data?.apiState ?? false)
- this.info.isMailConfigured = clone(resp?.data?.systemInfo?.isMailConfigured ?? false)
- this.info.isSchedulerHealthy = clone(resp?.data?.systemInfo?.isSchedulerHealthy ?? false)
- }
- }
- })
|