import api from '@/store/api'; import i18n from '@/i18n'; const PowerPolicyStore = { namespaced: true, state: { powerRestoreCurrentPolicy: null, powerRestorePolicies: [], }, getters: { powerRestoreCurrentPolicy: (state) => state.powerRestoreCurrentPolicy, powerRestorePolicies: (state) => state.powerRestorePolicies, }, mutations: { setPowerRestoreCurrentPolicy: (state, powerRestoreCurrentPolicy) => (state.powerRestoreCurrentPolicy = powerRestoreCurrentPolicy), setPowerRestorePolicies: (state, powerRestorePolicies) => (state.powerRestorePolicies = powerRestorePolicies), }, actions: { async getPowerRestorePolicies({ commit }) { return await api .get('/redfish/v1/JsonSchemas/ComputerSystem') .then(async (response) => { if ( response.data?.Location.length > 0 && response.data?.Location[0].Uri ) { return await api.get(response.data?.Location[0].Uri).then( ({ data: { definitions: { PowerRestorePolicyTypes = {} }, }, }) => { let powerPoliciesData = PowerRestorePolicyTypes.enum.map( (powerState) => { let desc = `${i18n.global.t( `pagePowerRestorePolicy.policies.${powerState}`, )} - ${ PowerRestorePolicyTypes.enumDescriptions[powerState] }`; return { state: powerState, desc, }; }, ); commit('setPowerRestorePolicies', powerPoliciesData); }, ); } }); }, async getPowerRestoreCurrentPolicy({ commit }) { return await api .get(`${await this.dispatch('global/getSystemPath')}`) .then(({ data: { PowerRestorePolicy } }) => { commit('setPowerRestoreCurrentPolicy', PowerRestorePolicy); }) .catch((error) => console.log(error)); }, async setPowerRestorePolicy({ dispatch }, powerPolicy) { const data = { PowerRestorePolicy: powerPolicy }; return await api .patch(`${await this.dispatch('global/getSystemPath')}`, data) .then(() => { dispatch('getPowerRestoreCurrentPolicy'); return i18n.global.t( 'pagePowerRestorePolicy.toast.successSaveSettings', ); }) .catch((error) => { console.log(error); throw new Error( i18n.global.t('pagePowerRestorePolicy.toast.errorSaveSettings'), ); }); }, }, }; export default PowerPolicyStore;