Skip to content

Commit

Permalink
Merge countdownTimerSlice with roomSlice
Browse files Browse the repository at this point in the history
  • Loading branch information
roman-drozd-it committed Jul 4, 2024
1 parent 0d1e547 commit 26088b6
Show file tree
Hide file tree
Showing 10 changed files with 76 additions and 90 deletions.
6 changes: 3 additions & 3 deletions src/components/countdowntimer/CountdownTimer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ const CountdownTimerDiv = styled('div')(({ theme }) => ({
const CountdownTimer = () : JSX.Element => {
const isMobile = useAppSelector(isMobileSelector);
const dispatch = useAppDispatch();
const isEnabled = useAppSelector((state) => state.countdownTimer.isEnabled);
const isStarted = useAppSelector((state) => state.countdownTimer.isStarted);
const remainingTime = useAppSelector((state) => state.countdownTimer.remainingTime);
const isEnabled = useAppSelector((state) => state.room.countdownTimer.isEnabled);
const isStarted = useAppSelector((state) => state.room.countdownTimer.isStarted);
const remainingTime = useAppSelector((state) => state.room.countdownTimer.remainingTime);

const inputRef = useRef<HTMLDivElement>(null);

Expand Down
6 changes: 3 additions & 3 deletions src/components/countdowntimer/CountdownTimerChip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import moment from 'moment';

const CountdownTimerChip = (): JSX.Element => {
const dispatch = useAppDispatch();
const isEnabled = useAppSelector((state) => state.countdownTimer.isEnabled);
const remainingTime = useAppSelector((state) => state.countdownTimer.remainingTime);
const initialTime = useAppSelector((state) => state.countdownTimer.initialTime);
const isEnabled = useAppSelector((state) => state.room.countdownTimer.isEnabled);
const remainingTime = useAppSelector((state) => state.room.countdownTimer.remainingTime);
const initialTime = useAppSelector((state) => state.room.countdownTimer.initialTime);

const participantListOpen = useAppSelector((state) => state.ui.participantListOpen);

Expand Down
10 changes: 5 additions & 5 deletions src/store/actions/countdownTimerActions.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Logger } from '../../utils/Logger';
import { countdownTimerActions } from '../slices/countdownTimerSlice';
import { roomActions } from '../slices/roomSlice';
import { AppThunk } from '../store';

const logger = new Logger('CountdownTimerActions');
Expand All @@ -22,7 +22,7 @@ AppThunk<Promise<void>> => async (
try {
await signalingService.sendRequest('moderator:enableCountdownTimer');

dispatch(countdownTimerActions.enableCountdownTimer());
dispatch(roomActions.enableCountdownTimer());
} catch (error) {
logger.error('moderator:enableCountdownTimer() [error:"%o"]', error);
}
Expand All @@ -41,7 +41,7 @@ AppThunk<Promise<void>> => async (

// const peerId = getState().me.id;

dispatch(countdownTimerActions.disableCountdownTimer());
dispatch(roomActions.disableCountdownTimer());
} catch (error) {
logger.error('moderator:disableCountdownTimer() [error:"%o"]', error);
}
Expand Down Expand Up @@ -91,9 +91,9 @@ AppThunk<Promise<void>> => async (

signalingService.sendRequest('moderator:setCountdownTimerInitialTime', time);

dispatch(countdownTimerActions.setCountdownTimerRemainingTime(time));
dispatch(roomActions.setCountdownTimerRemainingTime(time));

dispatch(countdownTimerActions.setCountdownTimerInitialTime(time));
dispatch(roomActions.setCountdownTimerInitialTime(time));

} catch (error) {
logger.error('setCountdownTimer() [error:"%o"]', error);
Expand Down
7 changes: 3 additions & 4 deletions src/store/actions/roomActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { initialRoomSession, roomSessionsActions } from '../slices/roomSessionsS
import { getSignalingUrl } from '../../utils/signalingHelpers';
import { getTenantFromFqdn } from './managementActions';
import { Logger } from '../../utils/Logger';
import { countdownTimerActions } from '../slices/countdownTimerSlice';

const logger = new Logger('RoomActions');

Expand Down Expand Up @@ -82,11 +81,11 @@ export const joinRoom = (): AppThunk<Promise<void>> => async (
dispatch(lobbyPeersActions.addPeers(lobbyPeers));
dispatch(roomSessionsActions.addMessages({ sessionId, messages: chatHistory }));
dispatch(roomSessionsActions.addFiles({ sessionId, files: fileHistory }));
dispatch(countdownTimerActions.joinCountdownTimer(countdownTimer));
dispatch(roomActions.joinCountdownTimer(countdownTimer));

dispatch(countdownTimer.isStarted ?
countdownTimerActions.startCountdownTimer() :
countdownTimerActions.stopCountdownTimer()
roomActions.startCountdownTimer() :
roomActions.stopCountdownTimer()
);

});
Expand Down
16 changes: 8 additions & 8 deletions src/store/middlewares/countdownTimerMiddleware.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Middleware } from '@reduxjs/toolkit';
import { Logger } from '../../utils/Logger';

import { countdownTimerActions } from '../slices/countdownTimerSlice';
import { roomActions } from '../slices/roomSlice';
import { signalingActions } from '../slices/signalingSlice';
import { AppDispatch, MiddlewareOptions, RootState } from '../store';
import { notificationsActions } from '../slices/notificationsSlice';
Expand Down Expand Up @@ -29,27 +29,27 @@ const createCountdownTimerMiddleware = ({

case 'moderator:enabledCountdownTimer': {

dispatch(countdownTimerActions.enableCountdownTimer());
dispatch(roomActions.enableCountdownTimer());

break;
}

case 'moderator:disabledCountdownTimer': {

dispatch(countdownTimerActions.disableCountdownTimer());
dispatch(roomActions.disableCountdownTimer());

break;
}
case 'moderator:startedCountdownTimer': {

dispatch(countdownTimerActions.startCountdownTimer());
dispatch(roomActions.startCountdownTimer());

break;
}

case 'moderator:stoppedCountdownTimer': {

dispatch(countdownTimerActions.stopCountdownTimer());
dispatch(roomActions.stopCountdownTimer());

break;
}
Expand All @@ -58,7 +58,7 @@ const createCountdownTimerMiddleware = ({

const time = notification.data;

dispatch(countdownTimerActions.setCountdownTimerInitialTime(time));
dispatch(roomActions.setCountdownTimerInitialTime(time));

break;
}
Expand All @@ -67,7 +67,7 @@ const createCountdownTimerMiddleware = ({

const time = notification.data;

dispatch(countdownTimerActions.setCountdownTimerRemainingTime(time));
dispatch(roomActions.setCountdownTimerRemainingTime(time));

break;
}
Expand All @@ -77,7 +77,7 @@ const createCountdownTimerMiddleware = ({
const isStarted = notification.data.isStarted;
const remainingTime = notification.data.remainingTime;

dispatch(countdownTimerActions.finishCountdownTimer({ isStarted, remainingTime }));
dispatch(roomActions.finishCountdownTimer({ isStarted, remainingTime }));

dispatch(notificationsActions.enqueueNotification({
message: countdownTimerFinishedLabel(),
Expand Down
4 changes: 2 additions & 2 deletions src/store/middlewares/notificationMiddleware.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { lobbyPeersActions } from '../slices/lobbyPeersSlice';
import { peersActions } from '../slices/peersSlice';
import { MiddlewareOptions, RootState } from '../store';
import { roomSessionsActions } from '../slices/roomSessionsSlice';
import { countdownTimerActions } from '../slices/countdownTimerSlice';
import { roomActions } from '../slices/roomSlice';
import { notificationsActions } from '../slices/notificationsSlice';
import { HTMLMediaElementWithSink } from '../../utils/types';
import { settingsActions } from '../slices/settingsSlice';
Expand Down Expand Up @@ -98,7 +98,7 @@ const createNotificationMiddleware = ({
}

// Finished countdownTimer
if (countdownTimerActions.finishCountdownTimer.match(action)) {
if (roomActions.finishCountdownTimer.match(action)) {
playNotificationSounds('finishedCountdownTimer');
}

Expand Down
58 changes: 0 additions & 58 deletions src/store/slices/countdownTimerSlice.tsx

This file was deleted.

49 changes: 48 additions & 1 deletion src/store/slices/roomSlice.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ export type RoomConnectionState = 'new' | 'lobby' | 'joined' | 'left';
export type RoomMode = 'P2P' | 'SFU';
export type VideoCodec = 'vp8' | 'vp9' | 'h264' | 'h265' | 'av1';

interface CountdownTimerState {
isEnabled: boolean;
isStarted: boolean;
initialTime: string;
remainingTime: string;
}

export interface RoomState {
headless?: boolean;
logo?: string;
Expand Down Expand Up @@ -36,9 +43,10 @@ export interface RoomState {
audioCodec?: string;
screenSharingCodec?: VideoCodec;
screenSharingSimulcast?: boolean;
countdownTimer: CountdownTimerState;
}

type RoomUpdate = Omit<RoomState, 'roomMode' | 'state'>;
type RoomUpdate = Omit<RoomState, 'roomMode' | 'state' | 'countdownTimer'>;

const initialState: RoomState = {
logo: edumeetConfig.theme.logo,
Expand All @@ -56,6 +64,12 @@ const initialState: RoomState = {
audioCodec: 'opus',
screenSharingCodec: 'vp8',
screenSharingSimulcast: edumeetConfig.simulcastSharing,
countdownTimer: {
isEnabled: true,
isStarted: false,
initialTime: '00:00:00',
remainingTime: '00:00:00',
},
};

const roomSlice = createSlice({
Expand All @@ -77,6 +91,39 @@ const roomSlice = createSlice({
) => {
state.state = action.payload;
}),
enableCountdownTimer: ((state) => {
state.countdownTimer.isEnabled = true;
}),
disableCountdownTimer: ((state) => {
state.countdownTimer.isEnabled = false;
}),
startCountdownTimer: ((state) => {
state.countdownTimer.isStarted = true;
}),
stopCountdownTimer: ((state) => {
state.countdownTimer.isStarted = false;
}),
setCountdownTimerRemainingTime: ((state, action: PayloadAction<any>) => {

const time = action.payload;

state.countdownTimer.remainingTime = time;
}),
setCountdownTimerInitialTime: ((state, action: PayloadAction<any>) => {

const time = action.payload;

state.countdownTimer.initialTime = time;
}),
finishCountdownTimer: ((state, action: PayloadAction<any>) => {

state.countdownTimer.isStarted = action.payload.isStarted;
state.countdownTimer.remainingTime = action.payload.remainingTime;
}),
joinCountdownTimer: ((state, action: PayloadAction<any>) => {
state.countdownTimer.initialTime = action.payload.initialTime;
state.countdownTimer.remainingTime = action.payload.remainingTime;
}),
}
});

Expand Down
2 changes: 0 additions & 2 deletions src/store/store.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import createNotificationMiddleware from './middlewares/notificationMiddleware';
import createCountdownTimerMiddleware from './middlewares/countdownTimerMiddleware';
import roomSlice from './slices/roomSlice';
import meSlice from './slices/meSlice';
import countdownTimerSlice from './slices/countdownTimerSlice';
import consumersSlice from './slices/consumersSlice';
import signalingSlice from './slices/signalingSlice';
import permissionsSlice from './slices/permissionsSlice';
Expand Down Expand Up @@ -126,7 +125,6 @@ const reducer = combineReducers({
settings: settingsSlice.reducer,
signaling: signalingSlice.reducer,
ui: uiSlice.reducer,
countdownTimer: countdownTimerSlice.reducer,
});

const pReducer = persistReducer<RootState>(persistConfig, reducer);
Expand Down
8 changes: 4 additions & 4 deletions src/views/room/Room.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import HelpButton from '../../components/controlbuttons/HelpButton';
import { useNotifier, useAppSelector, useAppDispatch } from '../../store/hooks';
import moment from 'moment';

import { countdownTimerActions as countdownTimerSlices } from '../../store/slices/countdownTimerSlice';
import { roomActions as roomSlices } from '../../store/slices/roomSlice';

const Room = (): JSX.Element => {
useNotifier();
Expand All @@ -40,8 +40,8 @@ const Room = (): JSX.Element => {

const handleFullscreenChange = () => setFullscreen(fscreen.fullscreenElement !== null);

const remainingTime = useAppSelector((state) => state.countdownTimer.remainingTime);
const isStarted = useAppSelector((state) => state.countdownTimer.isStarted);
const remainingTime = useAppSelector((state) => state.room.countdownTimer.remainingTime);
const isStarted = useAppSelector((state) => state.room.countdownTimer.isStarted);
const dispatch = useAppDispatch();

useEffect(() => {
Expand All @@ -55,7 +55,7 @@ const Room = (): JSX.Element => {

const remainingTimeString = moment.unix(remainingTimeUnix).format('HH:mm:ss');

dispatch(countdownTimerSlices.setCountdownTimerRemainingTime(remainingTimeString));
dispatch(roomSlices.setCountdownTimerRemainingTime(remainingTimeString));

}, 1000);

Expand Down

0 comments on commit 26088b6

Please sign in to comment.