MCPcopy Create free account
hub / github.com/VadimNotJustDev/SignalClone / Message

Function Message

components/Message/Message.tsx:30–221  ·  view source on GitHub ↗
(props)

Source from the content-addressed store, hash-verified

28const grey = "lightgrey";
29
30const Message = (props) => {
31 const { setAsMessageReply, message: propMessage } = props;
32
33 const [message, setMessage] = useState<MessageModel>(propMessage);
34 const [decryptedContent, setDecryptedContent] = useState("");
35 const [repliedTo, setRepliedTo] = useState<MessageModel | undefined>(
36 undefined
37 );
38 const [user, setUser] = useState<User | undefined>();
39 const [isMe, setIsMe] = useState<boolean | null>(null);
40 const [soundURI, setSoundURI] = useState<any>(null);
41 const [isDeleted, setIsDeleted] = useState(false);
42
43 const { width } = useWindowDimensions();
44 const { showActionSheetWithOptions } = useActionSheet();
45
46 useEffect(() => {
47 DataStore.query(User, message.userID).then(setUser);
48 }, []);
49
50 useEffect(() => {
51 setMessage(propMessage);
52 }, [propMessage]);
53
54 useEffect(() => {
55 if (message?.replyToMessageID) {
56 DataStore.query(MessageModel, message.replyToMessageID).then(
57 setRepliedTo
58 );
59 }
60 }, [message]);
61
62 useEffect(() => {
63 const subscription = DataStore.observe(MessageModel, message.id).subscribe(
64 (msg) => {
65 if (msg.model === MessageModel) {
66 if (msg.opType === "UPDATE") {
67 setMessage((message) => ({ ...message, ...msg.element }));
68 } else if (msg.opType === "DELETE") {
69 setIsDeleted(true);
70 }
71 }
72 }
73 );
74
75 return () => subscription.unsubscribe();
76 }, []);
77
78 useEffect(() => {
79 setAsRead();
80 }, [isMe, message]);
81
82 useEffect(() => {
83 if (message.audio) {
84 Storage.get(message.audio).then(setSoundURI);
85 }
86 }, [message]);
87

Callers

nothing calls this directly

Calls 3

setAsReadFunction · 0.85
decryptMessageFunction · 0.85
checkIfMeFunction · 0.70

Tested by

no test coverage detected