|
@@ -67,6 +67,8 @@ const Main: FC<IMainProps> = ({
|
|
|
* conversation info
|
|
|
*/
|
|
|
const [allConversationList, setAllConversationList] = useState<ConversationItem[]>([])
|
|
|
+ const [isClearConversationList, { setTrue: clearConversationListTrue, setFalse: clearConversationListFalse }] = useBoolean(false)
|
|
|
+ const [isClearPinnedConversationList, { setTrue: clearPinnedConversationListTrue, setFalse: clearPinnedConversationListFalse }] = useBoolean(false)
|
|
|
const {
|
|
|
conversationList,
|
|
|
setConversationList,
|
|
@@ -89,18 +91,32 @@ const Main: FC<IMainProps> = ({
|
|
|
const [hasPinnedMore, setHasPinnedMore] = useState<boolean>(true)
|
|
|
const onMoreLoaded = ({ data: conversations, has_more }: any) => {
|
|
|
setHasMore(has_more)
|
|
|
- setConversationList([...conversationList, ...conversations])
|
|
|
+ if (isClearConversationList) {
|
|
|
+ setConversationList(conversations)
|
|
|
+ clearConversationListFalse()
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ setConversationList([...conversationList, ...conversations])
|
|
|
+ }
|
|
|
}
|
|
|
const onPinnedMoreLoaded = ({ data: conversations, has_more }: any) => {
|
|
|
setHasPinnedMore(has_more)
|
|
|
- setPinnedConversationList([...pinnedConversationList, ...conversations])
|
|
|
+ if (isClearPinnedConversationList) {
|
|
|
+ setPinnedConversationList(conversations)
|
|
|
+ clearPinnedConversationListFalse()
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ setPinnedConversationList([...pinnedConversationList, ...conversations])
|
|
|
+ }
|
|
|
}
|
|
|
const [controlUpdateConversationList, setControlUpdateConversationList] = useState(0)
|
|
|
const noticeUpdateList = () => {
|
|
|
- setConversationList([])
|
|
|
setHasMore(true)
|
|
|
- setPinnedConversationList([])
|
|
|
+ clearConversationListTrue()
|
|
|
+
|
|
|
setHasPinnedMore(true)
|
|
|
+ clearPinnedConversationListTrue()
|
|
|
+
|
|
|
setControlUpdateConversationList(Date.now())
|
|
|
}
|
|
|
const handlePin = async (id: string) => {
|
|
@@ -126,6 +142,9 @@ const Main: FC<IMainProps> = ({
|
|
|
await delConversation(isInstalledApp, installedAppInfo?.id, toDeleteConversationId)
|
|
|
notify({ type: 'success', message: t('common.api.success') })
|
|
|
hideConfirm()
|
|
|
+ if (currConversationId === toDeleteConversationId)
|
|
|
+ handleConversationIdChange('-1')
|
|
|
+
|
|
|
noticeUpdateList()
|
|
|
}
|
|
|
|
|
@@ -496,7 +515,9 @@ const Main: FC<IMainProps> = ({
|
|
|
return (
|
|
|
<Sidebar
|
|
|
list={conversationList}
|
|
|
+ isClearConversationList={isClearConversationList}
|
|
|
pinnedList={pinnedConversationList}
|
|
|
+ isClearPinnedConversationList={isClearPinnedConversationList}
|
|
|
onMoreLoaded={onMoreLoaded}
|
|
|
onPinnedMoreLoaded={onPinnedMoreLoaded}
|
|
|
isNoMore={!hasMore}
|