diff --git a/app/src/components/trip/MemberRequestedButton.tsx b/app/src/components/trip/MemberRequestedButton.tsx new file mode 100644 index 00000000..856ac86b --- /dev/null +++ b/app/src/components/trip/MemberRequestedButton.tsx @@ -0,0 +1,43 @@ +import { AppText } from "@/components/base/AppText.tsx"; +import { AppColors } from "@/theme/colors.ts"; +import { CoLiane, LianeMessage, MemberRequested } from "@liane/common"; +import React, { useCallback, useContext } from "react"; +import { Row } from "@/components/base/AppLayout.tsx"; +import { AppIcon } from "@/components/base/AppIcon.tsx"; +import { AppPressableOverlay } from "@/components/base/AppPressable.tsx"; +import { AppContext } from "@/components/context/ContextProvider.tsx"; + +export const MemberRequestedButton = ({ message, coLiane }: { message: LianeMessage; coLiane: CoLiane }) => { + const { services } = useContext(AppContext); + + const handleAccept = useCallback(async () => { + await services.community.accept(message.content.lianeRequest, coLiane.id!); + }, [coLiane.id, message.content.lianeRequest, services.community]); + + const handleReject = useCallback(async () => { + await services.community.reject(message.content.lianeRequest, coLiane.id!); + }, [coLiane.id, message.content.lianeRequest, services.community]); + + return ( + + + + + Accepter + + + + + + Décliner + + + + ); +}; diff --git a/app/src/screens/communities/MessageBubble.tsx b/app/src/screens/communities/MessageBubble.tsx index 63e93602..255c1bb5 100644 --- a/app/src/screens/communities/MessageBubble.tsx +++ b/app/src/screens/communities/MessageBubble.tsx @@ -1,4 +1,4 @@ -import { capitalize, CoLiane, LianeMessage, Ref, User } from "@liane/common"; +import { capitalize, CoLiane, LianeMessage, MemberRequested, Ref, User } from "@liane/common"; import React from "react"; import { View } from "react-native"; import { AppColorPalettes, AppColors } from "@/theme/colors"; @@ -6,6 +6,7 @@ import { Column, Row } from "@/components/base/AppLayout"; import { AppText } from "@/components/base/AppText"; import { AppLocalization } from "@/api/i18n.ts"; import { UserPicture } from "@/components/UserPicture.tsx"; +import { MemberRequestedButton } from "@/components/trip/MemberRequestedButton.tsx"; export const MessageBubble = ({ coLiane, @@ -54,18 +55,22 @@ export const MessageBubble = ({ marginLeft: isSender ? 56 : 0 }} spacing={4}> - {message.content.type === "Text" ? ( + {message.content.type === "Text" && ( <> {message.content.value} {date} - ) : ( + )} + {message.content.type !== "Text" && ( <> {message.content.value} + {message.content.type === "MemberRequested" && ( + } coLiane={coLiane} /> + )} {date} )}