11import useSWR from 'swr' ;
22import { 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' ;
44import { isALocalStackContainer , isJson } from '../util' ;
55import { useDDClient } from './utils' ;
66
77interface useRunConfigsReturn {
8- runConfigs : RunConfig [ ] ,
8+ configData : ConfigData ,
99 isLoading : boolean ,
10+ setRunningConfig : ( data : string ) => unknown ;
1011 createConfig : ( data : RunConfig ) => unknown ;
1112 updateConfig : ( data : RunConfig ) => unknown ;
1213 deleteConfig : ( data : string ) => unknown ;
@@ -16,6 +17,17 @@ interface HTTPMessageBody {
1617 Message : string ,
1718}
1819
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+
1931export const useRunConfigs = ( ) : useRunConfigsReturn => {
2032 const cacheKey = STORAGE_KEY_ENVVARS ;
2133 const ddClient = useDDClient ( ) ;
@@ -29,6 +41,11 @@ export const useRunConfigs = (): useRunConfigsReturn => {
2941 mutate ( ) ;
3042 } ;
3143
44+ const setRunningConfig = async ( configId : string ) => {
45+ await ddClient . extension . vm . service . put ( '/configs/running' , { Data : JSON . stringify ( configId ) } ) ;
46+ mutate ( ) ;
47+ } ;
48+
3249 const createConfig = async ( newData : RunConfig ) => {
3350 await ddClient . extension . vm . service . post ( '/configs' , { Data : JSON . stringify ( newData ) } ) ;
3451 mutate ( ) ;
@@ -39,9 +56,11 @@ export const useRunConfigs = (): useRunConfigsReturn => {
3956 mutate ( ) ;
4057 } ;
4158
59+
4260 return {
43- runConfigs : ( ! data || ! data ?. Message || error ) ? [ ] : JSON . parse ( data ?. Message ) ,
61+ configData : adaptVersionData ( data , error ) ,
4462 isLoading : isValidating || ( ! error && ! data ) ,
63+ setRunningConfig,
4564 createConfig,
4665 updateConfig,
4766 deleteConfig,
@@ -78,7 +97,7 @@ export const useMountPoint = (): useMountPointReturn => {
7897 return {
7998 user : mountPointData ?. user ,
8099 os : mountPointData ?. os ,
81- showForm : mountPointData ?. showForm == null ? true : mountPointData ?. showForm ,
100+ showForm : mountPointData ?. showForm == null ? true : mountPointData ?. showForm ,
82101 showSetupWarning : mountPointData ?. showSetupWarning == null ? true : mountPointData ?. showSetupWarning ,
83102 hasSkippedConfiguration : mountPointData ?. hasSkippedConfiguration || false ,
84103 isLoading : isValidating || ( ! error && ! data ) ,
@@ -105,7 +124,7 @@ export const useLocalStack = (): useLocalStackReturn => {
105124 /*
106125 * compares whether the old (b) status aligns with that of new (a) status
107126 */
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' ) ,
109128 } ,
110129 ) ;
111130
0 commit comments