refactor(ui): cleanup UI client instance getter
authorJérôme Benoit <jerome.benoit@sap.com>
Tue, 5 Mar 2024 21:32:17 +0000 (22:32 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Tue, 5 Mar 2024 21:32:17 +0000 (22:32 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
ui/web/src/components/charging-stations/CSConnector.vue
ui/web/src/components/charging-stations/CSData.vue
ui/web/src/composables/UIClient.ts
ui/web/src/composables/Utils.ts
ui/web/src/composables/index.ts
ui/web/src/views/ChargingStationsView.vue

index 36bb971f6c3e0316a3432643aedb4b9463a26e6a..b75fc782a6d038ae5d121969f6a70ef0c0adfe49 100644 (file)
 </template>
 
 <script setup lang="ts">
-import { getCurrentInstance } from 'vue'
 import { useToast } from 'vue-toast-notification'
 import Button from '@/components/buttons/Button.vue'
 import type { ConnectorStatus, Status } from '@/types'
 import ToggleButton from '@/components/buttons/ToggleButton.vue'
+import { useUIClient } from '@/composables'
 
 const props = defineProps<{
   hashId: string
@@ -57,7 +57,7 @@ const props = defineProps<{
 
 const $emit = defineEmits(['need-refresh'])
 
-const uiClient = getCurrentInstance()?.appContext.config.globalProperties.$uiClient
+const uiClient = useUIClient()
 
 const $toast = useToast()
 
index 3eab286fbaabb998211e6a7f2a1af6afe488cbda..0da66895834c8296b982b7f2444b149d0ea516ab 100644 (file)
 </template>
 
 <script setup lang="ts">
-import { getCurrentInstance } from 'vue'
 import { useToast } from 'vue-toast-notification'
 import CSConnector from '@/components/charging-stations/CSConnector.vue'
 import Button from '@/components/buttons/Button.vue'
 import type { ChargingStationData, ConnectorStatus, Status } from '@/types'
 import ToggleButton from '@/components/buttons/ToggleButton.vue'
+import { useUIClient } from '@/composables'
 
 const props = defineProps<{
   chargingStation: ChargingStationData
@@ -133,7 +133,7 @@ const getWSState = (): string => {
   }
 }
 
-const uiClient = getCurrentInstance()?.appContext.config.globalProperties.$uiClient
+const uiClient = useUIClient()
 
 const $toast = useToast()
 
index 8a86d1504624819305e38049d38bb3d321f74ae2..dde5b55608784d51e1982406f6d35cd11b54b70f 100644 (file)
@@ -29,8 +29,11 @@ export class UIClient {
     this.responseHandlers = new Map<string, ResponseHandler>()
   }
 
-  public static getInstance(uiServerConfiguration: UIServerConfigurationSection): UIClient {
+  public static getInstance(uiServerConfiguration?: UIServerConfigurationSection): UIClient {
     if (UIClient.instance === null) {
+      if (uiServerConfiguration == null) {
+        throw new Error('Cannot initialize UIClient if no configuration is provided')
+      }
       UIClient.instance = new UIClient(uiServerConfiguration)
     }
     return UIClient.instance
index 467760535c6f5ec88cc1c58949a5c267743806f7..8db8851ad646819e43a6fa4dbb53bf245d06badd 100644 (file)
@@ -1,3 +1,5 @@
+import { UIClient } from './UIClient'
+
 export const convertToBoolean = (value: unknown): boolean => {
   let result = false
   if (value != null) {
@@ -53,3 +55,7 @@ export const getLocalStorage = (): Storage => {
 export const randomUUID = (): `${string}-${string}-${string}-${string}-${string}` => {
   return crypto.randomUUID()
 }
+
+export const useUIClient = (): UIClient => {
+  return UIClient.getInstance()
+}
index 55c28448049250b77ab88421a7d033707735d25c..6810a971b0689d9d21089aa51770860e398ea1ce 100644 (file)
@@ -6,5 +6,6 @@ export {
   getFromLocalStorage,
   getLocalStorage,
   randomUUID,
-  setToLocalStorage
+  setToLocalStorage,
+  useUIClient
 } from './Utils'
index a3f91ec9becf94bf51746325ba8109a00f92b29a..213832c1ec2862b1b7d3b0230479cb47abdf282b 100644 (file)
@@ -119,7 +119,8 @@ import {
   getFromLocalStorage,
   getLocalStorage,
   randomUUID,
-  setToLocalStorage
+  setToLocalStorage,
+  useUIClient
 } from '@/composables'
 import ToggleButton from '@/components/buttons/ToggleButton.vue'
 
@@ -169,7 +170,7 @@ const clearChargingStations = (): void => {
   state.value.renderChargingStations = randomUUID()
 }
 
-const uiClient = app?.appContext.config.globalProperties.$uiClient
+const uiClient = useUIClient()
 
 const $toast = useToast()