react-native-smallcase-gateway 5.3.2 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/com/reactnativesmallcasegateway/SCGatewayBridgeEmitter.kt +112 -0
  4. package/android/src/main/java/com/reactnativesmallcasegateway/SCLoansBridgeEmitter.kt +117 -0
  5. package/android/src/main/java/com/reactnativesmallcasegateway/SmallcaseGatewayModule.kt +0 -5
  6. package/android/src/main/java/com/reactnativesmallcasegateway/SmallcaseGatewayPackage.kt +5 -1
  7. package/ios/SCGatewayBridgeEmitter.m +20 -0
  8. package/ios/SCGatewayEmitter.swift +117 -0
  9. package/ios/SCLoansBridgeEmitter.m +20 -0
  10. package/ios/SCLoansEmitter.swift +115 -0
  11. package/ios/SmallcaseGateway-Bridging-Header.h +7 -0
  12. package/lib/commonjs/SCGatewayEventEmitter.js +107 -0
  13. package/lib/commonjs/SCGatewayEventEmitter.js.map +1 -0
  14. package/lib/commonjs/SCLoansEventEmitter.js +103 -0
  15. package/lib/commonjs/SCLoansEventEmitter.js.map +1 -0
  16. package/lib/commonjs/SmallcaseGateway.js.map +1 -1
  17. package/lib/commonjs/index.js +27 -0
  18. package/lib/commonjs/index.js.map +1 -1
  19. package/lib/module/SCGatewayEventEmitter.js +102 -0
  20. package/lib/module/SCGatewayEventEmitter.js.map +1 -0
  21. package/lib/module/SCLoansEventEmitter.js +98 -0
  22. package/lib/module/SCLoansEventEmitter.js.map +1 -0
  23. package/lib/module/SmallcaseGateway.js.map +1 -1
  24. package/lib/module/index.js +3 -1
  25. package/lib/module/index.js.map +1 -1
  26. package/package.json +1 -1
  27. package/react-native-smallcase-gateway.podspec +2 -2
  28. package/src/SCGatewayEventEmitter.js +121 -0
  29. package/src/SCLoansEventEmitter.js +116 -0
  30. package/src/SmallcaseGateway.js +1 -1
  31. package/src/index.js +3 -1
  32. package/types/index.d.ts +45 -2
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","ENV","safeObject","platformSpecificColorHex","version","SmallcaseGateway","SmallcaseGatewayNative","defaultBrokerList","setConfigEnvironment","envConfig","safeConfig","setHybridSdkVersion","brokerList","gatewayName","isLeprechaun","isAmoEnabled","environmentName","safeIsLeprechaun","Boolean","safeIsAmoEnabled","safeBrokerList","Array","isArray","safeGatewayName","safeEnvName","PROD","init","sdkToken","safeToken","triggerTransaction","transactionId","utmParams","safeUtm","safeId","length","triggerMfTransaction","console","warn","safeTransactionId","launchSmallplug","targetEndpoint","params","safeEndpoint","safeParams","launchSmallplugWithBranding","headerColor","headerOpacity","backIconColor","backIconOpacity","safeHeaderColor","safeHeaderOpacity","safeBackIconColor","safeBackIconOpacity","logoutUser","showOrders","triggerLeadGen","userDetails","triggerLeadGenWithStatus","triggerLeadGenWithLoginCta","showLoginCta","safeShowLoginCta","archiveSmallcase","iscid","safeIscid","getSdkVersion"],"sources":["SmallcaseGateway.js"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\nimport { ENV } from './constants';\nimport { safeObject, platformSpecificColorHex } from './util';\nimport { version } from '../package.json';\nconst { SmallcaseGateway: SmallcaseGatewayNative } = NativeModules;\n\n/**\n *\n * @typedef {Object} envConfig\n * @property {string} gatewayName - unique name on consumer\n * @property {boolean} isLeprechaun - leprechaun mode toggle\n * @property {boolean} isAmoEnabled - support AMO (subject to broker support)\n * @property {Array<string>} brokerList - list of broker names\n * @property {'production' | 'staging' | 'development'} environmentName - environment name\n *\n * @typedef {Object} transactionRes\n * @property {string} data - response data\n * @property {boolean} success - success flag\n * @property {Number} [errorCode] - error code\n * @property {string} transaction - transaction name\n *\n * @typedef {Object} userDetails\n * @property {String} name - name of user\n * @property {String} email - email of user\n * @property {String} contact - contact of user\n * @property {String} pinCode - pin-code of user\n *\n * @typedef {Object} SmallplugUiConfig\n * @property {String} headerColor - color of the header background\n * @property {Number} headerOpacity - opacity of the header background\n * @property {String} backIconColor - color of the back icon\n * @property {Number} backIconOpacity - opacity of the back icon\n *\n */\n\nlet defaultBrokerList = [];\n\n/**\n * configure the sdk with\n * @param {envConfig} envConfig\n */\nconst setConfigEnvironment = async (envConfig) => {\n const safeConfig = safeObject(envConfig);\n\n await SmallcaseGatewayNative.setHybridSdkVersion(version);\n\n const {\n brokerList,\n gatewayName,\n isLeprechaun,\n isAmoEnabled,\n environmentName,\n } = safeConfig;\n\n const safeIsLeprechaun = Boolean(isLeprechaun);\n const safeIsAmoEnabled = Boolean(isAmoEnabled);\n const safeBrokerList = Array.isArray(brokerList) ? brokerList : [];\n const safeGatewayName = typeof gatewayName === 'string' ? gatewayName : '';\n const safeEnvName =\n typeof environmentName === 'string' ? environmentName : ENV.PROD;\n\n defaultBrokerList = safeBrokerList;\n\n await SmallcaseGatewayNative.setConfigEnvironment(\n safeEnvName,\n safeGatewayName,\n safeIsLeprechaun,\n safeIsAmoEnabled,\n safeBrokerList\n );\n};\n\n/**\n * initialize sdk with a session\n *\n * note: this must be called after `setConfigEnvironment()`\n * @param {string} sdkToken\n */\nconst init = async (sdkToken) => {\n const safeToken = typeof sdkToken === 'string' ? sdkToken : '';\n return SmallcaseGatewayNative.init(safeToken);\n};\n\n/**\n * triggers a transaction with a transaction id\n *\n * @param {string} transactionId\n * @param {Object} [utmParams]\n * @param {Array<string>} [brokerList]\n * @returns {Promise<transactionRes>}\n */\nconst triggerTransaction = async (transactionId, utmParams, brokerList) => {\n const safeUtm = safeObject(utmParams);\n const safeId = typeof transactionId === 'string' ? transactionId : '';\n\n const safeBrokerList =\n Array.isArray(brokerList) && brokerList.length\n ? brokerList\n : defaultBrokerList;\n\n return SmallcaseGatewayNative.triggerTransaction(\n safeId,\n safeUtm,\n safeBrokerList\n );\n};\n\n/**\n * triggers a transaction with a transaction id\n * @deprecated triggerMfTransaction will be removed soon. Please use triggerTransaction.\n * @param {string} transactionId\n * @returns {Promise<transactionRes>}\n */\nconst triggerMfTransaction = async (transactionId) => {\n console.warn(\n 'Calling deprecated function! triggerMfTransaction will be removed soon. Please use triggerTransaction.'\n );\n const safeTransactionId =\n typeof transactionId === 'string' ? transactionId : '';\n\n return SmallcaseGatewayNative.triggerMfTransaction(safeTransactionId);\n};\n\n/**\n * launches smallcases module\n *\n * @param {string} targetEndpoint\n * @param {string} params\n */\nconst launchSmallplug = async (targetEndpoint, params) => {\n const safeEndpoint = typeof targetEndpoint === 'string' ? targetEndpoint : '';\n const safeParams = typeof params === 'string' ? params : '';\n\n return SmallcaseGatewayNative.launchSmallplug(safeEndpoint, safeParams);\n};\n\n/**\n * launches smallcases module\n *\n * @param {string} targetEndpoint\n * @param {string} params\n * @param {string} headerColor\n * @param {number} headerOpacity\n * @param {string} backIconColor\n * @param {number} backIconOpacity\n */\nconst launchSmallplugWithBranding = async (\n targetEndpoint,\n params,\n headerColor,\n headerOpacity,\n backIconColor,\n backIconOpacity\n) => {\n const safeEndpoint = typeof targetEndpoint === 'string' ? targetEndpoint : '';\n const safeParams = typeof params === 'string' ? params : '';\n const safeHeaderColor =\n typeof headerColor === 'string'\n ? headerColor\n : platformSpecificColorHex('2F363F');\n const safeHeaderOpacity =\n typeof headerOpacity === 'number' ? headerOpacity : 1;\n const safeBackIconColor =\n typeof backIconColor === 'string'\n ? backIconColor\n : platformSpecificColorHex('FFFFFF');\n const safeBackIconOpacity =\n typeof backIconOpacity === 'number' ? backIconOpacity : 1;\n\nreturn SmallcaseGatewayNative.launchSmallplugWithBranding(\n safeEndpoint,\n safeParams,\n safeHeaderColor,\n safeHeaderOpacity,\n safeBackIconColor,\n safeBackIconOpacity\n );\n};\n\n/**\n * Logs the user out and removes the web session.\n *\n * This promise will be rejected if logout was unsuccessful\n *\n * @returns {Promise}\n */\nconst logoutUser = async () => {\n return SmallcaseGatewayNative.logoutUser();\n};\n\n/**\n * This will display a list of all the orders that a user recently placed.\n * This includes pending, successful, and failed orders.\n * @returns\n */\nconst showOrders = async () => {\n return SmallcaseGatewayNative.showOrders();\n};\n\n/**\n * triggers the lead gen flow\n *\n * @param {userDetails} [userDetails]\n * @param {Object} [utmParams]\n */\nconst triggerLeadGen = (userDetails, utmParams) => {\n const safeParams = safeObject(userDetails);\n const safeUtm = safeObject(utmParams);\n\n return SmallcaseGatewayNative.triggerLeadGen(safeParams, safeUtm);\n};\n\n/**\n * triggers the lead gen flow\n *\n * @param {userDetails} [userDetails]\n * * @returns {Promise}\n */\nconst triggerLeadGenWithStatus = async (userDetails) => {\n const safeParams = safeObject(userDetails);\n\n return SmallcaseGatewayNative.triggerLeadGenWithStatus(safeParams);\n};\n\n/**\n * triggers the lead gen flow with an option of \"login here\" cta\n *\n * @param {userDetails} [userDetails]\n * @param {Object} [utmParams]\n * @param {boolean} [showLoginCta]\n * @returns {Promise}\n */\nconst triggerLeadGenWithLoginCta = async (\n userDetails,\n utmParams,\n showLoginCta\n) => {\n const safeParams = safeObject(userDetails);\n const safeUtm = safeObject(utmParams);\n const safeShowLoginCta = Boolean(showLoginCta);\n\n return SmallcaseGatewayNative.triggerLeadGenWithLoginCta(\n safeParams,\n safeUtm,\n safeShowLoginCta\n );\n};\n\n/**\n * Marks a smallcase as archived\n *\n * @param {String} iscid\n */\nconst archiveSmallcase = async (iscid) => {\n const safeIscid = typeof iscid === 'string' ? iscid : '';\n\n return SmallcaseGatewayNative.archiveSmallcase(safeIscid);\n};\n\n/**\n * Returns the native android/ios and react-native sdk version\n * (internal-tracking)\n * @returns {Promise}\n */\nconst getSdkVersion = async () => {\n return SmallcaseGatewayNative.getSdkVersion(version);\n};\n\nconst SmallcaseGateway = {\n init,\n logoutUser,\n triggerLeadGen,\n triggerLeadGenWithStatus,\n triggerLeadGenWithLoginCta,\n archiveSmallcase,\n triggerTransaction,\n triggerMfTransaction,\n setConfigEnvironment,\n launchSmallplug,\n launchSmallplugWithBranding,\n getSdkVersion,\n showOrders,\n};\n\nexport default SmallcaseGateway;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","ENV","safeObject","platformSpecificColorHex","version","SmallcaseGateway","SmallcaseGatewayNative","defaultBrokerList","setConfigEnvironment","envConfig","safeConfig","setHybridSdkVersion","brokerList","gatewayName","isLeprechaun","isAmoEnabled","environmentName","safeIsLeprechaun","Boolean","safeIsAmoEnabled","safeBrokerList","Array","isArray","safeGatewayName","safeEnvName","PROD","init","sdkToken","safeToken","triggerTransaction","transactionId","utmParams","safeUtm","safeId","length","triggerMfTransaction","console","warn","safeTransactionId","launchSmallplug","targetEndpoint","params","safeEndpoint","safeParams","launchSmallplugWithBranding","headerColor","headerOpacity","backIconColor","backIconOpacity","safeHeaderColor","safeHeaderOpacity","safeBackIconColor","safeBackIconOpacity","logoutUser","showOrders","triggerLeadGen","userDetails","triggerLeadGenWithStatus","triggerLeadGenWithLoginCta","showLoginCta","safeShowLoginCta","archiveSmallcase","iscid","safeIscid","getSdkVersion"],"sources":["SmallcaseGateway.js"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\nimport { ENV } from './constants';\nimport { safeObject, platformSpecificColorHex } from './util';\nimport { version } from '../package.json';\nconst { SmallcaseGateway: SmallcaseGatewayNative } = NativeModules;\n\n/**\n *\n * @typedef {Object} envConfig\n * @property {string} gatewayName - unique name on consumer\n * @property {boolean} isLeprechaun - leprechaun mode toggle\n * @property {boolean} isAmoEnabled - support AMO (subject to broker support)\n * @property {Array<string>} brokerList - list of broker names\n * @property {'production' | 'staging' | 'development'} environmentName - environment name\n *\n * @typedef {Object} transactionRes\n * @property {string} data - response data\n * @property {boolean} success - success flag\n * @property {Number} [errorCode] - error code\n * @property {string} transaction - transaction name\n *\n * @typedef {Object} userDetails\n * @property {String} name - name of user\n * @property {String} email - email of user\n * @property {String} contact - contact of user\n * @property {String} pinCode - pin-code of user\n *\n * @typedef {Object} SmallplugUiConfig\n * @property {String} headerColor - color of the header background\n * @property {Number} headerOpacity - opacity of the header background\n * @property {String} backIconColor - color of the back icon\n * @property {Number} backIconOpacity - opacity of the back icon\n *\n */\n\nlet defaultBrokerList = [];\n\n/**\n * configure the sdk with\n * @param {envConfig} envConfig\n */\nconst setConfigEnvironment = async (envConfig) => {\n const safeConfig = safeObject(envConfig);\n\n await SmallcaseGatewayNative.setHybridSdkVersion(version);\n\n const {\n brokerList,\n gatewayName,\n isLeprechaun,\n isAmoEnabled,\n environmentName,\n } = safeConfig;\n\n const safeIsLeprechaun = Boolean(isLeprechaun);\n const safeIsAmoEnabled = Boolean(isAmoEnabled);\n const safeBrokerList = Array.isArray(brokerList) ? brokerList : [];\n const safeGatewayName = typeof gatewayName === 'string' ? gatewayName : '';\n const safeEnvName =\n typeof environmentName === 'string' ? environmentName : ENV.PROD;\n\n defaultBrokerList = safeBrokerList;\n\n await SmallcaseGatewayNative.setConfigEnvironment(\n safeEnvName,\n safeGatewayName,\n safeIsLeprechaun,\n safeIsAmoEnabled,\n safeBrokerList\n );\n};\n\n/**\n * initialize sdk with a session\n *\n * note: this must be called after `setConfigEnvironment()`\n * @param {string} sdkToken\n */\nconst init = async (sdkToken) => {\n const safeToken = typeof sdkToken === 'string' ? sdkToken : '';\n return SmallcaseGatewayNative.init(safeToken);\n};\n\n/**\n * triggers a transaction with a transaction id\n *\n * @param {string} transactionId\n * @param {Object} [utmParams]\n * @param {Array<string>} [brokerList]\n * @returns {Promise<transactionRes>}\n */\nconst triggerTransaction = async (transactionId, utmParams, brokerList) => {\n const safeUtm = safeObject(utmParams);\n const safeId = typeof transactionId === 'string' ? transactionId : '';\n\n const safeBrokerList =\n Array.isArray(brokerList) && brokerList.length\n ? brokerList\n : defaultBrokerList;\n\n return SmallcaseGatewayNative.triggerTransaction(\n safeId,\n safeUtm,\n safeBrokerList\n );\n};\n\n/**\n * triggers a transaction with a transaction id\n * @deprecated triggerMfTransaction will be removed soon. Please use triggerTransaction.\n * @param {string} transactionId\n * @returns {Promise<transactionRes>}\n */\nconst triggerMfTransaction = async (transactionId) => {\n console.warn(\n 'Calling deprecated function! triggerMfTransaction will be removed soon. Please use triggerTransaction.'\n );\n const safeTransactionId =\n typeof transactionId === 'string' ? transactionId : '';\n\n return SmallcaseGatewayNative.triggerMfTransaction(safeTransactionId);\n};\n\n/**\n * launches smallcases module\n *\n * @param {string} targetEndpoint\n * @param {string} params\n */\nconst launchSmallplug = async (targetEndpoint, params) => {\n const safeEndpoint = typeof targetEndpoint === 'string' ? targetEndpoint : '';\n const safeParams = typeof params === 'string' ? params : '';\n\n return SmallcaseGatewayNative.launchSmallplug(safeEndpoint, safeParams);\n};\n\n/**\n * launches smallcases module\n *\n * @param {string} targetEndpoint\n * @param {string} params\n * @param {string} headerColor\n * @param {number} headerOpacity\n * @param {string} backIconColor\n * @param {number} backIconOpacity\n */\nconst launchSmallplugWithBranding = async (\n targetEndpoint,\n params,\n headerColor,\n headerOpacity,\n backIconColor,\n backIconOpacity\n) => {\n const safeEndpoint = typeof targetEndpoint === 'string' ? targetEndpoint : '';\n const safeParams = typeof params === 'string' ? params : '';\n const safeHeaderColor =\n typeof headerColor === 'string'\n ? headerColor\n : platformSpecificColorHex('2F363F');\n const safeHeaderOpacity =\n typeof headerOpacity === 'number' ? headerOpacity : 1;\n const safeBackIconColor =\n typeof backIconColor === 'string'\n ? backIconColor\n : platformSpecificColorHex('FFFFFF');\n const safeBackIconOpacity =\n typeof backIconOpacity === 'number' ? backIconOpacity : 1;\n\nreturn SmallcaseGatewayNative.launchSmallplugWithBranding(\n safeEndpoint,\n safeParams,\n safeHeaderColor,\n safeHeaderOpacity,\n safeBackIconColor,\n safeBackIconOpacity\n );\n};\n\n/**\n * Logs the user out and removes the web session.\n *\n * This promise will be rejected if logout was unsuccessful\n *\n * @returns {Promise}\n */\nconst logoutUser = async () => {\n return SmallcaseGatewayNative.logoutUser();\n};\n\n/**\n * This will display a list of all the orders that a user recently placed.\n * This includes pending, successful, and failed orders.\n * @returns\n */\nconst showOrders = async () => {\n return SmallcaseGatewayNative.showOrders();\n};\n\n/**\n * triggers the lead gen flow\n *\n * @param {userDetails} [userDetails]\n * @param {Object} [utmParams]\n */\nconst triggerLeadGen = (userDetails, utmParams) => {\n const safeParams = safeObject(userDetails);\n const safeUtm = safeObject(utmParams);\n\n return SmallcaseGatewayNative.triggerLeadGen(safeParams, safeUtm);\n};\n\n/**\n * triggers the lead gen flow\n *\n * @param {userDetails} [userDetails]\n * * @returns {Promise}\n */\nconst triggerLeadGenWithStatus = async (userDetails) => {\n const safeParams = safeObject(userDetails);\n\n return SmallcaseGatewayNative.triggerLeadGenWithStatus(safeParams);\n};\n\n/**\n * triggers the lead gen flow with an option of \"login here\" cta\n *\n * @param {userDetails} [userDetails]\n * @param {Object} [utmParams]\n * @param {boolean} [showLoginCta]\n * @returns {Promise}\n */\nconst triggerLeadGenWithLoginCta = async (\n userDetails,\n utmParams,\n showLoginCta\n) => {\n const safeParams = safeObject(userDetails);\n const safeUtm = safeObject(utmParams);\n const safeShowLoginCta = Boolean(showLoginCta);\n\n return SmallcaseGatewayNative.triggerLeadGenWithLoginCta(\n safeParams,\n safeUtm,\n safeShowLoginCta\n );\n};\n\n/**\n * Marks a smallcase as archived\n *\n * @param {String} iscid\n */\nconst archiveSmallcase = async (iscid) => {\n const safeIscid = typeof iscid === 'string' ? iscid : '';\n\n return SmallcaseGatewayNative.archiveSmallcase(safeIscid);\n};\n\n/**\n * Returns the native android/ios and react-native sdk version\n * (internal-tracking)\n * @returns {Promise}\n */\nconst getSdkVersion = async () => {\n return SmallcaseGatewayNative.getSdkVersion(version);\n};\n\nconst SmallcaseGateway = {\n init,\n logoutUser,\n triggerLeadGen,\n triggerLeadGenWithStatus,\n triggerLeadGenWithLoginCta,\n archiveSmallcase,\n triggerTransaction,\n triggerMfTransaction,\n setConfigEnvironment,\n launchSmallplug,\n launchSmallplugWithBranding,\n getSdkVersion,\n showOrders,\n};\n\nexport default SmallcaseGateway;"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,9 @@
1
1
  import SmallcaseGateway from "./SmallcaseGateway";
2
2
  import ScLoan from "./ScLoan";
3
+ import scGatewayEventManager, { SCGatewayEventTypes } from './SCGatewayEventEmitter';
4
+ import scLoansEventManager, { SCLoansEventTypes } from './SCLoansEventEmitter';
3
5
  import { ENV, TRANSACTION_TYPE, ERROR_MSG } from "./constants";
4
- export { ScLoan };
6
+ export { ScLoan, scGatewayEventManager as SCGatewayEventManager, scLoansEventManager as SCLoansEventManager, SCGatewayEventTypes, SCLoansEventTypes };
5
7
  export default {
6
8
  ...SmallcaseGateway,
7
9
  ENV,
@@ -1 +1 @@
1
- {"version":3,"names":["SmallcaseGateway","ScLoan","ENV","TRANSACTION_TYPE","ERROR_MSG"],"sources":["index.js"],"sourcesContent":["import SmallcaseGateway from \"./SmallcaseGateway\";\nimport ScLoan from \"./ScLoan\";\nimport { ENV, TRANSACTION_TYPE, ERROR_MSG } from \"./constants\";\n\nexport { ScLoan }\nexport default { ...SmallcaseGateway, ENV, ERROR_MSG, TRANSACTION_TYPE };\n"],"mappings":"AAAA,OAAOA,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASC,GAAG,EAAEC,gBAAgB,EAAEC,SAAS,QAAQ,aAAa;AAE9D,SAASH,MAAM;AACf,eAAe;EAAE,GAAGD,gBAAgB;EAAEE,GAAG;EAAEE,SAAS;EAAED;AAAiB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["SmallcaseGateway","ScLoan","scGatewayEventManager","SCGatewayEventTypes","scLoansEventManager","SCLoansEventTypes","ENV","TRANSACTION_TYPE","ERROR_MSG","SCGatewayEventManager","SCLoansEventManager"],"sources":["index.js"],"sourcesContent":["import SmallcaseGateway from \"./SmallcaseGateway\";\nimport ScLoan from \"./ScLoan\";\nimport scGatewayEventManager, { SCGatewayEventTypes } from './SCGatewayEventEmitter';\nimport scLoansEventManager, { SCLoansEventTypes } from './SCLoansEventEmitter';\nimport { ENV, TRANSACTION_TYPE, ERROR_MSG } from \"./constants\";\n\nexport { ScLoan, scGatewayEventManager as SCGatewayEventManager, scLoansEventManager as SCLoansEventManager, SCGatewayEventTypes, SCLoansEventTypes }\nexport default { ...SmallcaseGateway, ENV, ERROR_MSG, TRANSACTION_TYPE };\n"],"mappings":"AAAA,OAAOA,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,qBAAqB,IAAIC,mBAAmB,QAAQ,yBAAyB;AACpF,OAAOC,mBAAmB,IAAIC,iBAAiB,QAAQ,uBAAuB;AAC9E,SAASC,GAAG,EAAEC,gBAAgB,EAAEC,SAAS,QAAQ,aAAa;AAE9D,SAASP,MAAM,EAAEC,qBAAqB,IAAIO,qBAAqB,EAAEL,mBAAmB,IAAIM,mBAAmB,EAAEP,mBAAmB,EAAEE,iBAAiB;AACnJ,eAAe;EAAE,GAAGL,gBAAgB;EAAEM,GAAG;EAAEE,SAAS;EAAED;AAAiB,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-smallcase-gateway",
3
3
  "title": "React Native Smallcase Gateway",
4
- "version": "5.3.2",
4
+ "version": "6.0.0",
5
5
  "description": "smallcase gateway bindings for react native",
6
6
  "main": "src/index.js",
7
7
  "files": [
@@ -33,6 +33,6 @@ Pod::Spec.new do |s|
33
33
  s.dependency "ReactCommon/turbomodule/core"
34
34
  end
35
35
 
36
- s.dependency 'SCGateway', '4.4.1'
37
- s.dependency 'SCLoans', '4.0.0'
36
+ s.dependency 'SCGateway', '6.1.0'
37
+ s.dependency 'SCLoans', '6.0.1'
38
38
  end
@@ -0,0 +1,121 @@
1
+ import {
2
+ NativeEventEmitter,
3
+ NativeModules,
4
+ Platform
5
+ } from 'react-native';
6
+
7
+ /**
8
+ * @typedef {Object} GatewayEvent
9
+ * @property {string} type - Event type
10
+ * @property {any} data - Event payload data
11
+ * @property {number} timestamp - Event timestamp
12
+ *
13
+ * @typedef {Object} GatewayEventSubscription
14
+ * @property {() => void} remove - Method to unsubscribe from gateway events
15
+ *
16
+ */
17
+
18
+ const nativeModule = NativeModules.SCGatewayBridgeEmitter;
19
+
20
+ export const SCGatewayEventTypes = {
21
+ ANALYTICS_EVENT: 'scgateway_analytics_event',
22
+ SUPER_PROPERTIES_UPDATED: 'scgateway_super_properties_updated',
23
+ USER_RESET: 'scgateway_user_reset',
24
+ USER_IDENTIFY: 'scgateway_user_identify',
25
+ };
26
+
27
+ const SCGatewayNotificationEvent = 'scg_notification';
28
+
29
+ class SCGatewayEvents {
30
+ constructor() {
31
+ this.eventEmitter = null;
32
+ this.subscriptions = [];
33
+ this.initialize();
34
+ }
35
+
36
+ get isInitialized() {
37
+ return this.eventEmitter !== null;
38
+ }
39
+
40
+ initialize() {
41
+ if (nativeModule) {
42
+ this.eventEmitter = new NativeEventEmitter(nativeModule);
43
+ } else {
44
+ console.warn('[SCGatewayEvents] Native module not available');
45
+ }
46
+ }
47
+
48
+ // ===== GATEWAY EVENT METHODS =====
49
+ /**
50
+ * Subscribe to Gateway Events
51
+ * @param {(event: GatewayEvent) => void} callback - Callback function to handle gateway events
52
+ * @returns {GatewayEventSubscription} subscription - Subscription object with remove() method
53
+ */
54
+ subscribeToGatewayEvents(callback) {
55
+ if (!this.isInitialized) {
56
+ console.warn('[SCGatewayEvents] Event emitter not initialized');
57
+ return null;
58
+ }
59
+
60
+ if (typeof callback !== 'function') {
61
+ console.warn('[SCGatewayEvents] Invalid callback provided for subscription');
62
+ return null;
63
+ }
64
+
65
+ const subscription = this.eventEmitter.addListener(SCGatewayNotificationEvent, (jsonString) => {
66
+ if (!jsonString) {
67
+ console.warn('[SCGatewayEvents] Received null/undefined event data');
68
+ return;
69
+ }
70
+
71
+ let eventData;
72
+ try {
73
+ eventData = JSON.parse(jsonString);
74
+ } catch (error) {
75
+ console.warn('[SCGatewayEvents] Failed to parse event JSON:', error, 'Raw data:', jsonString);
76
+ return;
77
+ }
78
+
79
+ if (!eventData.type) {
80
+ console.warn('[SCGatewayEvents] Dropping event - missing event type:', eventData);
81
+ return;
82
+ }
83
+
84
+ const normalizedEvent = {
85
+ type: eventData.type,
86
+ data: eventData.data,
87
+ timestamp: eventData.timestamp || Date.now()
88
+ };
89
+
90
+ callback(normalizedEvent);
91
+ });
92
+
93
+ this.subscriptions.push(subscription);
94
+
95
+ return subscription;
96
+ }
97
+
98
+ /**
99
+ * Unsubscribe from Gateway Events
100
+ * @param {GatewayEventSubscription} subscription - Subscription returned from subscribeToGatewayEvents
101
+ */
102
+ unsubscribeFromGatewayEvents(subscription) {
103
+ if (subscription && typeof subscription.remove === 'function') {
104
+ subscription.remove();
105
+ this.subscriptions = this.subscriptions.filter(sub => sub !== subscription);
106
+ }
107
+ }
108
+
109
+ cleanup() {
110
+ this.subscriptions.forEach(subscription => {
111
+ if (subscription && typeof subscription.remove === 'function') {
112
+ subscription.remove();
113
+ }
114
+ });
115
+ this.subscriptions = [];
116
+ }
117
+ }
118
+
119
+ const scGatewayEventManager = new SCGatewayEvents();
120
+
121
+ export default scGatewayEventManager;
@@ -0,0 +1,116 @@
1
+ import {
2
+ NativeEventEmitter,
3
+ NativeModules,
4
+ Platform
5
+ } from 'react-native';
6
+
7
+ /**
8
+ * @typedef {Object} LoansEvent
9
+ * @property {string} type - Event type
10
+ * @property {number} timestamp - Event timestamp
11
+ *
12
+ * @typedef {Object} LoansEventSubscription
13
+ * @property {() => void} remove - Method to unsubscribe from loans events
14
+ */
15
+
16
+ const nativeModule = NativeModules.SCLoansBridgeEmitter;
17
+
18
+ export const SCLoansEventTypes = {
19
+ ANALYTICS_EVENT: 'scloans_analytics_event',
20
+ SUPER_PROPERTIES_UPDATED: 'scloans_super_properties_updated',
21
+ };
22
+
23
+ const SCLoansNotificationEvent = 'scloans_notification';
24
+ class SCLoansEvents {
25
+ constructor() {
26
+ this.eventEmitter = null;
27
+ this.subscriptions = [];
28
+ this.initialize();
29
+ }
30
+
31
+ get isInitialized() {
32
+ return this.eventEmitter !== null;
33
+ }
34
+
35
+ initialize() {
36
+ if (nativeModule) {
37
+ this.eventEmitter = new NativeEventEmitter(nativeModule);
38
+ } else {
39
+ console.warn('[SCLoansEvents] Native module not available');
40
+ }
41
+ }
42
+
43
+ // ===== LOANS EVENT METHODS =====
44
+ /**
45
+ * Subscribe to Loans Events
46
+ * @param {(event: LoansEvent) => void} callback - Callback function to handle loans events
47
+ * @returns {LoansEventSubscription} subscription - Subscription object with remove() method
48
+ */
49
+ subscribeToLoansEvent(callback) {
50
+ if (!this.isInitialized) {
51
+ console.warn('[SCLoansEvents] Event emitter not initialized');
52
+ return null;
53
+ }
54
+
55
+ if (typeof callback !== 'function') {
56
+ console.warn('[SCLoansEvents] Invalid callback provided for subscription');
57
+ return null;
58
+ }
59
+
60
+ const subscription = this.eventEmitter.addListener(SCLoansNotificationEvent, (jsonString) => {
61
+ if (!jsonString) {
62
+ console.warn('[SCLoansEvents] Received null/undefined event data');
63
+ return;
64
+ }
65
+
66
+ let eventData;
67
+ try {
68
+ eventData = JSON.parse(jsonString);
69
+ } catch (error) {
70
+ console.warn('[SCLoansEvents] Failed to parse event JSON:', error, 'Raw data:', jsonString);
71
+ return;
72
+ }
73
+
74
+ if (!eventData.type) {
75
+ console.warn('[SCLoansEvents] Dropping event - missing event type:', eventData);
76
+ return;
77
+ }
78
+
79
+ const normalizedEvent = {
80
+ type: eventData.type,
81
+ data: eventData.data,
82
+ timestamp: eventData.timestamp || Date.now()
83
+ };
84
+
85
+ callback(normalizedEvent);
86
+ });
87
+
88
+ this.subscriptions.push(subscription);
89
+
90
+ return subscription;
91
+ }
92
+
93
+ /**
94
+ * Unsubscribe from Loans Events
95
+ * @param {LoansEventSubscription} subscription - Subscription returned from subscribeToLoansEvents
96
+ */
97
+ unsubscribeFromLoansEvent(subscription) {
98
+ if (subscription && typeof subscription.remove === 'function') {
99
+ subscription.remove();
100
+ this.subscriptions = this.subscriptions.filter(sub => sub !== subscription);
101
+ }
102
+ }
103
+
104
+ cleanup() {
105
+ this.subscriptions.forEach(subscription => {
106
+ if (subscription && typeof subscription.remove === 'function') {
107
+ subscription.remove();
108
+ }
109
+ });
110
+ this.subscriptions = [];
111
+ }
112
+ }
113
+
114
+ const scLoansEventManager = new SCLoansEvents();
115
+
116
+ export default scLoansEventManager;
@@ -282,4 +282,4 @@ const SmallcaseGateway = {
282
282
  showOrders,
283
283
  };
284
284
 
285
- export default SmallcaseGateway;
285
+ export default SmallcaseGateway;
package/src/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import SmallcaseGateway from "./SmallcaseGateway";
2
2
  import ScLoan from "./ScLoan";
3
+ import scGatewayEventManager, { SCGatewayEventTypes } from './SCGatewayEventEmitter';
4
+ import scLoansEventManager, { SCLoansEventTypes } from './SCLoansEventEmitter';
3
5
  import { ENV, TRANSACTION_TYPE, ERROR_MSG } from "./constants";
4
6
 
5
- export { ScLoan }
7
+ export { ScLoan, scGatewayEventManager as SCGatewayEventManager, scLoansEventManager as SCLoansEventManager, SCGatewayEventTypes, SCLoansEventTypes }
6
8
  export default { ...SmallcaseGateway, ENV, ERROR_MSG, TRANSACTION_TYPE };
package/types/index.d.ts CHANGED
@@ -1,4 +1,38 @@
1
- export { ScLoan };
1
+ import ScLoan from "./ScLoan";
2
+
3
+ export interface GatewayEvent {
4
+ type: string;
5
+ data?: Record<string, any>;
6
+ timestamp: number;
7
+ }
8
+
9
+ export interface LoansEvent {
10
+ type: string;
11
+ data?: Record<string, any>;
12
+ timestamp: number;
13
+ }
14
+
15
+ export interface GatewayEventSubscription {
16
+ remove(): void;
17
+ }
18
+
19
+ export interface LoansEventSubscription {
20
+ remove(): void;
21
+ }
22
+
23
+ interface SCGatewayEventManagerInterface {
24
+ subscribeToGatewayEvents(callback: ((event: GatewayEvent) => void)): GatewayEventSubscription | null;
25
+ unsubscribeFromGatewayEvents(subscription: GatewayEventSubscription): void;
26
+ }
27
+
28
+ interface SCLoansEventManagerInterface {
29
+ subscribeToLoansEvent(callback: ((event: LoansEvent) => void)): LoansEventSubscription | null;
30
+ unsubscribeFromLoansEvent(subscription: LoansEventSubscription): void;
31
+ }
32
+
33
+ declare const SCGatewayEventManager: SCGatewayEventManagerInterface;
34
+ declare const SCLoansEventManager: SCLoansEventManagerInterface;
35
+
2
36
  declare const _default: {
3
37
  ENV: {
4
38
  STAG: string;
@@ -46,6 +80,15 @@ declare const _default: {
46
80
  launchSmallplugWithBranding: (targetEndpoint: string, params: string, headerColor: string, headerOpacity: number, backIconColor: string, backIconOpacity: number) => unknown;
47
81
  getSdkVersion: () => Promise;
48
82
  showOrders: () => unknown;
83
+
84
+ // Events System
85
+ SCGatewayEventManager: SCGatewayEventManagerInterface;
86
+ SCLoansEventManager: SCLoansEventManagerInterface;
87
+ subscribeToGatewayEvents: (callback: (event: GatewayEvent) => void) => GatewayEventSubscription | null;
88
+ unsubscribeFromGatewayEvents: (subscription: GatewayEventSubscription) => void;
89
+ subscribeToLoansEvent: (callback: (event: LoansEvent) => void) => LoansEventSubscription | null;
90
+ unsubscribeFromLoansEvent: (subscription: LoansEventSubscription) => void;
49
91
  };
92
+
50
93
  export default _default;
51
- import ScLoan from "./ScLoan";
94
+ export { ScLoan, SCGatewayEventManager, SCLoansEventManager };