MCPcopy Create free account
hub / github.com/CommE2E/comm / useMessageTargetParameters

Function useMessageTargetParameters

native/chat/utils.js:91–171  ·  view source on GitHub ↗
(
  sourceMessage: ChatMessageInfoItemWithHeight,
  initialCoordinates: LayoutCoordinates,
  messageListVerticalBounds: VerticalBounds,
  currentInputBarHeight: number,
  targetInputBarHeight: number,
  sidebarThreadInfo: ?ThreadInfo,
)

Source from the content-addressed store, hash-verified

89}
90
91function useMessageTargetParameters(
92 sourceMessage: ChatMessageInfoItemWithHeight,
93 initialCoordinates: LayoutCoordinates,
94 messageListVerticalBounds: VerticalBounds,
95 currentInputBarHeight: number,
96 targetInputBarHeight: number,
97 sidebarThreadInfo: ?ThreadInfo,
98): {
99 +position: number,
100 +color: string,
101} {
102 const messageListData = useNativeMessageListData({
103 searching: false,
104 userInfoInputArray: [],
105 threadInfo: sidebarThreadInfo,
106 });
107
108 const [messagesWithHeight, setMessagesWithHeight] =
109 React.useState<?$ReadOnlyArray<ChatMessageItemWithHeight>>(null);
110 const measureMessages = useHeightMeasurer();
111
112 React.useEffect(() => {
113 if (messageListData) {
114 measureMessages(
115 messageListData,
116 sidebarThreadInfo,
117 setMessagesWithHeight,
118 );
119 }
120 }, [measureMessages, messageListData, sidebarThreadInfo]);
121
122 const sourceMessageID = sourceMessage.messageInfo?.id;
123 const targetDistanceFromBottom = React.useMemo(() => {
124 if (!messagesWithHeight) {
125 return 0;
126 }
127
128 let offset = 0;
129 for (const message of messagesWithHeight) {
130 offset += chatMessageItemHeight(message);
131 if (message.messageInfo && message.messageInfo.id === sourceMessageID) {
132 return offset;
133 }
134 }
135
136 return (
137 messageListVerticalBounds.height + chatMessageItemHeight(sourceMessage)
138 );
139 }, [
140 messageListVerticalBounds.height,
141 messagesWithHeight,
142 sourceMessage,
143 sourceMessageID,
144 ]);
145
146 if (!sidebarThreadInfo) {
147 return {
148 position: 0,

Callers 1

Calls 3

useNativeMessageListDataFunction · 0.90
useHeightMeasurerFunction · 0.90
chatMessageItemHeightFunction · 0.85

Tested by

no test coverage detected