Revert of files from ui

This commit is contained in:
Pierre Charton 2025-01-10 15:39:29 +01:00
parent 5753e6ad0f
commit 2377b71baa
1 changed files with 96 additions and 3 deletions

View File

@ -18,12 +18,15 @@
import Cookies from 'js-cookie'
import message from 'ant-design-vue/es/message'
import notification from 'ant-design-vue/es/notification'
import semver from 'semver'
import { vueProps } from '@/vue-app'
import router from '@/router'
import store from '@/store'
import { oauthlogin, login, logout, api } from '@/api'
import { i18n } from '@/locales'
import { axios } from '../../utils/request'
import { getParsedVersion } from '@/utils/util'
import {
ACCESS_TOKEN,
@ -31,6 +34,7 @@ import {
DEFAULT_THEME,
APIS,
ZONES,
SHOW_SECURTIY_GROUPS,
TIMEZONE_OFFSET,
USE_BROWSER_TIMEZONE,
HEADER_NOTICES,
@ -38,7 +42,8 @@ import {
DARK_MODE,
CUSTOM_COLUMNS,
OAUTH_DOMAIN,
OAUTH_PROVIDER
OAUTH_PROVIDER,
LATEST_CS_VERSION
} from '@/store/mutation-types'
const user = {
@ -120,6 +125,10 @@ const user = {
state.zones = zones
vueProps.$localStorage.set(ZONES, zones)
},
SET_SHOW_SECURITY_GROUPS: (state, show) => {
state.showSecurityGroups = show
vueProps.$localStorage.set(SHOW_SECURTIY_GROUPS, show)
},
SET_DOMAIN_STORE (state, domainStore) {
state.domainStore = domainStore
vueProps.$localStorage.set(DOMAIN_STORE, domainStore)
@ -167,6 +176,12 @@ const user = {
},
SET_OAUTH_PROVIDER_USED_TO_LOGIN: (state, provider) => {
vueProps.$localStorage.set(OAUTH_PROVIDER, provider)
},
SET_LATEST_VERSION: (state, version) => {
if (version?.fetchedTs > 0) {
vueProps.$localStorage.set(LATEST_CS_VERSION, version)
state.latestVersion = version
}
}
},
@ -212,6 +227,8 @@ const user = {
commit('SET_2FA_PROVIDER', result.providerfor2fa)
commit('SET_2FA_ISSUER', result.issuerfor2fa)
commit('SET_LOGIN_FLAG', false)
const latestVersion = vueProps.$localStorage.get(LATEST_CS_VERSION, { version: '', fetchedTs: 0 })
commit('SET_LATEST_VERSION', latestVersion)
notification.destroy()
resolve()
@ -259,6 +276,8 @@ const user = {
commit('SET_2FA_PROVIDER', result.providerfor2fa)
commit('SET_2FA_ISSUER', result.issuerfor2fa)
commit('SET_LOGIN_FLAG', false)
const latestVersion = vueProps.$localStorage.get(LATEST_CS_VERSION, { version: '', fetchedTs: 0 })
commit('SET_LATEST_VERSION', latestVersion)
notification.destroy()
resolve()
@ -276,14 +295,18 @@ const user = {
const cachedUseBrowserTimezone = vueProps.$localStorage.get(USE_BROWSER_TIMEZONE, false)
const cachedCustomColumns = vueProps.$localStorage.get(CUSTOM_COLUMNS, {})
const domainStore = vueProps.$localStorage.get(DOMAIN_STORE, {})
const cachedShowSecurityGroups = vueProps.$localStorage.get(SHOW_SECURTIY_GROUPS, false)
const darkMode = vueProps.$localStorage.get(DARK_MODE, false)
const latestVersion = vueProps.$localStorage.get(LATEST_CS_VERSION, { version: '', fetchedTs: 0 })
const hasAuth = Object.keys(cachedApis).length > 0
commit('SET_DOMAIN_STORE', domainStore)
commit('SET_DARK_MODE', darkMode)
commit('SET_LATEST_VERSION', latestVersion)
if (hasAuth) {
console.log('Login detected, using cached APIs')
commit('SET_ZONES', cachedZones)
commit('SET_SHOW_SECURITY_GROUPS', cachedShowSecurityGroups)
commit('SET_APIS', cachedApis)
commit('SET_TIMEZONE_OFFSET', cachedTimezoneOffset)
commit('SET_USE_BROWSER_TIMEZONE', cachedUseBrowserTimezone)
@ -294,6 +317,7 @@ const user = {
const result = response.listusersresponse.user[0]
commit('SET_INFO', result)
commit('SET_NAME', result.firstname + ' ' + result.lastname)
store.dispatch('SetCsLatestVersion', result.rolename)
resolve(cachedApis)
}).catch(error => {
reject(error)
@ -314,7 +338,10 @@ const user = {
const apiName = api.name
apis[apiName] = {
params: api.params,
response: api.response
response: api.response,
isasync: api.isasync,
since: api.since,
description: api.description
}
}
commit('SET_APIS', apis)
@ -329,16 +356,54 @@ const user = {
}).catch(error => {
reject(error)
})
api('listNetworks', { restartrequired: true, forvpc: false }).then(response => {
if (response.listnetworksresponse.count > 0) {
store.dispatch('AddHeaderNotice', {
key: 'NETWORK_RESTART_REQUIRED',
title: i18n.global.t('label.network.restart.required'),
description: i18n.global.t('message.network.restart.required'),
path: '/guestnetwork/',
query: { restartrequired: true, forvpc: false },
status: 'done',
timestamp: new Date()
})
}
}).catch(ignored => {})
api('listVPCs', { restartrequired: true }).then(response => {
if (response.listvpcsresponse.count > 0) {
store.dispatch('AddHeaderNotice', {
key: 'VPC_RESTART_REQUIRED',
title: i18n.global.t('label.vpc.restart.required'),
description: i18n.global.t('message.vpc.restart.required'),
path: '/vpc/',
query: { restartrequired: true },
status: 'done',
timestamp: new Date()
})
}
}).catch(ignored => {})
}
api('listUsers', { username: Cookies.get('username') }).then(response => {
const result = response.listusersresponse.user[0]
commit('SET_INFO', result)
commit('SET_NAME', result.firstname + ' ' + result.lastname)
store.dispatch('SetCsLatestVersion', result.rolename)
}).catch(error => {
reject(error)
})
api(
'listNetworkServiceProviders',
{ name: 'SecurityGroupProvider', state: 'Enabled' }
).then(response => {
const showSecurityGroups = response.listnetworkserviceprovidersresponse.count > 0
commit('SET_SHOW_SECURITY_GROUPS', showSecurityGroups)
}).catch(ignored => {
})
api('listCapabilities').then(response => {
const result = response.listcapabilitiesresponse.capability
commit('SET_FEATURES', result)
@ -348,6 +413,9 @@ const user = {
if (result && result.customhypervisordisplayname) {
commit('SET_CUSTOM_HYPERVISOR_NAME', result.customhypervisordisplayname)
}
if (result && result.securitygroupsenabled) {
commit('SET_SHOW_SECURITY_GROUPS', result.securitygroupsenabled)
}
}).catch(error => {
reject(error)
})
@ -364,6 +432,8 @@ const user = {
commit('SET_CLOUDIAN', cloudian)
}).catch(ignored => {
})
}).catch(error => {
console.error(error)
})
},
@ -485,6 +555,29 @@ const user = {
SetDomainStore ({ commit }, domainStore) {
commit('SET_DOMAIN_STORE', domainStore)
},
SetCsLatestVersion ({ commit }, rolename) {
const lastFetchTs = store.getters.latestVersion?.fetchedTs ? store.getters.latestVersion.fetchedTs : 0
if (rolename === 'Root Admin' && (+new Date() - lastFetchTs) > 24 * 60 * 60 * 1000) {
axios.get(
'https://api.github.com/repos/apache/cloudstack/releases'
).then(response => {
let latestReleaseVersion = getParsedVersion(response[0].tag_name)
let latestTag = response[0].tag_name
for (const release of response) {
if (release.tag_name.toLowerCase().includes('rc')) {
continue
}
const parsedVersion = getParsedVersion(release.tag_name)
if (semver.gte(parsedVersion, latestReleaseVersion)) {
latestReleaseVersion = parsedVersion
latestTag = release.tag_name
commit('SET_LATEST_VERSION', { version: latestTag, fetchedTs: (+new Date()) })
}
}
}).catch(ignored => {})
}
},
SetDarkMode ({ commit }, darkMode) {
commit('SET_DARK_MODE', darkMode)
},
@ -497,4 +590,4 @@ const user = {
}
}
export default user
export default user