fix(chat): fix chat not using the correct messages selector. (#3180)

* fix(chat): fix chat not using the correct messages selector. Closes #3166

* fix(chat): initial state was incorrect when hiding/showing messages
This commit is contained in:
Gabe Kangas 2023-07-17 13:48:59 -07:00 committed by GitHub
parent b0c50fb8e5
commit 777da508ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 7 deletions

View file

@ -174,7 +174,7 @@ export const ClientConfigStore: FC = () => {
const setAppState = useSetRecoilState<AppStateOptions>(appStateAtom); const setAppState = useSetRecoilState<AppStateOptions>(appStateAtom);
const setGlobalFatalErrorMessage = useSetRecoilState<DisplayableError>(fatalErrorStateAtom); const setGlobalFatalErrorMessage = useSetRecoilState<DisplayableError>(fatalErrorStateAtom);
const setWebsocketService = useSetRecoilState<WebsocketService>(websocketServiceAtom); const setWebsocketService = useSetRecoilState<WebsocketService>(websocketServiceAtom);
const [hiddenMessageIds, setHiddenMessageIds] = useRecoilState<string[]>(removedMessageIdsAtom); const setHiddenMessageIds = useSetRecoilState<string[]>(removedMessageIdsAtom);
const [hasLoadedConfig, setHasLoadedConfig] = useState(false); const [hasLoadedConfig, setHasLoadedConfig] = useState(false);
let ws: WebsocketService; let ws: WebsocketService;
@ -279,11 +279,9 @@ export const ClientConfigStore: FC = () => {
const handleMessageVisibilityChange = (message: MessageVisibilityEvent) => { const handleMessageVisibilityChange = (message: MessageVisibilityEvent) => {
const { ids, visible } = message; const { ids, visible } = message;
if (visible) { if (visible) {
const updatedIds = hiddenMessageIds.filter(id => !ids.includes(id)); setHiddenMessageIds(currentState => currentState.filter(id => !ids.includes(id)));
setHiddenMessageIds(updatedIds);
} else { } else {
const updatedIds = [...hiddenMessageIds, ...ids]; setHiddenMessageIds(currentState => [...currentState, ...ids]);
setHiddenMessageIds(updatedIds);
} }
}; };

View file

@ -10,7 +10,6 @@ import { canPushNotificationsBeSupported } from '../../../utils/browserPushNotif
import { import {
clientConfigStateAtom, clientConfigStateAtom,
chatMessagesAtom,
currentUserAtom, currentUserAtom,
ChatState, ChatState,
chatStateAtom, chatStateAtom,
@ -19,6 +18,7 @@ import {
isMobileAtom, isMobileAtom,
serverStatusState, serverStatusState,
isChatAvailableSelector, isChatAvailableSelector,
visibleChatMessagesSelector,
} from '../../stores/ClientConfigStore'; } from '../../stores/ClientConfigStore';
import { ClientConfig } from '../../../interfaces/client-config.model'; import { ClientConfig } from '../../../interfaces/client-config.model';
@ -103,7 +103,7 @@ export const Content: FC = () => {
const currentUser = useRecoilValue(currentUserAtom); const currentUser = useRecoilValue(currentUserAtom);
const serverStatus = useRecoilValue<ServerStatus>(serverStatusState); const serverStatus = useRecoilValue<ServerStatus>(serverStatusState);
const [isMobile, setIsMobile] = useRecoilState<boolean | undefined>(isMobileAtom); const [isMobile, setIsMobile] = useRecoilState<boolean | undefined>(isMobileAtom);
const messages = useRecoilValue<ChatMessage[]>(chatMessagesAtom); const messages = useRecoilValue<ChatMessage[]>(visibleChatMessagesSelector);
const online = useRecoilValue<boolean>(isOnlineSelector); const online = useRecoilValue<boolean>(isOnlineSelector);
const isChatAvailable = useRecoilValue<boolean>(isChatAvailableSelector); const isChatAvailable = useRecoilValue<boolean>(isChatAvailableSelector);