UNPKG

@arc-publishing/sdk-identity

Version:
123 lines 6.03 kB
import { __assign, __awaiter, __generator } from "tslib"; import { isAPIErrorResponse } from '../serviceHelpers/APIErrorResponse'; import Identity from './identity'; import { headers } from './constants'; import JSONResponseHandler from '../serviceHelpers/JSONResponseHandler'; import getFacebookLoginStatus from './getFacebookLoginStatus'; import { isFacebookLoginResponse } from './socialSignOnTypes'; import { fireEvent } from '../utils/events'; export default function logout() { return __awaiter(this, void 0, void 0, function () { var e_1; var _this = this; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!Identity.userIdentity.accessToken) return [3, 1]; return [2, Identity.heartbeat().then(function () { return fetch("".concat(Identity.apiOrigin, "/identity/public/v1/auth/token"), { method: 'DELETE', headers: __assign({ Authorization: "Bearer ".concat(Identity.userIdentity.accessToken) }, headers) }) .then(JSONResponseHandler) .then(function (json) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: Identity.clearSession(); dispatchLogoutEvent(); return [4, facebookSignOut()]; case 1: _a.sent(); if (globalThis.gapi) { try { globalThis.gapi.auth2.getAuthInstance().signOut(); } catch (e) { console.error('error signing out of google', e); } } if (globalThis.google) { try { globalThis.google.accounts.id.disableAutoSelect(); } catch (e) { console.error('[Arc Identity SDK]: error signing out of google', e); } } if (isAPIErrorResponse(json)) { throw json; } else { return [2, null]; } return [2]; } }); }); }) .catch(function (e) { return Promise.reject(e); }); })]; case 1: Identity.clearSession(); dispatchLogoutEvent(); if (globalThis.gapi) { try { globalThis.gapi.auth2.getAuthInstance().signOut(); } catch (e) { console.error('error signing out of google', e); } } if (globalThis.google) { try { globalThis.google.accounts.id.disableAutoSelect(); } catch (e) { console.error('[Arc Identity SDK]: error signing out of google', e); } } _a.label = 2; case 2: _a.trys.push([2, 4, , 5]); return [4, facebookSignOut()]; case 3: _a.sent(); return [3, 5]; case 4: e_1 = _a.sent(); console.error('error signing out of facebook', e_1); return [3, 5]; case 5: throw new Error('No access token found, user is already logged out'); } }); }); } export var facebookSignOut = function () { return __awaiter(void 0, void 0, void 0, function () { var facebookLoginStatus; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!window.FB) return [3, 2]; return [4, getFacebookLoginStatus()]; case 1: facebookLoginStatus = _a.sent(); if (isFacebookLoginResponse(facebookLoginStatus) && facebookLoginStatus.status === 'connected') { try { return [2, window.FB.logout(function () { return Promise.resolve(null); })]; } catch (e) { return [2, Promise.reject(e)]; } } _a.label = 2; case 2: return [2, Promise.resolve(null)]; } }); }); }; export var dispatchLogoutEvent = function () { return fireEvent('ArcSDK.logout'); }; //# sourceMappingURL=logout.js.map