Skip to content

Commit

Permalink
accept/reject liane member from chat
Browse files Browse the repository at this point in the history
  • Loading branch information
agjini committed Oct 11, 2024
1 parent 1994d56 commit 0dbb5f4
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 3 deletions.
43 changes: 43 additions & 0 deletions app/src/components/trip/MemberRequestedButton.tsx
Original file line number Diff line number Diff line change
@@ -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<MemberRequested>; 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 (
<Row>
<AppPressableOverlay
backgroundStyle={{ backgroundColor: AppColors.primaryColor, borderRadius: 8 }}
style={{ paddingHorizontal: 12, paddingVertical: 6 }}
onPress={handleAccept}>
<Row style={{ alignItems: "center" }} spacing={6}>
<AppIcon name={"thumb-up"} color={AppColors.white} size={28} />
<AppText style={{ color: AppColors.white, fontWeight: "bold", fontSize: 18 }}>Accepter</AppText>
</Row>
</AppPressableOverlay>
<AppPressableOverlay
backgroundStyle={{ backgroundColor: AppColors.primaryColor, borderRadius: 8 }}
style={{ paddingHorizontal: 12, paddingVertical: 6 }}
onPress={handleReject}>
<Row style={{ alignItems: "center" }} spacing={6}>
<AppIcon name={"thumb-up"} color={AppColors.white} size={28} />
<AppText style={{ color: AppColors.white, fontWeight: "bold", fontSize: 18 }}>Décliner</AppText>
</Row>
</AppPressableOverlay>
</Row>
);
};
11 changes: 8 additions & 3 deletions app/src/screens/communities/MessageBubble.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
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";
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,
Expand Down Expand Up @@ -54,18 +55,22 @@ export const MessageBubble = ({
marginLeft: isSender ? 56 : 0
}}
spacing={4}>
{message.content.type === "Text" ? (
{message.content.type === "Text" && (
<>
<AppText numberOfLines={-1} style={{ fontSize: 15, color }}>
{message.content.value}
</AppText>
<AppText style={{ fontSize: 12, alignSelf: isSender ? "flex-end" : "flex-start", color }}>{date}</AppText>
</>
) : (
)}
{message.content.type !== "Text" && (
<>
<AppText numberOfLines={-1} style={{ fontSize: 12 }}>
{message.content.value}
</AppText>
{message.content.type === "MemberRequested" && (
<MemberRequestedButton message={message as LianeMessage<MemberRequested>} coLiane={coLiane} />
)}
<AppText style={{ fontSize: 12, alignSelf: isSender ? "flex-end" : "flex-start", color }}>{date}</AppText>
</>
)}
Expand Down

0 comments on commit 0dbb5f4

Please sign in to comment.