diff --git a/src/store/modules/Settings/NetworkStore.js b/src/store/modules/Settings/NetworkStore.js
index 5c78d10..9b01603 100644
--- a/src/store/modules/Settings/NetworkStore.js
+++ b/src/store/modules/Settings/NetworkStore.js
@@ -38,7 +38,7 @@
         return {
           defaultGateway: IPv4StaticAddresses[0]?.Gateway, //First static gateway is the default gateway
           dhcpAddress: IPv4Addresses.filter(
-            (ipv4) => ipv4.AddressOrigin === 'DHCP'
+            (ipv4) => ipv4.AddressOrigin === 'DHCP',
           ),
           dhcpEnabled: DHCPv4.DHCPEnabled,
           hostname: HostName,
@@ -63,19 +63,19 @@
         .get('/redfish/v1/Managers/bmc/EthernetInterfaces')
         .then((response) =>
           response.data.Members.map(
-            (ethernetInterface) => ethernetInterface['@odata.id']
-          )
+            (ethernetInterface) => ethernetInterface['@odata.id'],
+          ),
         )
         .then((ethernetInterfaceIds) =>
           api.all(
             ethernetInterfaceIds.map((ethernetInterface) =>
-              api.get(ethernetInterface)
-            )
-          )
+              api.get(ethernetInterface),
+            ),
+          ),
         )
         .then((ethernetInterfaces) => {
           const ethernetData = ethernetInterfaces.map(
-            (ethernetInterface) => ethernetInterface.data
+            (ethernetInterface) => ethernetInterface.data,
           );
           const firstInterfaceId = ethernetData[0].Id;
 
@@ -97,7 +97,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
-          data
+          data,
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
@@ -110,7 +110,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.dhcp'),
-            })
+            }),
           );
         });
     },
@@ -126,7 +126,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.firstInterfaceId}`,
-          data
+          data,
         )
         .then(() => {
           return i18n.t('pageNetwork.toast.successSaveNetworkSettings', {
@@ -139,7 +139,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.domainName'),
-            })
+            }),
           );
         });
     },
@@ -155,7 +155,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.firstInterfaceId}`,
-          data
+          data,
         )
         .then(() => {
           return i18n.t('pageNetwork.toast.successSaveNetworkSettings', {
@@ -168,7 +168,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.dns'),
-            })
+            }),
           );
         });
     },
@@ -184,7 +184,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.firstInterfaceId}`,
-          data
+          data,
         )
         .then(() => {
           return i18n.t('pageNetwork.toast.successSaveNetworkSettings', {
@@ -197,7 +197,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.ntp'),
-            })
+            }),
           );
         });
     },
@@ -222,7 +222,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
-          { IPv4StaticAddresses: originalAddresses.concat(newAddress) }
+          { IPv4StaticAddresses: originalAddresses.concat(newAddress) },
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
@@ -235,7 +235,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.ipv4'),
-            })
+            }),
           );
         });
     },
@@ -243,7 +243,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
-          { IPv4StaticAddresses: ipv4TableData }
+          { IPv4StaticAddresses: ipv4TableData },
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
@@ -256,7 +256,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.ipv4'),
-            })
+            }),
           );
         });
     },
@@ -264,7 +264,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
-          interfaceSettingsForm
+          interfaceSettingsForm,
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
@@ -277,7 +277,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.network'),
-            })
+            }),
           );
         });
     },
@@ -289,7 +289,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
-          { StaticNameServers: newDnsArray }
+          { StaticNameServers: newDnsArray },
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
@@ -302,7 +302,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.dns'),
-            })
+            }),
           );
         });
     },
@@ -310,7 +310,7 @@
       return api
         .patch(
           `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
-          { StaticNameServers: dnsTableData }
+          { StaticNameServers: dnsTableData },
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
@@ -323,7 +323,7 @@
           throw new Error(
             i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
               setting: i18n.t('pageNetwork.dns'),
-            })
+            }),
           );
         });
     },
diff --git a/src/store/modules/Settings/PowerPolicyStore.js b/src/store/modules/Settings/PowerPolicyStore.js
index 54efa2c..3adaec8 100644
--- a/src/store/modules/Settings/PowerPolicyStore.js
+++ b/src/store/modules/Settings/PowerPolicyStore.js
@@ -30,16 +30,16 @@
             let powerPoliciesData = PowerRestorePolicyTypes.enum.map(
               (powerState) => {
                 let desc = `${i18n.t(
-                  `pagePowerRestorePolicy.policies.${powerState}`
+                  `pagePowerRestorePolicy.policies.${powerState}`,
                 )} - ${PowerRestorePolicyTypes.enumDescriptions[powerState]}`;
                 return {
                   state: powerState,
                   desc,
                 };
-              }
+              },
             );
             commit('setPowerRestorePolicies', powerPoliciesData);
-          }
+          },
         );
     },
     async getPowerRestoreCurrentPolicy({ commit }) {
@@ -62,7 +62,7 @@
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.t('pagePowerRestorePolicy.toast.errorSaveSettings')
+            i18n.t('pagePowerRestorePolicy.toast.errorSaveSettings'),
           );
         });
     },
diff --git a/src/store/modules/Settings/SnmpAlertsStore.js b/src/store/modules/Settings/SnmpAlertsStore.js
index f945ee3..0871c8d 100644
--- a/src/store/modules/Settings/SnmpAlertsStore.js
+++ b/src/store/modules/Settings/SnmpAlertsStore.js
@@ -30,7 +30,7 @@
       return await api
         .get(snmpAlertUrl)
         .then((response) =>
-          response.data.Members.map((user) => user['@odata.id'])
+          response.data.Members.map((user) => user['@odata.id']),
         )
         .then((userIds) => api.all(userIds.map((user) => api.get(user))))
         .then((users) => {
@@ -51,7 +51,7 @@
         .then(() =>
           i18n.t('pageSnmpAlerts.toast.successDeleteDestination', {
             id,
-          })
+          }),
         )
         .catch((error) => {
           console.log(error);
@@ -59,7 +59,7 @@
             'pageSnmpAlerts.toast.errorDeleteDestination',
             {
               id,
-            }
+            },
           );
           throw new Error(message);
         });
@@ -86,7 +86,7 @@
             if (successCount) {
               const message = i18n.tc(
                 'pageSnmpAlerts.toast.successBatchDelete',
-                successCount
+                successCount,
               );
               toastMessages.push({ type: 'success', message });
             }
@@ -94,13 +94,13 @@
             if (errorCount) {
               const message = i18n.tc(
                 'pageSnmpAlerts.toast.errorBatchDelete',
-                errorCount
+                errorCount,
               );
               toastMessages.push({ type: 'error', message });
             }
 
             return toastMessages;
-          })
+          }),
         );
     },
     async addDestination({ dispatch }, { data }) {
