diff --git a/src/contexts/ClientContext.tsx b/src/contexts/ClientContext.tsx index dcadd98..1ecaa69 100644 --- a/src/contexts/ClientContext.tsx +++ b/src/contexts/ClientContext.tsx @@ -40,10 +40,6 @@ export default function ClientProvider({ env: "dev", }); - client.enableGroupChat(); - client.registerCodec(new AttachmentCodec()); - client.registerCodec(new RemoteAttachmentCodec()); - setClient(client); setIsLoading(false); })(); diff --git a/src/hooks/useClient.tsx b/src/hooks/useClient.tsx index 0ca8958..76a8293 100644 --- a/src/hooks/useClient.tsx +++ b/src/hooks/useClient.tsx @@ -1,10 +1,23 @@ import { useContext } from "react"; import { ClientContext } from "../contexts/ClientContext"; +import { Client } from "@xmtp/xmtp-js"; +import { + AttachmentCodec, + RemoteAttachmentCodec, +} from "xmtp-content-type-remote-attachment"; export function useClient() { return useContext(ClientContext).client; } export function useSetClient() { - return useContext(ClientContext).setClient; + const setClient = useContext(ClientContext).setClient; + + return (client: Client) => { + client.registerCodec(new AttachmentCodec()); + client.registerCodec(new RemoteAttachmentCodec()); + client.enableGroupChat(); + + setClient(client); + }; } diff --git a/src/views/LoginView.tsx b/src/views/LoginView.tsx index ab19f9e..3272deb 100644 --- a/src/views/LoginView.tsx +++ b/src/views/LoginView.tsx @@ -22,9 +22,6 @@ export default function LoginView(): ReactElement { // Don't do this in real life. localStorage.setItem("_insecurePrivateKey", wallet.privateKey); - client.enableGroupChat(); - client.registerCodec(new AttachmentCodec()); - client.registerCodec(new RemoteAttachmentCodec()); setClient(client); }