react-native-gigya-sdk
Version:
SAP CDC/Gigya SDK for your React Native applications
98 lines (78 loc) • 3.63 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _reactNative = require("react-native");
var _types = require("../types");
var _getState = _interopRequireDefault(require("./getState"));
var _sendApiCall = _interopRequireDefault(require("./sendApiCall"));
var _isGigyaError = _interopRequireDefault(require("./isGigyaError"));
var _getAccountInfo = _interopRequireDefault(require("./getAccountInfo"));
var _state = require("../internals/state");
var _handleSdkCall = _interopRequireDefault(require("../internals/handleSdkCall"));
var _clearErrorState = _interopRequireDefault(require("../internals/clearErrorState"));
var _saveAuthenticationAttempt = _interopRequireDefault(require("../internals/saveAuthenticationAttempt"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const {
GigyaSdk
} = _reactNative.NativeModules;
function _default(loginID, password, options) {
return new Promise(async (resolve, reject) => {
const state = await (0, _getState.default)();
const isUsingLinkAccountV1 = state.linkAccountVersion === _types.GigyaSdkLinkAccountVersions.V1;
const resolvePromise = async output => {
try {
await (0, _clearErrorState.default)();
} catch (err) {}
resolve(output);
};
try {
const sessionInfo = (options === null || options === void 0 ? void 0 : options.sessionInfo) || state.sessionInfo;
if (isUsingLinkAccountV1) {
var _state$regToken;
const response = await (0, _sendApiCall.default)('accounts.linkAccounts', {
loginID,
password,
targetEnv: 'mobile',
...((options === null || options === void 0 ? void 0 : options.noUID) && {
regToken: (options === null || options === void 0 ? void 0 : options.regToken) || ((_state$regToken = state.regToken) === null || _state$regToken === void 0 ? void 0 : _state$regToken.value)
}),
...(!(options !== null && options !== void 0 && options.noUID) && {
UID: (options === null || options === void 0 ? void 0 : options.UID) || state.UID
}),
...((options === null || options === void 0 ? void 0 : options.include) && {
include: options === null || options === void 0 ? void 0 : options.include
})
});
return resolvePromise(response);
} else {
if (!(sessionInfo !== null && sessionInfo !== void 0 && sessionInfo.provider)) throw new Error("no 'sessionInfo.provider' param provided");else if (!(sessionInfo !== null && sessionInfo !== void 0 && sessionInfo.access_token)) throw new Error("no 'sessionInfo.access_token' param provided");
const existingAccount = await (0, _handleSdkCall.default)(GigyaSdk.login(loginID, password, '{}'));
await (0, _state.setState)({
UID: existingAccount.UID
});
await (0, _sendApiCall.default)('accounts.notifySocialLogin', {
targetEnv: 'mobile',
loginMode: 'connect',
providerSessions: {
[sessionInfo.provider]: {
authToken: sessionInfo.access_token
}
}
});
return resolvePromise(await (0, _getAccountInfo.default)());
}
} catch (e) {
if (!isUsingLinkAccountV1 && (await (0, _isGigyaError.default)(e))) {
try {
await (0, _saveAuthenticationAttempt.default)('site', e);
} catch (err) {
return reject(err);
}
}
reject(e);
}
});
}
//# sourceMappingURL=linkToSite.js.map