limiting client side toggle tuning although not scalable with more lines

This commit is contained in:
talksik
2022-05-08 13:51:21 -05:00
parent 853d0ea839
commit 3170aa0215
3 changed files with 32 additions and 5 deletions
+10 -1
View File
@@ -46,7 +46,16 @@ function NirvanaApp() {
<ReactQueryDevtools initialIsOpen={true} position={"bottom-left"} /> <ReactQueryDevtools initialIsOpen={true} position={"bottom-left"} />
</RecoilRoot> </RecoilRoot>
<Toaster /> <Toaster
position={"bottom-center"}
toastOptions={{
style: {
borderRadius: "10px",
background: "#333",
color: "#fff",
},
}}
/>
</QueryClientProvider> </QueryClientProvider>
</> </>
); );
@@ -13,10 +13,11 @@ import { useRecoilState } from "recoil";
export default function LineDetailsTerminal({ export default function LineDetailsTerminal({
selectedLine, selectedLine,
handleToggleTuneToLine,
}: { }: {
selectedLine?: MasterLineData; selectedLine?: MasterLineData;
handleToggleTuneToLine: (lineId: string, turnToggleOn: boolean) => void;
}) { }) {
const { handleTuneToLine } = useLineDataProvider();
const { data: userDetails } = useGetUserDetails(); const { data: userDetails } = useGetUserDetails();
console.log("selected line", selectedLine); console.log("selected line", selectedLine);
@@ -75,11 +76,11 @@ export default function LineDetailsTerminal({
}`} }`}
onClick={() => onClick={() =>
isUserToggleTuned isUserToggleTuned
? handleTuneToLine( ? handleToggleTuneToLine(
selectedLine.lineDetails._id.toString(), selectedLine.lineDetails._id.toString(),
false false
) )
: handleTuneToLine( : handleToggleTuneToLine(
selectedLine.lineDetails._id.toString(), selectedLine.lineDetails._id.toString(),
true true
) )
+18 -1
View File
@@ -13,6 +13,7 @@ import { LineMemberState } from "@nirvana/core/models/line.model";
import LineRow from "../../components/lines/lineRow.tsx/index"; import LineRow from "../../components/lines/lineRow.tsx/index";
import MasterLineData from "@nirvana/core/models/masterLineData.model"; import MasterLineData from "@nirvana/core/models/masterLineData.model";
import NewLineModal from "./newLine"; import NewLineModal from "./newLine";
import toast from "react-hot-toast";
import { useLineDataProvider } from "../../controller/lineDataProvider"; import { useLineDataProvider } from "../../controller/lineDataProvider";
export default function NirvanaTerminal() { export default function NirvanaTerminal() {
@@ -116,6 +117,19 @@ export default function NirvanaTerminal() {
[setSelectedLineId, selectedLine] [setSelectedLineId, selectedLine]
); );
const handleToggleTuneToLine = useCallback(
(lineId: string, turnToggleOn: boolean) => {
if (toggleTunedLines?.length >= 3) {
toast.error("You cannot toggle more than 3 lines!");
return;
}
handleTuneToLine(lineId, turnToggleOn);
},
[toggleTunedLines, handleTuneToLine]
);
const handleStartBroadcast = useCallback( const handleStartBroadcast = useCallback(
(lineId: string) => () => { (lineId: string) => () => {
console.log(`starting broadcast for ${lineId}!!!`); console.log(`starting broadcast for ${lineId}!!!`);
@@ -238,7 +252,10 @@ export default function NirvanaTerminal() {
</div> </div>
</div> </div>
<LineDetailsTerminal selectedLine={selectedLine} /> <LineDetailsTerminal
handleToggleTuneToLine={handleToggleTuneToLine}
selectedLine={selectedLine}
/>
</div> </div>
</> </>
); );