Files
jitsi-meet/react/features/polls-history/middleware.ts
Дамян Минков 469406d7cd feat(polls): Move polls to using a component (#16406)
* squash: Renames module.

* squash: Loads polls component.

* squash: Attach needed logic when components/hosts load.

* squash: Moves to use component.

* squash: Uses json-message format with types.

* squash: Checks for polls support.

* squash: Fixes comments and moves validate polls to backend.

* squash: Fix debian build.

* fix(polls): Fixes polls in breakout rooms.

* squash: Further simplify types.

Separate type that needs to go into ljm and those used only for the UI part.
Simplify answer/voter type to be unified across operations which simplifies and its logic.

* squash: Change voters structure to be {id, name}.

* squash: Update react/features/conference/functions.any.ts

Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>

* squash: Drops roomJid from messages. Uses the connection information as breakout does.

---------

Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2025-09-25 16:46:06 -05:00

47 lines
1.3 KiB
TypeScript

import { CONFERENCE_JOINED } from '../base/conference/actionTypes';
import MiddlewareRegistry from '../base/redux/MiddlewareRegistry';
import { REMOVE_POLL, SAVE_POLL } from '../polls/actionTypes';
import { savePoll } from '../polls/actions';
import { removePollFromHistory, savePollInHistory } from './actions';
MiddlewareRegistry.register(({ dispatch, getState }) => next => action => {
const result = next(action);
const { room: meetingId } = getState()['features/base/conference'];
switch (action.type) {
case CONFERENCE_JOINED: {
const state = getState();
const pollsHistory = meetingId && state['features/polls-history'].polls?.[meetingId];
if (!pollsHistory) {
return null;
}
for (const key in pollsHistory) {
if (pollsHistory.hasOwnProperty(key) && pollsHistory[key].saved) {
dispatch(savePoll(pollsHistory[key]));
}
}
break;
}
case REMOVE_POLL: {
const { poll, pollId } = action;
dispatch(removePollFromHistory(meetingId, pollId, poll));
break;
}
case SAVE_POLL: {
const { poll, pollId } = action;
dispatch(savePollInHistory(meetingId, pollId, poll));
break;
}
}
return result;
});