react-native-klarna-inapp-sdk
Version:
This library wraps Klarna Mobile SDK and exposes its functionality as React Native components.
80 lines (79 loc) • 2.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.KlarnaSignInSDK = void 0;
var _NativeKlarnaSignIn = _interopRequireDefault(require("./specs/NativeKlarnaSignIn"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
// declare a class that receive the KlarnaSignInProps in the initializer and expose a method to sign in
class KlarnaSignInSDK {
constructor(props, instanceId) {
this.environment = props.environment;
this.region = props.region;
this.returnUrl = props.returnUrl;
this.instanceId = instanceId;
}
static async createInstance(props) {
if (props.returnUrl.trim() === '') {
return new Promise((_, reject) => {
const sdkError = {
isFatal: true,
message: 'Invalid or null return URL',
name: 'KlarnaSignInMissingReturnUrl'
};
reject(sdkError);
});
}
return new Promise((resolve, reject) => {
let instanceId = Math.random().toString(36).substring(2, 15);
_NativeKlarnaSignIn.default.init(instanceId, props.environment, props.region, props.returnUrl).then(_ => {
resolve(new KlarnaSignInSDK(props, instanceId));
}).catch(error => {
const errorInfo = error.userInfo;
const sdkError = {
isFatal: errorInfo.isFatal,
message: errorInfo.message,
name: errorInfo.name,
sessionId: errorInfo.sessionId,
params: errorInfo.params
};
reject(sdkError);
});
});
}
dispose() {
return _NativeKlarnaSignIn.default.dispose(this.instanceId);
}
signIn(clientId, scope, market, locale, tokenizationId) {
const scopes = scope.split(' ');
const tokenizationScopes = ['payment:customer_not_present', 'payment:customer_present'];
const isTokenizationScopeIncluded = tokenizationScopes.some(value => scopes.includes(value));
if (isTokenizationScopeIncluded && (!tokenizationId || tokenizationId.trim() === '')) {
return new Promise((_, reject) => {
const sdkError = {
isFatal: false,
message: `Found ${tokenizationScopes} in scope but tokenizationId is empty.`,
name: 'KlarnaSignInMissingTokenizationId'
};
reject(sdkError);
});
}
return new Promise((resolve, reject) => {
_NativeKlarnaSignIn.default.signIn(this.instanceId, clientId, scope, market, locale, tokenizationId).then(result => {
resolve(result);
}).catch(error => {
const errorInfo = error.userInfo;
const sdkError = {
isFatal: errorInfo.isFatal,
message: errorInfo.message,
name: errorInfo.name,
sessionId: errorInfo.sessionId,
params: errorInfo.params
};
reject(sdkError);
});
});
}
}
exports.KlarnaSignInSDK = KlarnaSignInSDK;
//# sourceMappingURL=KlarnaSignInSDK.js.map