CourierProvider
Make sure you've installed the Courier into your workspace before attempting to integrate these components.
Github Docs: @trycourier/react-provider
All of Courier's react components require the CourierProvider
which is responsible for all the API calls, authentication, and state management.
Check here for more information on the React Context concept.
Installation
yarn add @trycourier/react-provider
or
npm i @trycourier/react-provider
Authentication
No Auth Enabled
import { CourierProvider } from "@trycourier/react-provider";
// const CourierProvider = require("@trycourier/react-provider").CourierProvider;
import { Inbox } from "@trycourier/react-inbox";
// const Inbox = require("@trycourier/react-inbox").Inbox;
function App() {
// YOUR_CLIENT_KEY is a public facing key and can be found at https://app.courier.com/channels/courier
return (
<CourierProvider userId={yourUserId} clientKey={process.env.YOUR_CLIENT_KEY}>
<Inbox />
</CourierProvider>
);
}
JWT Auth Enabled
import { useState, useEffect } from "react";
import { CourierProvider } from "@trycourier/react-provider";
// const CourierProvider = require("@trycourier/react-provider").CourierProvider;
import { Inbox } from "@trycourier/react-inbox";
// const Inbox = require("@trycourier/react-inbox").Inbox;
function App() {
const [authentication, setAuthentication] = useState();
useEffect(() => {
const response = await fetchJWTAuthTokenFromYourBackend();
setAuthentication(response);
}, []);
return (
<CourierProvider userId={yourUserId} authentication={authentication}>
<Inbox />
</CourierProvider>
);
}
HMAC Auth Enabled
import { useState, useEffect } from "react";
import { CourierProvider } from "@trycourier/react-provider";
// const CourierProvider = require("@trycourier/react-provider").CourierProvider;
import { Inbox } from "@trycourier/react-inbox";
// const Inbox = require("@trycourier/react-inbox").Inbox;
function App() {
const [userSignature, setUserSignature] = useState();
useEffect(() => {
const response = await fetchHMACUserSignatureFromYourBackend();
setUserSignature(response);
}, []);
return (
<CourierProvider
clientKey={process.env.CLIENT_KEY}
userId={yourUserId}
userSignature={userSignature}>
<Inbox />
</CourierProvider>
);
}