56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
import { Space } from "antd";
|
|
import Axios from "axios";
|
|
import queryString from "query-string";
|
|
import { useEffect } from "react";
|
|
import { useCookies } from "react-cookie";
|
|
import { useLocation, useNavigate } from "react-router-dom";
|
|
import QboSignIn from "../../assets/qbo/C2QB_green_btn_med_default.svg";
|
|
import { logImEXEvent } from "../../firebase/firebase.utils";
|
|
|
|
export default function QboAuthorizeComponent() {
|
|
const location = useLocation();
|
|
const history = useNavigate();
|
|
const [setCookie] = useCookies(["access_token", "refresh_token"]);
|
|
|
|
const handleQbSignIn = async () => {
|
|
logImEXEvent("qbo_sign_in_clicked");
|
|
const result = await Axios.post("/qbo/authorize");
|
|
window.location.href = result.data;
|
|
};
|
|
const qs = queryString.parse(location.search);
|
|
|
|
const { error } = qs;
|
|
|
|
useEffect(() => {
|
|
const { code, state, realmId } = qs;
|
|
const hasBeenCalledBack = code && realmId && state;
|
|
|
|
if (hasBeenCalledBack) {
|
|
// setCookie("qbo_code", code, { path: "/" });
|
|
// setCookie("qbo_state", state, { path: "/" });
|
|
|
|
// let expires = new Date();
|
|
// expires.setTime(expires.getTime() + 8726400 * 1000);
|
|
|
|
// setCookie("qbo_realmId", realmId, {
|
|
// path: "/",
|
|
// expires,
|
|
|
|
// ...(process.env.NODE_ENV !== "development"
|
|
// ? { domain: `.${window.location.host}` }
|
|
// : {}),
|
|
// });
|
|
|
|
history({ pathname: `/manage/accounting/receivables` });
|
|
}
|
|
}, [qs, location, setCookie]);
|
|
|
|
return (
|
|
<Space>
|
|
<img onClick={handleQbSignIn} alt="Sign In to QuickBooks Online" src={QboSignIn} style={{ cursor: "pointer" }} />
|
|
|
|
{error && JSON.parse(decodeURIComponent(error)).error_description}
|
|
</Space>
|
|
);
|
|
}
|