MCPcopy
hub / github.com/yinxin630/fiora / Chat

Function Chat

packages/app/src/pages/Chat/Chat.tsx:64–161  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

62})();
63
64export default function Chat() {
65 const isLogin = useIsLogin();
66 const self = useSelfId();
67 const { focus } = useStore();
68 const linkman = useFocusLinkman();
69 const $messageList = useRef<ScrollView>();
70
71 async function fetchGroupOnlineMembers() {
72 let onlineMembers: Group['members'] = [];
73 if (isLogin) {
74 onlineMembers = await getGroupOnlineMembers(focus);
75 } else {
76 onlineMembers = await getDefaultGroupOnlineMembers();
77 }
78 if (onlineMembers) {
79 action.updateGroupProperty(focus, 'members', onlineMembers);
80 }
81 }
82 async function fetchUserOnlineStatus() {
83 const isOnline = await getUserOnlineStatus(focus.replace(self, ''));
84 action.updateFriendProperty(focus, 'isOnline', isOnline);
85 }
86 useEffect(() => {
87 if (!linkman || !isLogin) {
88 return;
89 }
90 const request =
91 linkman.type === 'group'
92 ? fetchGroupOnlineMembers
93 : fetchUserOnlineStatus;
94 request();
95 const timer = setInterval(() => request(), 1000 * 60);
96 return () => clearInterval(timer);
97 }, [focus, isLogin]);
98
99 useEffect(() => {
100 if (Actions.currentScene !== 'chat') {
101 return;
102 }
103 Actions.refresh({
104 title: formatLinkmanName(linkman as Linkman),
105 });
106 }, [(linkman as Group).members, (linkman as Friend).isOnline]);
107
108 async function intervalUpdateHistory() {
109 if (isLogin && linkman) {
110 if (linkman.messages.length > 0) {
111 const lastMessageId =
112 linkman.messages[linkman.messages.length - 1]._id;
113 if (lastMessageId !== lastMessageIdCache) {
114 lastMessageIdCache = lastMessageId;
115 await fetch('updateHistory', {
116 linkmanId: focus,
117 messageId: lastMessageId,
118 });
119 }
120 }
121 }

Callers

nothing calls this directly

Calls 5

useIsLoginFunction · 0.90
useSelfIdFunction · 0.90
useStoreFunction · 0.90
useFocusLinkmanFunction · 0.90
formatLinkmanNameFunction · 0.90

Tested by

no test coverage detected