diff --git a/CHANGELOG.md b/CHANGELOG.md index 364cb6a..dac1025 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes will be documented in this file. +## [1.0.10] - 2023-02-03 + +* Fix url encoding for app name. +* Added request retry for failed requests. + ## [1.0.9] - 2023-01-16 * Fix localization backward compatibility. diff --git a/package-lock.json b/package-lock.json index 3dd723a..b4a2530 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,17 @@ { "name": "app-upgrade-react-native-sdk", - "version": "1.0.7", + "version": "1.0.9", "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -18,6 +26,15 @@ "form-data": "^4.0.0" } }, + "axios-retry": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.4.0.tgz", + "integrity": "sha512-VdgaP+gHH4iQYCCNUWF2pcqeciVOdGrBBAYUfTY+wPcO5Ltvp/37MLFNCmJKo7Gj3SHvCSdL8ouI1qLYJN3liA==", + "requires": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -46,6 +63,11 @@ "mime-types": "^2.1.12" } }, + "is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==" + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -58,6 +80,11 @@ "requires": { "mime-db": "1.52.0" } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" } } } diff --git a/package.json b/package.json index 163d92d..f1f1a2f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "app-upgrade-react-native-sdk", - "version": "1.0.9", - "description": "app upgrade react-native sdk", + "version": "1.0.10", + "description": "Official App Upgrade react-native sdk", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" @@ -17,7 +17,8 @@ }, "license": "MIT", "dependencies": { - "axios": "^0.27.2" + "axios": "^0.27.2", + "axios-retry": "^3.4.0" }, "peerDependencies": { "react": ">=16.9.0", diff --git a/src/api.js b/src/api.js index 80b5bc4..2f1eb08 100644 --- a/src/api.js +++ b/src/api.js @@ -1,17 +1,27 @@ import axios from "axios"; +import axiosRetry from 'axios-retry'; async function checkVersionWithAppUpgrade(appInfo, xApiKey) { try { const appUpgradeBaseUrl = "https://appupgrade.dev"; const { appName, appVersion, platform, environment, appLanguage } = appInfo; + axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay, retryCondition: () => true }); + const response = await axios.get( - `${appUpgradeBaseUrl}/api/v1/versions/check?app_name=${appName}&app_version=${appVersion}&platform=${platform}&environment=${environment}&app_language=${appLanguage}`, + `${appUpgradeBaseUrl}/api/v1/versions/check`, { headers: { "x-api-key": xApiKey, "sdk": "react-native" //Telemetry purposes }, + params: { + app_name: appName, + app_version: appVersion, + platform: platform, + environment: environment, + app_language: appLanguage, + }, validateStatus: function (status) { return status >= 200 && status < 500; // default },