1
1
import useSWR from 'swr' ;
2
2
import { STORAGE_KEY_ENVVARS , STORAGE_KEY_LOCALSTACK , STORAGE_KEY_MOUNT } from '../../constants' ;
3
- import { DockerContainer , mountPointData , RunConfig } from '../../types' ;
3
+ import { ConfigData , DockerContainer , mountPointData , RunConfig } from '../../types' ;
4
4
import { isALocalStackContainer , isJson } from '../util' ;
5
5
import { useDDClient } from './utils' ;
6
6
7
7
interface useRunConfigsReturn {
8
- runConfigs : RunConfig [ ] ,
8
+ configData : ConfigData ,
9
9
isLoading : boolean ,
10
+ setRunningConfig : ( data : string ) => unknown ;
10
11
createConfig : ( data : RunConfig ) => unknown ;
11
12
updateConfig : ( data : RunConfig ) => unknown ;
12
13
deleteConfig : ( data : string ) => unknown ;
@@ -16,6 +17,17 @@ interface HTTPMessageBody {
16
17
Message : string ,
17
18
}
18
19
20
+ const adaptVersionData = ( data : HTTPMessageBody , error : Error ) => {
21
+ const newData = ( ! data || ! data ?. Message || error ) ?
22
+ { configs : [ ] , runningConfig : null }
23
+ :
24
+ JSON . parse ( data ?. Message ) ;
25
+ if ( Array . isArray ( newData ) ) {
26
+ return { configs : newData , runningConfig : newData . at ( 0 ) . id ?? null } ;
27
+ }
28
+ return newData ;
29
+ } ;
30
+
19
31
export const useRunConfigs = ( ) : useRunConfigsReturn => {
20
32
const cacheKey = STORAGE_KEY_ENVVARS ;
21
33
const ddClient = useDDClient ( ) ;
@@ -29,6 +41,11 @@ export const useRunConfigs = (): useRunConfigsReturn => {
29
41
mutate ( ) ;
30
42
} ;
31
43
44
+ const setRunningConfig = async ( configId : string ) => {
45
+ await ddClient . extension . vm . service . put ( '/configs/running' , { Data : JSON . stringify ( configId ) } ) ;
46
+ mutate ( ) ;
47
+ } ;
48
+
32
49
const createConfig = async ( newData : RunConfig ) => {
33
50
await ddClient . extension . vm . service . post ( '/configs' , { Data : JSON . stringify ( newData ) } ) ;
34
51
mutate ( ) ;
@@ -39,9 +56,11 @@ export const useRunConfigs = (): useRunConfigsReturn => {
39
56
mutate ( ) ;
40
57
} ;
41
58
59
+
42
60
return {
43
- runConfigs : ( ! data || ! data ?. Message || error ) ? [ ] : JSON . parse ( data ?. Message ) ,
61
+ configData : adaptVersionData ( data , error ) ,
44
62
isLoading : isValidating || ( ! error && ! data ) ,
63
+ setRunningConfig,
45
64
createConfig,
46
65
updateConfig,
47
66
deleteConfig,
@@ -78,7 +97,7 @@ export const useMountPoint = (): useMountPointReturn => {
78
97
return {
79
98
user : mountPointData ?. user ,
80
99
os : mountPointData ?. os ,
81
- showForm : mountPointData ?. showForm == null ? true : mountPointData ?. showForm ,
100
+ showForm : mountPointData ?. showForm == null ? true : mountPointData ?. showForm ,
82
101
showSetupWarning : mountPointData ?. showSetupWarning == null ? true : mountPointData ?. showSetupWarning ,
83
102
hasSkippedConfiguration : mountPointData ?. hasSkippedConfiguration || false ,
84
103
isLoading : isValidating || ( ! error && ! data ) ,
@@ -105,7 +124,7 @@ export const useLocalStack = (): useLocalStackReturn => {
105
124
/*
106
125
* compares whether the old (b) status aligns with that of new (a) status
107
126
*/
108
- ( a , b ) => a ?. Id === b ?. Id && a ?. Status . includes ( 'unhealthy' ) === b ?. Status . includes ( 'unhealthy' ) ,
127
+ ( a , b ) => a ?. Id === b ?. Id && a ?. Status . includes ( 'unhealthy' ) === b ?. Status . includes ( 'unhealthy' ) ,
109
128
} ,
110
129
) ;
111
130
0 commit comments