@arc-publishing/sdk-identity
Version:
JS Identity SDK for working with Identity API
123 lines • 6.03 kB
JavaScript
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