diff --git a/samples/react-native-group-chat/components/list-item/ListItem.tsx b/samples/react-native-group-chat/components/list-item/ListItem.tsx
index 2f7b853e..d608b7a2 100644
--- a/samples/react-native-group-chat/components/list-item/ListItem.tsx
+++ b/samples/react-native-group-chat/components/list-item/ListItem.tsx
@@ -35,7 +35,7 @@ export function ListItem({ title, avatar, badge, onPress, showCheckbox, checked
{badge ? (
- 5
+ {badge}
) : null}
@@ -59,6 +59,7 @@ const styles = StyleSheet.create({
},
title: {
paddingHorizontal: 16,
+ flexGrow: 1,
},
badge: {
backgroundColor: colors.badge,
diff --git a/samples/react-native-group-chat/components/user-suggestion-box/UserSuggestionBox.tsx b/samples/react-native-group-chat/components/user-suggestion-box/UserSuggestionBox.tsx
index fcdfd630..483ac90f 100644
--- a/samples/react-native-group-chat/components/user-suggestion-box/UserSuggestionBox.tsx
+++ b/samples/react-native-group-chat/components/user-suggestion-box/UserSuggestionBox.tsx
@@ -13,7 +13,7 @@ export function UserSuggestionBox({ users, onUserSelect }: UserSuggestionBoxProp
return (
{users.map((user) => (
- onUserSelect(user)} />
+ onUserSelect(user)} />
))}
)
diff --git a/samples/react-native-group-chat/screens/tabs/mentions/MentionsScreen.tsx b/samples/react-native-group-chat/screens/tabs/mentions/MentionsScreen.tsx
index 2e712adc..45dc1349 100644
--- a/samples/react-native-group-chat/screens/tabs/mentions/MentionsScreen.tsx
+++ b/samples/react-native-group-chat/screens/tabs/mentions/MentionsScreen.tsx
@@ -1,10 +1,108 @@
-import React from "react";
-import { View, Text } from "react-native";
+import React, { useContext, useState } from "react"
+import { View, StyleSheet, ScrollView, TouchableHighlight, ActivityIndicator } from "react-native"
+import { useFocusEffect } from "@react-navigation/native"
+import { UserMentionData, TimetokenUtils } from "@pubnub/chat"
+import { BottomTabScreenProps } from "@react-navigation/bottom-tabs"
+
+import { colorPalette as colors, Line, Text } from "../../../ui-components"
+import { ChatContext } from "../../../context"
+import { Avatar } from "../../../components"
+import { BottomTabsParamList } from "../../../types"
+
+export function MentionsScreen({
+ navigation,
+}: BottomTabScreenProps) {
+ const { chat, setCurrentChannel } = useContext(ChatContext)
+ const [mentions, setMentions] = useState([])
+ const [loading, setLoading] = useState(true)
+
+ async function openChannel(channelId: string) {
+ if (!chat) return
+ const channel = await chat.getChannel(channelId)
+ if (!channel) {
+ alert("This channel no longer exists.")
+ return
+ }
+ setCurrentChannel(channel)
+ navigation.navigate("Chat")
+ }
+
+ useFocusEffect(() => {
+ const init = async () => {
+ if (!chat) return
+ const { enhancedMentionsData } = await chat.getCurrentUserMentions()
+ setMentions(enhancedMentionsData.reverse())
+ setLoading(false)
+ }
+ if (chat) init()
+ })
+
+ if (loading || !mentions.length) {
+ return (
+
+ {loading ? (
+
+ ) : (
+ No mentions found.
+ )}
+
+ )
+ }
-export function MentionsScreen() {
return (
-
- Mentions screen
-
+
+ {mentions.map((mention, index) => (
+
+ openChannel(mention.message.channelId)}
+ underlayColor={colors.neutral50}
+ >
+
+
+ {TimetokenUtils.timetokenToDate(mention.message.timetoken).toLocaleString([], {
+ weekday: "short",
+ month: "short",
+ day: "numeric",
+ hour: "numeric",
+ minute: "numeric",
+ })}
+
+
+
+
+ {mention.message.text}
+
+
+
+
+ {index !== mentions.length - 1 && }
+
+ ))}
+
)
}
+
+const styles = StyleSheet.create({
+ loading: {
+ backgroundColor: colors.neutral0,
+ flex: 1,
+ justifyContent: "center",
+ },
+ container: {
+ backgroundColor: colors.neutral0,
+ flex: 1,
+ padding: 16,
+ },
+ message: {
+ flexDirection: "row",
+ marginTop: 10,
+ marginLeft: 10,
+ },
+ bubble: {
+ backgroundColor: colors.neutral50,
+ borderRadius: 6,
+ borderTopLeftRadius: 0,
+ marginLeft: 10,
+ padding: 10,
+ },
+})
diff --git a/samples/react-native-group-chat/ui-components/line/Line.tsx b/samples/react-native-group-chat/ui-components/line/Line.tsx
index be7b393c..a750e2e5 100644
--- a/samples/react-native-group-chat/ui-components/line/Line.tsx
+++ b/samples/react-native-group-chat/ui-components/line/Line.tsx
@@ -1,6 +1,9 @@
import React from "react"
-import { View } from "react-native"
+import { View, ViewProps } from "react-native"
-export function Line() {
- return
+export function Line(props: ViewProps) {
+ const { style, ...rest } = props
+ return (
+
+ )
}