@@ -7,7 +7,9 @@ import { WorkspaceResource } from "../../api/typesGenerated"
7
7
// These resources (i.e. docker_image, kubernetes_deployment) map to Terraform
8
8
// resource types. These are the most used ones and are based on user usage.
9
9
// We may want to update from time-to-time.
10
- const iconPathByResource : Record < WorkspaceResource [ "type" ] , string > = {
10
+ const DEFAULT_ICON_PATHS : {
11
+ [ resourceType : WorkspaceResource [ "type" ] ] : string
12
+ } = {
11
13
docker_volume : "/icon/folder.svg" ,
12
14
docker_container : "/icon/memory.svg" ,
13
15
docker_image : "/icon/image.svg" ,
@@ -20,15 +22,19 @@ const iconPathByResource: Record<WorkspaceResource["type"], string> = {
20
22
null_resource : "/icon/widgets.svg" ,
21
23
}
22
24
25
+ const getIconPathResource = ( resourceType : string ) : string => {
26
+ if ( resourceType in DEFAULT_ICON_PATHS ) {
27
+ return DEFAULT_ICON_PATHS [ resourceType ]
28
+ }
29
+
30
+ return DEFAULT_ICON_PATHS [ resourceType ]
31
+ }
32
+
23
33
export type ResourceAvatarProps = { resource : WorkspaceResource }
24
34
25
35
export const ResourceAvatar : React . FC < ResourceAvatarProps > = ( { resource } ) => {
26
36
const hasIcon = resource . icon && resource . icon !== ""
27
- const avatarSrc = hasIcon
28
- ? resource . icon
29
- : // resource.type is dynamic so iconPathByResource[resource.type] can be null
30
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
31
- iconPathByResource [ resource . type ] ?? iconPathByResource [ "null_resource" ]
37
+ const avatarSrc = hasIcon ? resource . icon : getIconPathResource ( resource . type )
32
38
const styles = useStyles ( )
33
39
34
40
return < Avatar className = { styles . resourceAvatar } src = { avatarSrc } />
0 commit comments