diff --git a/js/components/MainWindow/Time.tsx b/js/components/MainWindow/Time.tsx index f2a33f76..8030199e 100644 --- a/js/components/MainWindow/Time.tsx +++ b/js/components/MainWindow/Time.tsx @@ -1,32 +1,20 @@ import React from "react"; -import { connect } from "react-redux"; -import { TimeMode, AppState, Dispatch } from "../../types"; -import { getTimeObj } from "../../utils"; +import * as Utils from "../../utils"; import * as Actions from "../../actionCreators"; import * as Selectors from "../../selectors"; import { TIME_MODE } from "../../constants"; +import { useActionCreator, useTypedSelector } from "../../hooks"; -interface StateProps { - timeElapsed: number; - duration: number; - timeMode: TimeMode; -} - -interface DispatchProps { - toggleTimeMode(): void; -} - -const Time = ({ - timeElapsed, - duration, - timeMode, - toggleTimeMode, -}: StateProps & DispatchProps) => { +const Time = React.memo(() => { + const toggleTimeMode = useActionCreator(Actions.toggleTimeMode); + const timeElapsed = useTypedSelector(Selectors.getTimeElapsed); + const duration = useTypedSelector(Selectors.getDuration) || 0; + const timeMode = useTypedSelector(Selectors.getTimeMode); const seconds = timeMode === TIME_MODE.ELAPSED ? timeElapsed : duration - timeElapsed; - const timeObj = getTimeObj(seconds); + const timeObj = Utils.getTimeObj(seconds); return (