Skip to content

Commit d212d68

Browse files
committed
Create and wrap application in context for state of socket
1 parent 408dbb8 commit d212d68

File tree

5 files changed

+59
-1
lines changed

5 files changed

+59
-1
lines changed

apps/frontend/src/app/layout.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from "react";
22
import { AntdRegistry } from "@ant-design/nextjs-registry";
33
import { ConfigProvider } from "antd";
4+
import WebSocketProvider from "@/components/WebSocketProvider/websocketprovider";
45

56
const RootLayout = ({
67
children,
@@ -23,7 +24,11 @@ const RootLayout = ({
2324
},
2425
}}
2526
>
26-
<AntdRegistry>{children}</AntdRegistry>
27+
<AntdRegistry>
28+
<WebSocketProvider>
29+
{children}
30+
</WebSocketProvider>
31+
</AntdRegistry>
2732
</ConfigProvider>
2833
</body>
2934
</html>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"use client";
2+
import {
3+
Button,
4+
Layout,
5+
} from "antd";
6+
import { Content } from "antd/es/layout/layout";
7+
import Header from "@/components/Header/header"
8+
import "./styles.scss";
9+
import { useContext } from "react";
10+
import { WebSocketContext } from "@/contexts/websocketcontext";
11+
12+
export default function ProfilePage(): JSX.Element {
13+
const {open, toggle} = useContext(WebSocketContext)! // ! is a null-check
14+
return (
15+
<Layout className="layout">
16+
<Header selectedKey={["0"]} />
17+
<Content className="content">
18+
<Button onClick={toggle}>Toggle me</Button>
19+
<p>{open ? "OPEN" : "CLOSE"}</p>
20+
</Content>
21+
</Layout>
22+
)
23+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@use "../styles.scss"
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use client"
2+
3+
import { ReactNode, useState } from "react"
4+
import { WebSocketContext } from "@/contexts/websocketcontext";
5+
6+
export default function WebSocketProvider({children}: {children: ReactNode}) {
7+
const [open, setOpen] = useState(false)
8+
function toggle() {
9+
if (open) {
10+
setOpen(false)
11+
} else {
12+
setOpen(true)
13+
}
14+
}
15+
16+
return <WebSocketContext.Provider value = {{toggle, open}}>
17+
{children}
18+
</WebSocketContext.Provider>
19+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use client";
2+
import { createContext } from "react";
3+
4+
type SocketState = {
5+
toggle: () => void;
6+
open: boolean;
7+
};
8+
9+
export const WebSocketContext = createContext<SocketState | null>(null);
10+

0 commit comments

Comments
 (0)