@arc-publishing/sdk-identity
Version:
JS Identity SDK for working with Identity API
129 lines • 6.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.dispatchLogoutEvent = exports.facebookSignOut = void 0;
var tslib_1 = require("tslib");
var APIErrorResponse_1 = require("../serviceHelpers/APIErrorResponse");
var identity_1 = tslib_1.__importDefault(require("./identity"));
var constants_1 = require("./constants");
var JSONResponseHandler_1 = tslib_1.__importDefault(require("../serviceHelpers/JSONResponseHandler"));
var getFacebookLoginStatus_1 = tslib_1.__importDefault(require("./getFacebookLoginStatus"));
var socialSignOnTypes_1 = require("./socialSignOnTypes");
var events_1 = require("../utils/events");
function logout() {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var e_1;
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!identity_1.default.userIdentity.accessToken) return [3, 1];
return [2, identity_1.default.heartbeat().then(function () {
return fetch("".concat(identity_1.default.apiOrigin, "/identity/public/v1/auth/token"), {
method: 'DELETE',
headers: tslib_1.__assign({ Authorization: "Bearer ".concat(identity_1.default.userIdentity.accessToken) }, constants_1.headers)
})
.then(JSONResponseHandler_1.default)
.then(function (json) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
identity_1.default.clearSession();
(0, exports.dispatchLogoutEvent)();
return [4, (0, exports.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 ((0, APIErrorResponse_1.isAPIErrorResponse)(json)) {
throw json;
}
else {
return [2, null];
}
return [2];
}
});
}); })
.catch(function (e) {
return Promise.reject(e);
});
})];
case 1:
identity_1.default.clearSession();
(0, exports.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, (0, exports.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');
}
});
});
}
exports.default = logout;
var facebookSignOut = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var facebookLoginStatus;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!window.FB) return [3, 2];
return [4, (0, getFacebookLoginStatus_1.default)()];
case 1:
facebookLoginStatus = _a.sent();
if ((0, socialSignOnTypes_1.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)];
}
});
}); };
exports.facebookSignOut = facebookSignOut;
var dispatchLogoutEvent = function () { return (0, events_1.fireEvent)('ArcSDK.logout'); };
exports.dispatchLogoutEvent = dispatchLogoutEvent;
//# sourceMappingURL=logout.js.map