react-use-wyre
Version:
🤑 React.js hooks for making payments using SendWyre. https://docs.sendwyre.com/
45 lines (44 loc) • 1.75 kB
JavaScript
import * as React from "react";
import { SendWyreContext } from "../contexts";
import { wyre as makeRequest } from "../requests";
import { AuthenticationType } from "../types";
const { useCallback } = React;
const SendWyre = function ({ apiKey, secretKey, authenticationType, partnerId, apiUrl, baseUrl, children, ...extras }) {
if (typeof partnerId !== "string") {
throw new Error(`SendWyre: Expected String partnerId, encountered ${partnerId}.`);
}
else if (typeof secretKey !== "string") {
throw new Error(`SendWyre: Expected String secretKey, encountered ${secretKey}.`);
}
if (authenticationType === AuthenticationType.SECRET_KEY_SIGNATURE &&
typeof apiKey !== "string") {
throw new Error(`SendWyre: Expected String apiKey, encountered ${apiKey}.`);
}
const wyre = useCallback(({ url, method, data }, overrides = {}) => {
if (!overrides || typeof overrides !== "object") {
throw new Error(`Expected object overrides, encountered ${overrides} (${typeof overrides}).`);
}
return makeRequest({
apiKey,
secretKey,
authenticationType,
apiUrl,
baseUrl,
url,
method,
data,
...overrides,
});
}, [secretKey, apiKey, apiUrl, baseUrl]);
return (React.createElement(SendWyreContext.Provider, Object.assign({}, extras, { value: { wyre, partnerId } }), children));
};
SendWyre.displayName = "SendWyre";
SendWyre.defaultProps = {
apiKey: null,
secretKey: null,
authenticationType: AuthenticationType.SECRET_KEY_SIGNATURE,
partnerId: null,
baseUrl: "",
apiUrl: "https://api.testwyre.com",
};
export default SendWyre;