Explorar el Código

V1.0.11新消息发送

liuq hace 2 semanas
padre
commit
d2eebd419d
Se han modificado 1 ficheros con 9 adiciones y 1 borrados
  1. 9 1
      src/renderer/src/App.tsx

+ 9 - 1
src/renderer/src/App.tsx

@@ -22,6 +22,8 @@ function App(): JSX.Element {
   const { isLoggedIn, token, currentUserId, currentUserName, handleLogin, handleLogout } = useAuth()
   const [activeTab, setActiveTab] = useState<'chat' | 'contact' | 'browser'>('chat')
   const prevActiveTabRef = useRef<'chat' | 'contact' | 'browser'>(activeTab)
+  /** 从通讯录详情「发消息」切到消息 tab 时跳过当次 fetchContacts,避免覆盖刚插入的本地会话 */
+  const skipFetchContactsOnChatFromContactRef = useRef(false)
   const [activeContactId, setActiveContactId] = useState<number | null>(null)
   const activeContactIdRef = useRef(activeContactId)
   const [selectedContactDetail, setSelectedContactDetail] = useState<UserContact | null>(null)
@@ -118,6 +120,11 @@ function App(): JSX.Element {
   useEffect(() => {
     const prev = prevActiveTabRef.current
     if (activeTab === 'chat' && prev !== 'chat' && token) {
+      if (skipFetchContactsOnChatFromContactRef.current) {
+        skipFetchContactsOnChatFromContactRef.current = false
+        prevActiveTabRef.current = activeTab
+        return
+      }
       void fetchContacts().then(() => refreshUnreadCount())
     }
     prevActiveTabRef.current = activeTab
@@ -379,7 +386,8 @@ function App(): JSX.Element {
   // 处理从联系人详情页发送消息
   const handleSendMessageFromContact = (contact: UserContact) => {
     logger.info('App: Send message from contact detail', { contactId: contact.id, contactName: contact.name })
-    
+
+    skipFetchContactsOnChatFromContactRef.current = true
     setActiveTab('chat')
     setSelectedContactDetail(null)