From f0cb09346d37fc7683fd225bdd8fffaa72372e20 Mon Sep 17 00:00:00 2001 From: cv <34649812+cpvalente@users.noreply.github.com> Date: Mon, 12 Apr 2021 12:50:49 +0200 Subject: [PATCH] refract --- client/src/app/api/playbackApi.js | 14 +-- .../src/features/control/MessageControl.jsx | 27 ++---- .../control/MessageControl.module.css | 5 +- .../src/features/control/PlaybackControl.jsx | 88 ++++++++----------- .../src/features/editors/list/BlockBlock.jsx | 2 + 5 files changed, 55 insertions(+), 81 deletions(-) diff --git a/client/src/app/api/playbackApi.js b/client/src/app/api/playbackApi.js index ebd02135c..cce209bc8 100644 --- a/client/src/app/api/playbackApi.js +++ b/client/src/app/api/playbackApi.js @@ -1,27 +1,29 @@ +import axios from 'axios'; import { serverURL } from './apiConstants'; -const playbackURL = serverURL + 'playback/'; +export const playbackNamespace = 'playback'; +const playbackURL = serverURL + playbackNamespace; export const getStart = async () => { - const res = await fetch(playbackURL + 'start'); + const res = await axios.get(playbackURL + '/start'); return res; }; export const getPause = async () => { - const res = await fetch(playbackURL + 'pause'); + const res = axios.get(playbackURL + '/pause'); return res; }; export const getRoll = async () => { - const res = await fetch(playbackURL + 'roll'); + const res = axios.get(playbackURL + '/roll'); return res; }; export const getPrevious = async () => { - const res = await fetch(playbackURL + 'previous'); + const res = axios.get(playbackURL + '/previous'); return res; }; export const getNext = async () => { - const res = await fetch(playbackURL + 'next'); + const res = axios.get(playbackURL + '/next'); return res; }; diff --git a/client/src/features/control/MessageControl.jsx b/client/src/features/control/MessageControl.jsx index 0c486b269..b772b3f73 100644 --- a/client/src/features/control/MessageControl.jsx +++ b/client/src/features/control/MessageControl.jsx @@ -1,17 +1,10 @@ -import { IconButton } from '@chakra-ui/button'; import { FormControl, FormLabel } from '@chakra-ui/form-control'; -import { FiSun } from 'react-icons/fi'; import { Input } from '@chakra-ui/input'; import { useEffect, useState } from 'react'; import { useSocket } from '../../app/context/socketContext'; +import VisibleIconBtn from '../../common/components/buttons/VisibleIconBtn'; import style from './MessageControl.module.css'; -// Button definition -const btnDef = { - colorScheme: 'blue', - icon: , -}; - export default function MessageControl() { const socket = useSocket(); const [pres, setPres] = useState({ @@ -79,11 +72,10 @@ export default function MessageControl() { } /> - messageControl('toggle-pres-visible')} + messageControl('toggle-pres-visible')} /> @@ -97,11 +89,10 @@ export default function MessageControl() { } /> - messageControl('toggle-publ-visible')} + messageControl('toggle-publ-visible')} /> diff --git a/client/src/features/control/MessageControl.module.css b/client/src/features/control/MessageControl.module.css index 30aba074e..9bc179331 100644 --- a/client/src/features/control/MessageControl.module.css +++ b/client/src/features/control/MessageControl.module.css @@ -1,13 +1,10 @@ .inputContainer, .inputContainerWGap { display: flex; + align-items: flex-end; gap: 1em; } .inputContainerWGap { padding-top: 1em; } - -.btn { - align-self: flex-end; -} diff --git a/client/src/features/control/PlaybackControl.jsx b/client/src/features/control/PlaybackControl.jsx index 35ea80f7d..22b0586ab 100644 --- a/client/src/features/control/PlaybackControl.jsx +++ b/client/src/features/control/PlaybackControl.jsx @@ -1,13 +1,7 @@ import { IconButton } from '@chakra-ui/button'; import style from './PlaybackControl.module.css'; import Countdown from '../../common/components/countdown/Countdown'; -import { - FiPlay, - FiPause, - FiSkipBack, - FiSkipForward, - FiClock, -} from 'react-icons/fi'; +import { FiPause, FiSkipBack, FiSkipForward, FiClock } from 'react-icons/fi'; import { format } from 'date-fns'; import { timeFormatSeconds } from '../../common/dateConfig'; import { useEffect, useState } from 'react'; @@ -19,16 +13,12 @@ import { getNext, } from '../../app/api/playbackApi'; import { useSocket } from '../../app/context/socketContext'; - -// BUTTON DEFINITION -const defProps = { - colorScheme: 'blackAlpha', - variant: 'outline', -}; - -const size = { - width: 90, -}; +import PlayIconButton from '../../common/components/buttons/StartIconBtn'; +import StartIconBtn from '../../common/components/buttons/StartIconBtn'; +import PauseIconBtn from '../../common/components/buttons/PauseIconBtn'; +import PrevIconBtn from '../../common/components/buttons/PrevIconBtn'; +import NextIconBtn from '../../common/components/buttons/NextIconBtn'; +import RollIconBtn from '../../common/components/buttons/RollIconBtn'; export default function PlaybackControl() { const socket = useSocket(); @@ -39,11 +29,18 @@ export default function PlaybackControl() { expectedFinish: null, }); + const updateState = () => { + if (socket == null) return; + + // ask for playstate + socket.emit('get-state'); + }; + // handle incoming messages useEffect(() => { if (socket == null) return; - // ask for playstate - socket.emit('get-playstate'); + + updateState(); // Handle playstate socket.on('playstate', (data) => { @@ -67,11 +64,15 @@ export default function PlaybackControl() { const playbackControl = async (action, payload) => { switch (action) { case 'start': { - await getStart().then((res) => res.ok && setPlayback('start')); + await getStart().then( + (res) => res.statusText === 'OK' && setPlayback('start') + ); break; } case 'pause': { - await getPause().then((res) => res.ok && setPlayback('pause')); + await getPause().then( + (res) => res.statusText === 'OK' && setPlayback('pause') + ); break; } case 'roll': { @@ -79,11 +80,11 @@ export default function PlaybackControl() { break; } case 'previous': { - await getPrevious().then((res) => console.log(res)); + await getPrevious().then(updateState); break; } case 'next': { - await getNext().then((res) => console.log(res)); + await getNext().then(updateState); break; } default: @@ -115,38 +116,19 @@ export default function PlaybackControl() {
- } - colorScheme='green' - onClick={() => playbackControl('start')} - variant={playback === 'start' ? 'solid' : 'outline'} + playbackControl('start')} /> - } - colorScheme='orange' - onClick={() => playbackControl('pause')} - variant={playback === 'pause' ? 'solid' : 'outline'} + playbackControl('pause')} /> - } - onClick={() => playbackControl('previous')} - /> - } - onClick={() => playbackControl('next')} - /> - } - colorScheme='blue' - onClick={() => playbackControl('roll')} - variant={playback === 'roll' ? 'solid' : 'outline'} + playbackControl('previous')} /> + playbackControl('next')} /> + playbackControl('roll')} />
diff --git a/client/src/features/editors/list/BlockBlock.jsx b/client/src/features/editors/list/BlockBlock.jsx index 18367c27f..4aab0a6f9 100644 --- a/client/src/features/editors/list/BlockBlock.jsx +++ b/client/src/features/editors/list/BlockBlock.jsx @@ -1,4 +1,5 @@ import AddIconBtn from '../../../common/components/buttons/AddIconBtn'; +import DelayIconBtn from '../../../common/components/buttons/DelayIconBtn'; import DeleteIconBtn from '../../../common/components/buttons/DeleteIconBtn'; import style from './Block.module.css'; @@ -17,6 +18,7 @@ export default function BlockBlock(props) {
+
);