@xo-union/tk-component-header-nav
Version:
84 lines (83 loc) • 3.14 kB
JavaScript
;
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property");
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/find"));
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/includes"));
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/json/stringify"));
const PLANNING_TOOLS_URL = process.env.UNION_DEPLOYMENT_ENV === 'production' ? 'https://prod.bluecard.theknot.com/api/v2/result' : 'https://qa.bluecard.theknot.com/api/v2/result';
const GUEST_FED_URL = process.env.UNION_DEPLOYMENT_ENV === 'production' ? 'https://graphql.guests.theknot.com/graphql' : 'https://qa-graphql.guests.theknot.com/graphql';
const GUEST_FED_API_KEY = process.env.UNION_DEPLOYMENT_ENV === 'production' ? '2gr5fNa22D1S7wLi8dRG26akkp4sy6JFai4O3tva' : '9S0scH6dss5QOzcrFuAHw95VQBa1sgoC7xDGQnpn';
const getSessionToken = () => {
try {
var _context;
return (0, _find.default)(_context = document.cookie.split(';')).call(_context, x => (0, _includes.default)(x).call(x, 'xo-session-token')).split('=')[1];
} catch {
return undefined;
}
};
class DataFetcher {
static async fetchHasWeddingVision() {
const memberSessionToken = getSessionToken();
if (!memberSessionToken) {
return false;
}
const headers = new Headers();
headers.append('xo-member-token', memberSessionToken);
const requestOptions = {
method: 'GET',
headers,
mode: 'cors'
};
let response;
try {
response = await fetch(PLANNING_TOOLS_URL, requestOptions);
} catch {
return false;
}
if (response.status !== 200) {
return false;
}
const body = await response.json();
if ('color_recommendation' in body && 'style_recommendation' in body) {
return true;
}
return false;
}
static async fetchWeddingWebsiteAttributes() {
const memberSessionToken = getSessionToken();
if (!memberSessionToken) {
return false;
}
const headers = new Headers();
headers.append('x-api-key', GUEST_FED_API_KEY);
headers.append('token', memberSessionToken);
headers.append('Content-Type', 'application/json');
const graphql = (0, _stringify.default)({
query: '{weddingWebsite {slug state}}'
});
const requestOptions = {
method: 'POST',
headers,
body: graphql
};
let response;
const defaultAttributes = {
slug: '',
state: 'unpublished'
};
try {
var _body$data;
response = await fetch(GUEST_FED_URL, requestOptions);
const body = await response.json();
return (body === null || body === void 0 ? void 0 : (_body$data = body.data) === null || _body$data === void 0 ? void 0 : _body$data.weddingWebsite) || defaultAttributes;
} catch {
return defaultAttributes;
}
}
}
var _default = DataFetcher;
exports.default = _default;