import { createContext, ReactNode, useContext } from "react";
import { NavigationNode } from "src/navigation/types";
interface GlobalData {
navigation: NavigationNode;
}
interface Props extends GlobalData {
children: ReactNode;
}
const context = createContext<GlobalData>({} as GlobalData);
export function GlobalProvider({ children, ...props }: Props) {
return (
<context.Provider value={props}>
{children}
</context.Provider>
);
}
export function useGlobalData() {
return useContext(context);
}
fn send_response(stream: &mut TcpStream, response: Response) -> Result<usize, std::io::Error> {
let mut writer = BufWriter::new(stream);
let headers = response
.headers
.iter()
.fold(String::new(), |acc, (header, value)| {
acc + header + ":" + value + "\n"
});
let status_line_and_headers = format!(
"{} {} {}\n{}\n",
response.http_version, response.status, response.status_text, headers
);
writer.write(status_line_and_headers.as_bytes())?;
if let Some(body) = response.body {
writer.write(&body)
} else {
Ok(0)
}
}