diff --git a/img/test/logo.png b/img/test/logo.png new file mode 100644 index 00000000000..fc44b0a3796 Binary files /dev/null and b/img/test/logo.png differ diff --git a/ts/features/messages/components/MessageDetail/MessageDetailHeader.tsx b/ts/features/messages/components/MessageDetail/MessageDetailHeader.tsx index 849cf89df7c..ae3acb5fb8a 100644 --- a/ts/features/messages/components/MessageDetail/MessageDetailHeader.tsx +++ b/ts/features/messages/components/MessageDetail/MessageDetailHeader.tsx @@ -1,9 +1,16 @@ -import { Divider, H3, LabelSmall, VSpacer } from "@pagopa/io-app-design-system"; import React, { PropsWithChildren } from "react"; -import { StyleSheet, View } from "react-native"; +import { + ContentWrapper, + Divider, + H3, + LabelSmall, + VSpacer +} from "@pagopa/io-app-design-system"; import { localeDateFormat } from "../../../../utils/locale"; import I18n from "../../../../i18n"; import { ServicePublic } from "../../../../../definitions/backend/ServicePublic"; +import { logosForService } from "../../../../utils/services"; +import { OrganizationHeader } from "./OrganizationHeader"; export type MessageDetailHeaderProps = PropsWithChildren<{ createdAt: Date; @@ -12,12 +19,6 @@ export type MessageDetailHeaderProps = PropsWithChildren<{ service?: ServicePublic; }>; -const styles = StyleSheet.create({ - header: { - paddingHorizontal: 24 - } -}); - const MessageHeaderContent = ({ subject, createdAt @@ -36,13 +37,24 @@ const MessageHeaderContent = ({ export const MessageDetailHeader = ({ children, + service, ...rest }: MessageDetailHeaderProps) => ( - + {children} - {/* TODO: Add MessageHeaderService */} - + {service && ( + <> + {/* TODO: update logoUri when MultiImage component will be available in DS */} + + + + )} + ); diff --git a/ts/features/messages/components/MessageDetail/OrganizationHeader.tsx b/ts/features/messages/components/MessageDetail/OrganizationHeader.tsx new file mode 100644 index 00000000000..43537c53909 --- /dev/null +++ b/ts/features/messages/components/MessageDetail/OrganizationHeader.tsx @@ -0,0 +1,49 @@ +import React from "react"; +import { ImageURISource, StyleSheet, View } from "react-native"; +import { + Avatar, + IOSpacingScale, + IOStyles, + LabelSmall +} from "@pagopa/io-app-design-system"; + +export type OrganizationHeaderProps = { + organizationName: string; + serviceName: string; + logoUri: ImageURISource; +}; + +const ITEM_PADDING_VERTICAL: IOSpacingScale = 6; +const AVATAR_MARGIN_LEFT: IOSpacingScale = 16; + +const styles = StyleSheet.create({ + item: { + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + paddingVertical: ITEM_PADDING_VERTICAL + }, + itemAvatar: { + marginLeft: AVATAR_MARGIN_LEFT + } +}); + +export const OrganizationHeader = ({ + logoUri, + organizationName, + serviceName +}: OrganizationHeaderProps) => ( + + + + {organizationName} + + + {serviceName} + + + + + + +); diff --git a/ts/features/messages/components/MessageDetail/__tests__/MessageDetailHeader.test.tsx b/ts/features/messages/components/MessageDetail/__tests__/MessageDetailHeader.test.tsx index 5539b0d3fdc..145c99ef552 100644 --- a/ts/features/messages/components/MessageDetail/__tests__/MessageDetailHeader.test.tsx +++ b/ts/features/messages/components/MessageDetail/__tests__/MessageDetailHeader.test.tsx @@ -26,10 +26,22 @@ describe("MessageDetailHeader component", () => { const component = render( ); expect(component.toJSON()).toMatchSnapshot(); }); + + it("should render the organization info when the service is defined", () => { + const component = render( + + ); + expect(component.queryByText(service.organization_name)).not.toBeNull(); + expect(component.queryByText(service.service_name)).not.toBeNull(); + }); }); diff --git a/ts/features/messages/components/MessageDetail/__tests__/OrganizationHeader.test.tsx b/ts/features/messages/components/MessageDetail/__tests__/OrganizationHeader.test.tsx new file mode 100644 index 00000000000..7517d68fb94 --- /dev/null +++ b/ts/features/messages/components/MessageDetail/__tests__/OrganizationHeader.test.tsx @@ -0,0 +1,16 @@ +import React from "react"; +import { render } from "@testing-library/react-native"; +import { OrganizationHeader } from "../OrganizationHeader"; + +describe("OrganizationHeader component", () => { + it("should match the snapshot", () => { + const component = render( + + ); + expect(component.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailHeader.test.tsx.snap b/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailHeader.test.tsx.snap index d1597d22480..434badfbbc3 100644 --- a/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailHeader.test.tsx.snap +++ b/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailHeader.test.tsx.snap @@ -92,6 +92,137 @@ exports[`MessageDetailHeader component should match the snapshot with all props } } /> + + + + Organization foo + + + health + + + + + + + + + `; diff --git a/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/OrganizationHeader.test.tsx.snap b/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/OrganizationHeader.test.tsx.snap new file mode 100644 index 00000000000..8ccc1da6e7c --- /dev/null +++ b/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/OrganizationHeader.test.tsx.snap @@ -0,0 +1,127 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`OrganizationHeader component should match the snapshot 1`] = ` + + + + #### organization_name #### + + + #### service name #### + + + + + + + + +`; diff --git a/ts/features/pn/screens/MessageDetailsScreen.tsx b/ts/features/pn/screens/MessageDetailsScreen.tsx index cc4ff8e8dbe..dc68816b0b1 100644 --- a/ts/features/pn/screens/MessageDetailsScreen.tsx +++ b/ts/features/pn/screens/MessageDetailsScreen.tsx @@ -71,7 +71,7 @@ export const MessageDetailsScreen = () => { dispatch(cancelQueuedPaymentUpdates()); dispatch(cancelPaymentStatusTracking()); navigation.goBack(); - }, []); + }, [dispatch, navigation]); useHeaderSecondLevel({ title: "", diff --git a/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap b/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap index 9a3f4a76a2f..4323d0c8345 100644 --- a/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap +++ b/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap @@ -782,6 +782,137 @@ exports[`MessageDetailsScreen should match the snapshot when everything went fin } } /> + + + + Ċentru tas-Saħħa + + + health + + + + + + + + +