diff --git a/packages/backend/src/models/step.ts b/packages/backend/src/models/step.ts index 57ec44e4..a231066e 100644 --- a/packages/backend/src/models/step.ts +++ b/packages/backend/src/models/step.ts @@ -73,6 +73,8 @@ class Step extends Base { }); get iconUrl() { + if (!this.appKey) return null; + return `${appConfig.baseUrl}/apps/${this.appKey}/assets/favicon.svg`; } diff --git a/packages/types/index.d.ts b/packages/types/index.d.ts index e61a259f..91130065 100644 --- a/packages/types/index.d.ts +++ b/packages/types/index.d.ts @@ -45,6 +45,7 @@ export interface IStep { flowId: string; key: string; appKey: string; + iconUrl: string; type: 'action' | 'trigger'; connectionId: string; status: string; diff --git a/packages/web/src/components/AppIcon/index.tsx b/packages/web/src/components/AppIcon/index.tsx index 1d07d8f6..2c114bca 100644 --- a/packages/web/src/components/AppIcon/index.tsx +++ b/packages/web/src/components/AppIcon/index.tsx @@ -14,7 +14,16 @@ const inlineImgStyle: React.CSSProperties = { }; export default function AppIcon(props: AppIconProps & AvatarProps): React.ReactElement { - const { name, url, color, sx = {}, variant = "square", ...restProps } = props; + const { + name, + url, + color, + sx = {}, + variant = "square", + ...restProps + } = props; + + const initialLetter = name?.[0]; return ( ); diff --git a/packages/web/src/components/FlowAppIcons/index.tsx b/packages/web/src/components/FlowAppIcons/index.tsx new file mode 100644 index 00000000..9932b735 --- /dev/null +++ b/packages/web/src/components/FlowAppIcons/index.tsx @@ -0,0 +1,37 @@ +import * as React from 'react'; +import type { IStep } from '@automatisch/types'; + +import AppIcon from 'components/AppIcon'; +import IntermediateStepCount from 'components/IntermediateStepCount'; + +type FlowAppIconsProps = { + steps: Partial[]; +} + +export default function FlowAppIcons(props: FlowAppIconsProps) { + const { steps } = props; + const stepsCount = steps.length; + const firstStep = steps[0]; + const lastStep = steps[stepsCount - 1]; + const intermeaditeStepCount = stepsCount - 2; + + + return ( + <> + + + {intermeaditeStepCount > 0 && } + + + + ) +}; diff --git a/packages/web/src/components/FlowRow/index.tsx b/packages/web/src/components/FlowRow/index.tsx index 43856d55..a33bdc19 100644 --- a/packages/web/src/components/FlowRow/index.tsx +++ b/packages/web/src/components/FlowRow/index.tsx @@ -7,8 +7,7 @@ import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; import { DateTime } from 'luxon'; import type { IFlow } from '@automatisch/types'; -import IntermediateStepCount from 'components/IntermediateStepCount'; -import AppIcon from 'components/AppIcon'; +import FlowAppIcons from 'components/FlowAppIcons'; import FlowContextMenu from 'components/FlowContextMenu'; import useFormatMessage from 'hooks/useFormatMessage'; import * as URLS from 'config/urls'; @@ -46,21 +45,7 @@ export default function FlowRow(props: FlowRowProps): React.ReactElement { - - - - - + - <Typography variant="body2"> + <Typography variant="subtitle1" sx={{ }}> +{count} </Typography> </Container> diff --git a/packages/web/src/components/IntermediateStepCount/style.ts b/packages/web/src/components/IntermediateStepCount/style.ts index e4580f42..95ac6760 100644 --- a/packages/web/src/components/IntermediateStepCount/style.ts +++ b/packages/web/src/components/IntermediateStepCount/style.ts @@ -7,6 +7,6 @@ export const Container = styled('div')(({ theme }) => ({ alignItems: 'center', minWidth: 50, height: 50, - border: '1px solid #000', + border: `1px solid ${theme.palette.text.disabled}`, borderRadius: theme.shape.borderRadius, })); diff --git a/packages/web/src/graphql/queries/get-flows.ts b/packages/web/src/graphql/queries/get-flows.ts index c18bf02a..56e18dc2 100644 --- a/packages/web/src/graphql/queries/get-flows.ts +++ b/packages/web/src/graphql/queries/get-flows.ts @@ -13,6 +13,9 @@ export const GET_FLOWS = gql` name createdAt updatedAt + steps { + iconUrl + } } } }