-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
// SPDX-FileCopyrightText: 2025 Shota FUJI <pockawoooh@gmail.com>
// SPDX-License-Identifier: AGPL-3.0-only
import { type Transport } from "@connectrpc/connect";
import { createContext, type FC, type ReactNode, use } from "react";
const Context = createContext<Transport | null>(null);
export interface ConnectTransportProviderProps {
children: ReactNode;
transport: Transport;
}
export const ConnectTransportProvider: FC<ConnectTransportProviderProps> = ({
children,
transport,
}) => {
return <Context.Provider value={transport}>{children}</Context.Provider>;
};
export function useConnectTransport(): Transport {
const transport = use(Context);
if (!transport) {
throw new Error("`useConnectTransport` called outside `ConnectTransportProvider`");
}
return transport;
}