react-native-stallion 1.1.2 → 2.0.0-alpha.2
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.
- package/android/src/main/java/com/stallion/Stallion.java +153 -9
- package/android/src/main/java/com/stallion/StallionModule.java +128 -167
- package/android/src/main/java/com/stallion/events/StallionEventConstants.java +22 -0
- package/android/src/main/java/com/stallion/events/StallionEventManager.java +160 -0
- package/android/src/main/java/com/stallion/networkmanager/StallionApiConstants.java +28 -0
- package/android/src/main/java/com/stallion/networkmanager/StallionApiManager.java +96 -0
- package/android/src/main/java/com/stallion/networkmanager/StallionDownloadCallback.java +7 -0
- package/android/src/main/java/com/stallion/networkmanager/StallionFileDownloader.java +224 -0
- package/android/src/main/java/com/stallion/networkmanager/StallionStageManager.java +77 -0
- package/android/src/main/java/com/stallion/networkmanager/StallionSyncHandler.java +183 -0
- package/android/src/main/java/com/stallion/storage/StallionConfig.java +120 -0
- package/android/src/main/java/com/stallion/storage/StallionConfigConstants.java +24 -0
- package/android/src/main/java/com/stallion/storage/StallionMeta.java +206 -0
- package/android/src/main/java/com/stallion/storage/StallionMetaConstants.java +30 -0
- package/android/src/main/java/com/stallion/storage/StallionStateManager.java +110 -0
- package/android/src/main/java/com/stallion/{StallionDefaultErrorActivity.java → utils/StallionErrorActivity.java} +11 -10
- package/android/src/main/java/com/stallion/utils/StallionExceptionHandler.java +102 -0
- package/android/src/main/java/com/stallion/utils/StallionFileManager.java +205 -0
- package/android/src/main/java/com/stallion/utils/StallionSlotManager.java +110 -0
- package/ios/main/Stallion-Bridging-Header.h +6 -1
- package/ios/main/Stallion.m +28 -9
- package/ios/main/Stallion.swift +132 -50
- package/ios/main/StallionConfig.h +24 -0
- package/ios/main/StallionConfig.m +62 -0
- package/ios/main/StallionConfigConstants.h +32 -0
- package/ios/main/StallionConfigConstants.m +32 -0
- package/ios/main/StallionConstants.swift +53 -10
- package/ios/main/StallionEventHandler.h +23 -0
- package/ios/main/StallionEventHandler.m +138 -0
- package/ios/main/StallionExceptionHandler.h +18 -0
- package/ios/main/StallionExceptionHandler.m +94 -0
- package/ios/main/StallionFileDownloader.swift +147 -0
- package/ios/main/StallionFileManager.h +20 -0
- package/ios/main/StallionFileManager.m +126 -0
- package/ios/main/StallionMeta.h +29 -0
- package/ios/main/StallionMeta.m +98 -0
- package/ios/main/StallionMetaConstants.h +28 -0
- package/ios/main/StallionMetaConstants.m +42 -0
- package/ios/main/StallionModule.m +137 -20
- package/ios/main/StallionObjConstants.h +47 -0
- package/ios/main/StallionObjConstants.m +128 -0
- package/ios/main/StallionSlotManager.h +21 -0
- package/ios/main/StallionSlotManager.m +114 -0
- package/ios/main/StallionStageManager.swift +84 -0
- package/ios/main/StallionStateManager.h +31 -0
- package/ios/main/StallionStateManager.m +87 -0
- package/ios/main/StallionSyncHandler.swift +212 -0
- package/package.json +6 -2
- package/src/index.js +5 -15
- package/src/index.js.map +1 -1
- package/src/main/components/common/ButtonFullWidth/styles.js +2 -2
- package/src/main/components/common/ButtonFullWidth/styles.js.map +1 -1
- package/src/main/components/common/Footer/index.js +24 -31
- package/src/main/components/common/Footer/index.js.map +1 -1
- package/src/main/components/common/Footer/styles.js +34 -33
- package/src/main/components/common/Footer/styles.js.map +1 -1
- package/src/main/components/common/Header/index.js +14 -17
- package/src/main/components/common/Header/index.js.map +1 -1
- package/src/main/components/common/Header/styles.js +10 -5
- package/src/main/components/common/Header/styles.js.map +1 -1
- package/src/main/components/common/Spinner/index.js +3 -1
- package/src/main/components/common/Spinner/index.js.map +1 -1
- package/src/main/components/modules/listing/components/BucketCard.js +3 -3
- package/src/main/components/modules/listing/components/BucketCard.js.map +1 -1
- package/src/main/components/modules/listing/components/BundleCard.js +9 -5
- package/src/main/components/modules/listing/components/BundleCard.js.map +1 -1
- package/src/main/components/modules/listing/components/BundleCardInfoSection.js +21 -12
- package/src/main/components/modules/listing/components/BundleCardInfoSection.js.map +1 -1
- package/src/main/components/modules/listing/components/CardDescriptionContent.js +3 -2
- package/src/main/components/modules/listing/components/CardDescriptionContent.js.map +1 -1
- package/src/main/components/modules/listing/components/ConfigView.js +19 -0
- package/src/main/components/modules/listing/components/ConfigView.js.map +1 -0
- package/src/main/components/modules/listing/components/MetaCard.js +38 -0
- package/src/main/components/modules/listing/components/MetaCard.js.map +1 -0
- package/src/main/components/modules/listing/components/SlotView.js +84 -0
- package/src/main/components/modules/listing/components/SlotView.js.map +1 -0
- package/src/main/components/modules/listing/components/styles/index.js +31 -10
- package/src/main/components/modules/listing/components/styles/index.js.map +1 -1
- package/src/main/components/modules/listing/hooks/useListing.js +5 -4
- package/src/main/components/modules/listing/hooks/useListing.js.map +1 -1
- package/src/main/components/modules/listing/index.js +12 -4
- package/src/main/components/modules/listing/index.js.map +1 -1
- package/src/main/components/modules/login/index.js +42 -38
- package/src/main/components/modules/login/index.js.map +1 -1
- package/src/main/components/modules/login/styles/index.js +21 -7
- package/src/main/components/modules/login/styles/index.js.map +1 -1
- package/src/main/components/modules/modal/StallionModal.js +28 -31
- package/src/main/components/modules/modal/StallionModal.js.map +1 -1
- package/src/main/components/modules/modal/hooks/useStallionModal.js +16 -52
- package/src/main/components/modules/modal/hooks/useStallionModal.js.map +1 -1
- package/src/main/components/modules/prod/index.js +3 -0
- package/src/main/components/modules/prod/index.js.map +1 -0
- package/src/main/components/modules/prod/prod.js +35 -0
- package/src/main/components/modules/prod/prod.js.map +1 -0
- package/src/main/components/modules/prod/styles/index.js +23 -0
- package/src/main/components/modules/prod/styles/index.js.map +1 -0
- package/src/main/constants/apiConstants.js +4 -2
- package/src/main/constants/apiConstants.js.map +1 -1
- package/src/main/constants/appConstants.js +43 -7
- package/src/main/constants/appConstants.js.map +1 -1
- package/src/main/constants/colors.js +8 -6
- package/src/main/constants/colors.js.map +1 -1
- package/src/main/state/actionCreators/useBucketActions.js +10 -13
- package/src/main/state/actionCreators/useBucketActions.js.map +1 -1
- package/src/main/state/actionCreators/useBundleActions.js +14 -17
- package/src/main/state/actionCreators/useBundleActions.js.map +1 -1
- package/src/main/state/actionCreators/useConfigActions.js +20 -0
- package/src/main/state/actionCreators/useConfigActions.js.map +1 -0
- package/src/main/state/actionCreators/useDownloadActions.js +20 -42
- package/src/main/state/actionCreators/useDownloadActions.js.map +1 -1
- package/src/main/state/actionCreators/useMetaActions.js +6 -5
- package/src/main/state/actionCreators/useMetaActions.js.map +1 -1
- package/src/main/state/actionCreators/useUpdateMetaActions.js +77 -0
- package/src/main/state/actionCreators/useUpdateMetaActions.js.map +1 -0
- package/src/main/state/actionCreators/useUserActions.js +25 -85
- package/src/main/state/actionCreators/useUserActions.js.map +1 -1
- package/src/main/state/actions/configActions.js +8 -0
- package/src/main/state/actions/configActions.js.map +1 -0
- package/src/main/state/actions/userActions.js +3 -15
- package/src/main/state/actions/userActions.js.map +1 -1
- package/src/main/state/index.js +30 -13
- package/src/main/state/index.js.map +1 -1
- package/src/main/state/reducers/configReducer.js +19 -0
- package/src/main/state/reducers/configReducer.js.map +1 -0
- package/src/main/state/reducers/updateMetaReducer.js +36 -0
- package/src/main/state/reducers/updateMetaReducer.js.map +1 -0
- package/src/main/state/reducers/userReducer.js +3 -37
- package/src/main/state/reducers/userReducer.js.map +1 -1
- package/src/main/state/useStallionEvents.js +102 -0
- package/src/main/state/useStallionEvents.js.map +1 -0
- package/src/main/utils/ErrorBoundary.js +19 -16
- package/src/main/utils/ErrorBoundary.js.map +1 -1
- package/src/main/utils/StallionEventEmitter.js +20 -0
- package/src/main/utils/StallionEventEmitter.js.map +1 -0
- package/src/main/utils/StallionNativeUtils.js +35 -0
- package/src/main/utils/StallionNativeUtils.js.map +1 -0
- package/src/main/utils/debounce.js +16 -0
- package/src/main/utils/debounce.js.map +1 -0
- package/src/main/utils/useApiClient.js +28 -0
- package/src/main/utils/useApiClient.js.map +1 -0
- package/src/main/utils/useStallionModal.js +4 -3
- package/src/main/utils/useStallionModal.js.map +1 -1
- package/src/main/utils/useStallionUpdate.js +14 -0
- package/src/main/utils/useStallionUpdate.js.map +1 -0
- package/src/main/utils/withStallion.js +1 -4
- package/src/main/utils/withStallion.js.map +1 -1
- package/src/types/config.types.js +5 -0
- package/src/types/config.types.js.map +1 -0
- package/src/types/meta.types.js +11 -0
- package/src/types/meta.types.js.map +1 -1
- package/src/types/updateMeta.types.js +7 -0
- package/src/types/updateMeta.types.js.map +1 -0
- package/src/types/user.types.js +1 -2
- package/src/types/user.types.js.map +1 -1
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -1
- package/types/main/components/common/Footer/index.d.ts +1 -4
- package/types/main/components/common/Footer/index.d.ts.map +1 -1
- package/types/main/components/common/Footer/styles.d.ts +30 -29
- package/types/main/components/common/Footer/styles.d.ts.map +1 -1
- package/types/main/components/common/Header/index.d.ts +0 -2
- package/types/main/components/common/Header/index.d.ts.map +1 -1
- package/types/main/components/common/Header/styles.d.ts +6 -1
- package/types/main/components/common/Header/styles.d.ts.map +1 -1
- package/types/main/components/common/Spinner/index.d.ts.map +1 -1
- package/types/main/components/modules/listing/components/BucketCard.d.ts.map +1 -1
- package/types/main/components/modules/listing/components/BundleCard.d.ts.map +1 -1
- package/types/main/components/modules/listing/components/BundleCardInfoSection.d.ts +2 -0
- package/types/main/components/modules/listing/components/BundleCardInfoSection.d.ts.map +1 -1
- package/types/main/components/modules/listing/components/CardDescriptionContent.d.ts.map +1 -1
- package/types/main/components/modules/listing/components/ConfigView.d.ts +8 -0
- package/types/main/components/modules/listing/components/ConfigView.d.ts.map +1 -0
- package/types/main/components/modules/listing/components/MetaCard.d.ts +8 -0
- package/types/main/components/modules/listing/components/MetaCard.d.ts.map +1 -0
- package/types/main/components/modules/listing/components/SlotView.d.ts +5 -0
- package/types/main/components/modules/listing/components/SlotView.d.ts.map +1 -0
- package/types/main/components/modules/listing/components/styles/index.d.ts +26 -5
- package/types/main/components/modules/listing/components/styles/index.d.ts.map +1 -1
- package/types/main/components/modules/listing/hooks/useListing.d.ts +2 -0
- package/types/main/components/modules/listing/hooks/useListing.d.ts.map +1 -1
- package/types/main/components/modules/listing/index.d.ts.map +1 -1
- package/types/main/components/modules/login/index.d.ts.map +1 -1
- package/types/main/components/modules/login/styles/index.d.ts +17 -3
- package/types/main/components/modules/login/styles/index.d.ts.map +1 -1
- package/types/main/components/modules/modal/StallionModal.d.ts.map +1 -1
- package/types/main/components/modules/modal/hooks/useStallionModal.d.ts +2 -11
- package/types/main/components/modules/modal/hooks/useStallionModal.d.ts.map +1 -1
- package/types/main/components/modules/prod/index.d.ts +3 -0
- package/types/main/components/modules/prod/index.d.ts.map +1 -0
- package/types/main/components/modules/prod/prod.d.ts +4 -0
- package/types/main/components/modules/prod/prod.d.ts.map +1 -0
- package/types/main/components/modules/prod/styles/index.d.ts +19 -0
- package/types/main/components/modules/prod/styles/index.d.ts.map +1 -0
- package/types/main/constants/apiConstants.d.ts +5 -3
- package/types/main/constants/apiConstants.d.ts.map +1 -1
- package/types/main/constants/appConstants.d.ts +40 -7
- package/types/main/constants/appConstants.d.ts.map +1 -1
- package/types/main/constants/colors.d.ts +2 -0
- package/types/main/constants/colors.d.ts.map +1 -1
- package/types/main/index.d.ts +1 -1
- package/types/main/state/actionCreators/useBucketActions.d.ts +2 -1
- package/types/main/state/actionCreators/useBucketActions.d.ts.map +1 -1
- package/types/main/state/actionCreators/useBundleActions.d.ts +2 -1
- package/types/main/state/actionCreators/useBundleActions.d.ts.map +1 -1
- package/types/main/state/actionCreators/useConfigActions.d.ts +7 -0
- package/types/main/state/actionCreators/useConfigActions.d.ts.map +1 -0
- package/types/main/state/actionCreators/useDownloadActions.d.ts +5 -2
- package/types/main/state/actionCreators/useDownloadActions.d.ts.map +1 -1
- package/types/main/state/actionCreators/useMetaActions.d.ts +1 -1
- package/types/main/state/actionCreators/useMetaActions.d.ts.map +1 -1
- package/types/main/state/actionCreators/useUpdateMetaActions.d.ts +8 -0
- package/types/main/state/actionCreators/useUpdateMetaActions.d.ts.map +1 -0
- package/types/main/state/actionCreators/useUserActions.d.ts +5 -7
- package/types/main/state/actionCreators/useUserActions.d.ts.map +1 -1
- package/types/main/state/actions/configActions.d.ts +3 -0
- package/types/main/state/actions/configActions.d.ts.map +1 -0
- package/types/main/state/actions/userActions.d.ts +2 -4
- package/types/main/state/actions/userActions.d.ts.map +1 -1
- package/types/main/state/index.d.ts.map +1 -1
- package/types/main/state/reducers/configReducer.d.ts +4 -0
- package/types/main/state/reducers/configReducer.d.ts.map +1 -0
- package/types/main/state/reducers/updateMetaReducer.d.ts +10 -0
- package/types/main/state/reducers/updateMetaReducer.d.ts.map +1 -0
- package/types/main/state/reducers/userReducer.d.ts.map +1 -1
- package/types/main/state/useStallionEvents.d.ts +12 -0
- package/types/main/state/useStallionEvents.d.ts.map +1 -0
- package/types/main/utils/ErrorBoundary.d.ts +1 -1
- package/types/main/utils/ErrorBoundary.d.ts.map +1 -1
- package/types/main/utils/StallionEventEmitter.d.ts +11 -0
- package/types/main/utils/StallionEventEmitter.d.ts.map +1 -0
- package/types/main/utils/StallionNativeUtils.d.ts +11 -0
- package/types/main/utils/StallionNativeUtils.d.ts.map +1 -0
- package/types/main/utils/debounce.d.ts +3 -0
- package/types/main/utils/debounce.d.ts.map +1 -0
- package/types/main/utils/useApiClient.d.ts +8 -0
- package/types/main/utils/useApiClient.d.ts.map +1 -0
- package/types/main/utils/useStallionUpdate.d.ts +3 -0
- package/types/main/utils/useStallionUpdate.d.ts.map +1 -0
- package/types/main/utils/withStallion.d.ts +1 -2
- package/types/main/utils/withStallion.d.ts.map +1 -1
- package/types/types/config.types.d.ts +16 -0
- package/types/types/config.types.d.ts.map +1 -0
- package/types/types/globalProvider.types.d.ts +10 -10
- package/types/types/globalProvider.types.d.ts.map +1 -1
- package/types/types/meta.types.d.ts +18 -3
- package/types/types/meta.types.d.ts.map +1 -1
- package/types/types/updateMeta.types.d.ts +37 -0
- package/types/types/updateMeta.types.d.ts.map +1 -0
- package/types/types/user.types.d.ts +5 -20
- package/types/types/user.types.d.ts.map +1 -1
- package/types/types/utils.types.d.ts +15 -11
- package/types/types/utils.types.d.ts.map +1 -1
- package/android/src/main/java/com/stallion/StallionConstants.java +0 -37
- package/android/src/main/java/com/stallion/StallionErrorBoundary.java +0 -49
- package/android/src/main/java/com/stallion/StallionStorage.java +0 -54
- package/android/src/main/java/com/stallion/StallionZip.java +0 -127
- package/ios/main/StallionDownloader.swift +0 -124
- package/ios/main/StallionErrorBoundary.h +0 -17
- package/ios/main/StallionErrorBoundary.m +0 -62
- package/ios/main/StallionUtil.swift +0 -29
- package/src/main/components/common/ProfileOverlay/index.js +0 -39
- package/src/main/components/common/ProfileOverlay/index.js.map +0 -1
- package/src/main/components/common/ProfileOverlay/styles.js +0 -39
- package/src/main/components/common/ProfileOverlay/styles.js.map +0 -1
- package/src/main/components/modules/login/components/Email.js +0 -41
- package/src/main/components/modules/login/components/Email.js.map +0 -1
- package/src/main/components/modules/login/components/Otp.js +0 -45
- package/src/main/components/modules/login/components/Otp.js.map +0 -1
- package/src/main/components/modules/login/components/styles/index.js +0 -28
- package/src/main/components/modules/login/components/styles/index.js.map +0 -1
- package/src/main/components/modules/login/hooks/useLoginFlow.js +0 -60
- package/src/main/components/modules/login/hooks/useLoginFlow.js.map +0 -1
- package/src/main/utils/SharedDataManager.js +0 -34
- package/src/main/utils/SharedDataManager.js.map +0 -1
- package/src/main/utils/StallionNaitveUtils.js +0 -7
- package/src/main/utils/StallionNaitveUtils.js.map +0 -1
- package/src/main/utils/apiUtils.js +0 -16
- package/src/main/utils/apiUtils.js.map +0 -1
- package/types/main/components/common/ProfileOverlay/index.d.ts +0 -10
- package/types/main/components/common/ProfileOverlay/index.d.ts.map +0 -1
- package/types/main/components/common/ProfileOverlay/styles.d.ts +0 -36
- package/types/main/components/common/ProfileOverlay/styles.d.ts.map +0 -1
- package/types/main/components/modules/login/components/Email.d.ts +0 -13
- package/types/main/components/modules/login/components/Email.d.ts.map +0 -1
- package/types/main/components/modules/login/components/Otp.d.ts +0 -12
- package/types/main/components/modules/login/components/Otp.d.ts.map +0 -1
- package/types/main/components/modules/login/components/styles/index.d.ts +0 -25
- package/types/main/components/modules/login/components/styles/index.d.ts.map +0 -1
- package/types/main/components/modules/login/hooks/useLoginFlow.d.ts +0 -18
- package/types/main/components/modules/login/hooks/useLoginFlow.d.ts.map +0 -1
- package/types/main/utils/SharedDataManager.d.ts +0 -18
- package/types/main/utils/SharedDataManager.d.ts.map +0 -1
- package/types/main/utils/StallionNaitveUtils.d.ts +0 -7
- package/types/main/utils/StallionNaitveUtils.d.ts.map +0 -1
- package/types/main/utils/apiUtils.d.ts +0 -7
- package/types/main/utils/apiUtils.d.ts.map +0 -1
|
@@ -2,25 +2,169 @@ package com.stallion;
|
|
|
2
2
|
|
|
3
3
|
import android.content.Context;
|
|
4
4
|
|
|
5
|
+
import com.stallion.events.StallionEventConstants;
|
|
6
|
+
import com.stallion.events.StallionEventManager;
|
|
7
|
+
import com.stallion.storage.StallionConfigConstants;
|
|
8
|
+
import com.stallion.storage.StallionStateManager;
|
|
9
|
+
import com.stallion.storage.StallionMeta;
|
|
10
|
+
import com.stallion.storage.StallionMetaConstants;
|
|
11
|
+
import com.stallion.utils.StallionFileManager;
|
|
12
|
+
import com.stallion.utils.StallionSlotManager;
|
|
13
|
+
|
|
14
|
+
import org.json.JSONObject;
|
|
15
|
+
|
|
16
|
+
import java.io.File;
|
|
17
|
+
|
|
5
18
|
public class Stallion {
|
|
6
19
|
|
|
20
|
+
private static StallionStateManager stateManager;
|
|
21
|
+
|
|
7
22
|
public static String getJSBundleFile(Context applicationContext) {
|
|
8
23
|
return getJSBundleFile(applicationContext, null);
|
|
9
24
|
}
|
|
10
25
|
|
|
11
26
|
public static String getJSBundleFile(Context applicationContext, String defaultBundlePath) {
|
|
12
|
-
|
|
13
|
-
|
|
27
|
+
StallionStateManager.init(applicationContext);
|
|
28
|
+
stateManager = StallionStateManager.getInstance();
|
|
29
|
+
|
|
30
|
+
validateAppVersion(stateManager.getStallionConfig().getAppVersion());
|
|
31
|
+
|
|
32
|
+
StallionEventManager.init(stateManager);
|
|
33
|
+
|
|
34
|
+
String baseFolderPath = stateManager.getStallionConfig().getFilesDirectory();
|
|
35
|
+
StallionMeta stallionMeta = stateManager.stallionMeta;
|
|
36
|
+
StallionMetaConstants.SwitchState switchState = stallionMeta.getSwitchState();
|
|
37
|
+
|
|
38
|
+
if (switchState == StallionMetaConstants.SwitchState.PROD) {
|
|
39
|
+
return getProdBundlePath(baseFolderPath, defaultBundlePath);
|
|
40
|
+
} else if (switchState == StallionMetaConstants.SwitchState.STAGE) {
|
|
41
|
+
return getStageBundlePath(baseFolderPath, defaultBundlePath);
|
|
42
|
+
}
|
|
43
|
+
return getDefaultBundle(defaultBundlePath);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private static void validateAppVersion(String currentAppVersion) {
|
|
47
|
+
StallionStateManager stallionStateManager = StallionStateManager.getInstance();
|
|
48
|
+
String cachedAppVersion = stallionStateManager.getString(StallionConfigConstants.STALLION_APP_VERSION_IDENTIFIER, "");;
|
|
14
49
|
if (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
50
|
+
currentAppVersion != null
|
|
51
|
+
&& !currentAppVersion.isEmpty()
|
|
52
|
+
&& !cachedAppVersion.equals(currentAppVersion)
|
|
18
53
|
) {
|
|
19
|
-
|
|
20
|
-
|
|
54
|
+
stallionStateManager.setString(StallionConfigConstants.STALLION_APP_VERSION_IDENTIFIER, currentAppVersion);
|
|
55
|
+
StallionSlotManager.fallbackProd();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private static void mountNewProdBundle(String baseFolderPath) {
|
|
60
|
+
StallionMeta stallionMeta = stateManager.stallionMeta;
|
|
61
|
+
String prodTempHash = stallionMeta.getProdTempHash();
|
|
62
|
+
if(prodTempHash != null && !prodTempHash.isEmpty()) {
|
|
63
|
+
try {
|
|
64
|
+
StallionFileManager.moveFile(
|
|
65
|
+
new File(baseFolderPath, StallionConfigConstants.PROD_DIRECTORY + StallionConfigConstants.TEMP_FOLDER_SLOT),
|
|
66
|
+
new File(baseFolderPath, StallionConfigConstants.PROD_DIRECTORY + StallionConfigConstants.NEW_FOLDER_SLOT)
|
|
67
|
+
);
|
|
68
|
+
stallionMeta.setProdNewHash(prodTempHash);
|
|
69
|
+
stallionMeta.setProdTempHash("");
|
|
70
|
+
stateManager.syncStallionMeta();
|
|
71
|
+
sendInstallEvent(prodTempHash);
|
|
72
|
+
} catch (Exception ignored) {}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private static void mountNewStageBundle(String baseFolderPath) {
|
|
77
|
+
StallionMeta stallionMeta = stateManager.stallionMeta;
|
|
78
|
+
String stageTempHash = stallionMeta.getStageTempHash();
|
|
79
|
+
if(stageTempHash != null && !stageTempHash.isEmpty()) {
|
|
80
|
+
try {
|
|
81
|
+
StallionFileManager.moveFile(
|
|
82
|
+
new File(baseFolderPath, StallionConfigConstants.STAGE_DIRECTORY + StallionConfigConstants.TEMP_FOLDER_SLOT),
|
|
83
|
+
new File(baseFolderPath, StallionConfigConstants.STAGE_DIRECTORY + StallionConfigConstants.NEW_FOLDER_SLOT)
|
|
84
|
+
);
|
|
85
|
+
stallionMeta.setStageNewHash(stageTempHash);
|
|
86
|
+
stallionMeta.setStageTempHash("");
|
|
87
|
+
stateManager.syncStallionMeta();
|
|
88
|
+
} catch (Exception ignored) {}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private static String getProdBundlePath(String baseFolderPath, String defaultBundlePath) {
|
|
93
|
+
StallionMeta stallionMeta = stateManager.stallionMeta;
|
|
94
|
+
|
|
95
|
+
mountNewProdBundle(baseFolderPath);
|
|
96
|
+
|
|
97
|
+
switch (stallionMeta.getCurrentProdSlot()) {
|
|
98
|
+
case NEW_SLOT:
|
|
99
|
+
return resolveBundlePath(baseFolderPath + StallionConfigConstants.PROD_DIRECTORY + StallionConfigConstants.NEW_FOLDER_SLOT, defaultBundlePath, stallionMeta.getProdNewHash(), true);
|
|
100
|
+
case STABLE_SLOT:
|
|
101
|
+
return resolveBundlePath(baseFolderPath + StallionConfigConstants.PROD_DIRECTORY + StallionConfigConstants.STABLE_FOLDER_SLOT, defaultBundlePath, stallionMeta.getProdStableHash(), true);
|
|
102
|
+
default:
|
|
103
|
+
return getDefaultBundle(defaultBundlePath);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private static String getStageBundlePath(String baseFolderPath, String defaultBundlePath) {
|
|
108
|
+
StallionMeta stallionMeta = stateManager.stallionMeta;
|
|
109
|
+
|
|
110
|
+
mountNewStageBundle(baseFolderPath);
|
|
111
|
+
|
|
112
|
+
switch (stallionMeta.getCurrentStageSlot()) {
|
|
113
|
+
case NEW_SLOT:
|
|
114
|
+
return resolveBundlePath(baseFolderPath + StallionConfigConstants.STAGE_DIRECTORY + StallionConfigConstants.NEW_FOLDER_SLOT, defaultBundlePath, stallionMeta.getStageNewHash(), false);
|
|
115
|
+
default:
|
|
116
|
+
return getDefaultBundle(defaultBundlePath);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
private static void sendInstallEvent(String releaseHash) {
|
|
121
|
+
try {
|
|
122
|
+
JSONObject eventPayload = new JSONObject();
|
|
123
|
+
eventPayload.put("releaseHash", releaseHash);
|
|
124
|
+
|
|
125
|
+
StallionEventManager.getInstance().sendEvent(
|
|
126
|
+
StallionEventConstants.NativeProdEventTypes.INSTALLED_PROD.toString(),
|
|
127
|
+
eventPayload
|
|
128
|
+
);
|
|
129
|
+
} catch (Exception e) {
|
|
130
|
+
e.printStackTrace();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
private static void sendCorruptionEvent(String releaseHash, String folderPath) {
|
|
135
|
+
try {
|
|
136
|
+
JSONObject eventPayload = new JSONObject();
|
|
137
|
+
eventPayload.put("releaseHash", releaseHash);
|
|
138
|
+
eventPayload.put("meta", folderPath);
|
|
139
|
+
|
|
140
|
+
StallionEventManager.getInstance().sendEvent(
|
|
141
|
+
StallionEventConstants.NativeProdEventTypes.CORRUPTED_FILE_ERROR.toString(),
|
|
142
|
+
eventPayload
|
|
143
|
+
);
|
|
144
|
+
} catch (Exception e) {
|
|
145
|
+
e.printStackTrace();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private static String resolveBundlePath(String folderPath, String defaultBundlePath, String releaseHash, Boolean isProd) {
|
|
150
|
+
String bundlePath = folderPath + StallionConfigConstants.UNZIP_FOLDER_NAME + StallionConfigConstants.ANDROID_BUNDLE_FILE_NAME;
|
|
151
|
+
if (new File(bundlePath).exists()) {
|
|
152
|
+
return bundlePath;
|
|
21
153
|
} else {
|
|
22
|
-
if
|
|
23
|
-
|
|
154
|
+
if(isProd) {
|
|
155
|
+
StallionSlotManager.rollbackProd(true, "Corruped file not found" + folderPath);
|
|
156
|
+
sendCorruptionEvent(releaseHash, folderPath);
|
|
157
|
+
} else {
|
|
158
|
+
StallionSlotManager.rollbackStage();
|
|
159
|
+
}
|
|
160
|
+
return getDefaultBundle(defaultBundlePath);
|
|
24
161
|
}
|
|
25
162
|
}
|
|
163
|
+
|
|
164
|
+
private static String getDefaultBundle(String defaultBundlePath) {
|
|
165
|
+
return defaultBundlePath != null && !defaultBundlePath.isEmpty()
|
|
166
|
+
? defaultBundlePath
|
|
167
|
+
: StallionConfigConstants.DEFAULT_JS_BUNDLE_LOCATION_BASE + StallionConfigConstants.ANDROID_BUNDLE_FILE_NAME;
|
|
168
|
+
}
|
|
26
169
|
}
|
|
170
|
+
|
|
@@ -2,210 +2,171 @@ package com.stallion;
|
|
|
2
2
|
|
|
3
3
|
import androidx.annotation.NonNull;
|
|
4
4
|
|
|
5
|
-
import com.facebook.react.bridge.
|
|
6
|
-
import com.facebook.react.bridge.Callback;
|
|
5
|
+
import com.facebook.react.bridge.LifecycleEventListener;
|
|
7
6
|
import com.facebook.react.bridge.Promise;
|
|
8
7
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
9
8
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
10
9
|
import com.facebook.react.bridge.ReactMethod;
|
|
11
10
|
import com.facebook.react.bridge.ReadableMap;
|
|
12
|
-
import com.facebook.react.bridge.WritableMap;
|
|
13
11
|
import com.facebook.react.module.annotations.ReactModule;
|
|
14
12
|
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
13
|
+
import com.stallion.events.StallionEventManager;
|
|
14
|
+
import com.stallion.networkmanager.StallionStageManager;
|
|
15
|
+
import com.stallion.networkmanager.StallionSyncHandler;
|
|
16
|
+
import com.stallion.storage.StallionConfigConstants;
|
|
15
17
|
|
|
16
|
-
import
|
|
17
|
-
|
|
18
|
-
import
|
|
19
|
-
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
|
|
23
|
-
import java.
|
|
24
|
-
import java.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
private ReactApplicationContext currentReactContext;
|
|
32
|
-
private String baseDir;
|
|
33
|
-
private StallionStorage stallionStorage;
|
|
34
|
-
private DeviceEventManagerModule.RCTDeviceEventEmitter eventEmitter;
|
|
18
|
+
import com.stallion.storage.StallionMetaConstants;
|
|
19
|
+
import com.stallion.storage.StallionStateManager;
|
|
20
|
+
import com.stallion.utils.StallionExceptionHandler;
|
|
21
|
+
|
|
22
|
+
import org.json.JSONArray;
|
|
23
|
+
import org.json.JSONException;
|
|
24
|
+
|
|
25
|
+
import java.util.ArrayList;
|
|
26
|
+
import java.util.List;
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@ReactModule(name = StallionConfigConstants.MODULE_NAME)
|
|
30
|
+
public class StallionModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
|
|
31
|
+
private final ReactApplicationContext currentReactContext;
|
|
32
|
+
private final StallionStateManager stallionStateManager;
|
|
35
33
|
|
|
36
34
|
public StallionModule(ReactApplicationContext reactContext) {
|
|
37
35
|
super(reactContext);
|
|
36
|
+
StallionStateManager.init(reactContext);
|
|
37
|
+
this.stallionStateManager = StallionStateManager.getInstance();
|
|
38
38
|
this.currentReactContext = reactContext;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
StallionExceptionHandler.initErrorBoundary(reactContext);
|
|
40
|
+
reactContext.addLifecycleEventListener(this);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Override
|
|
44
|
+
public void onHostResume() {
|
|
45
|
+
StallionSyncHandler.sync();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@Override
|
|
49
|
+
public void onHostPause() {}
|
|
50
|
+
|
|
51
|
+
@Override
|
|
52
|
+
public void onHostDestroy() {}
|
|
53
|
+
|
|
54
|
+
@Override
|
|
55
|
+
public void onCatalystInstanceDestroy() {
|
|
56
|
+
super.onCatalystInstanceDestroy();
|
|
57
|
+
this.currentReactContext.removeLifecycleEventListener(this);
|
|
46
58
|
}
|
|
47
59
|
|
|
48
60
|
@Override
|
|
49
61
|
@NonNull
|
|
50
62
|
public String getName() {
|
|
51
|
-
return
|
|
63
|
+
return StallionConfigConstants.MODULE_NAME;
|
|
52
64
|
}
|
|
53
65
|
|
|
54
66
|
@ReactMethod
|
|
55
|
-
public void
|
|
56
|
-
|
|
67
|
+
public void onLaunch(String launchData) {
|
|
68
|
+
stallionStateManager.setIsMounted(true);
|
|
69
|
+
|
|
70
|
+
DeviceEventManagerModule.RCTDeviceEventEmitter eventEmitter = this.currentReactContext.getJSModule(
|
|
71
|
+
DeviceEventManagerModule.RCTDeviceEventEmitter.class
|
|
72
|
+
);
|
|
73
|
+
StallionEventManager.getInstance().setEmitter(eventEmitter);
|
|
74
|
+
|
|
75
|
+
checkPendingDownloads();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
private void checkPendingDownloads() {
|
|
79
|
+
String pendingReleaseUrl = stallionStateManager.getPendingReleaseUrl();
|
|
80
|
+
String pendingReleaseHash = stallionStateManager.getPendingReleaseHash();
|
|
81
|
+
if(!pendingReleaseUrl.isEmpty() && !pendingReleaseHash.isEmpty()) {
|
|
82
|
+
StallionSyncHandler.downloadNewRelease(pendingReleaseHash, pendingReleaseUrl);
|
|
83
|
+
stallionStateManager.setPendingRelease("", "");
|
|
84
|
+
}
|
|
57
85
|
}
|
|
58
86
|
|
|
59
87
|
@ReactMethod
|
|
60
|
-
public void
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
88
|
+
public void getStallionConfig(Promise promise) {
|
|
89
|
+
try {
|
|
90
|
+
String stallionConfigJsonString = stallionStateManager.getStallionConfig().toJSON().toString();
|
|
91
|
+
promise.resolve(stallionConfigJsonString);
|
|
92
|
+
} catch (Exception e) {
|
|
93
|
+
promise.reject("getStallionConfig error:", e.toString());
|
|
94
|
+
}
|
|
64
95
|
}
|
|
65
96
|
|
|
66
97
|
@ReactMethod
|
|
67
|
-
public void getStallionMeta(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
bundleMeta.putBoolean(StallionConstants.STALLION_SWITCH_STATE_IDENTIFIER,
|
|
75
|
-
switchState == null ? false : switchState.equals(StallionConstants.STALLION_SWITCH_ON)
|
|
76
|
-
);
|
|
77
|
-
bundleMeta.putString(StallionConstants.ACTIVE_VERSION_IDENTIFIER, String.valueOf(activeVersion));
|
|
78
|
-
callback.invoke(bundleMeta);
|
|
98
|
+
public void getStallionMeta(Promise promise) {
|
|
99
|
+
try {
|
|
100
|
+
String stallionMetaJsonString = stallionStateManager.stallionMeta.toJSON().toString();
|
|
101
|
+
promise.resolve(stallionMetaJsonString);
|
|
102
|
+
} catch (Exception e) {
|
|
103
|
+
promise.reject("getStallionMeta error:", e.toString());
|
|
104
|
+
}
|
|
79
105
|
}
|
|
80
106
|
|
|
81
107
|
@ReactMethod
|
|
82
|
-
public void toggleStallionSwitch(
|
|
83
|
-
|
|
108
|
+
public void toggleStallionSwitch(String switchState, Promise promise) {
|
|
109
|
+
try {
|
|
110
|
+
stallionStateManager.stallionMeta.setSwitchState(StallionMetaConstants.SwitchState.fromString(switchState));
|
|
111
|
+
stallionStateManager.syncStallionMeta();
|
|
112
|
+
promise.resolve("Success");
|
|
113
|
+
} catch (Exception e) {
|
|
114
|
+
promise.reject("toggleStallionSwitch error:", e.toString());
|
|
115
|
+
}
|
|
84
116
|
}
|
|
85
117
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
118
|
+
@ReactMethod
|
|
119
|
+
public void updateSdkToken(String newSdkToken, Promise promise) {
|
|
120
|
+
try {
|
|
121
|
+
stallionStateManager.getStallionConfig().updateSdkToken(newSdkToken);
|
|
122
|
+
promise.resolve("updateSdkToken success");
|
|
123
|
+
} catch (Exception e) {
|
|
124
|
+
promise.reject("updateSdkToken error:", e.toString());
|
|
89
125
|
}
|
|
90
|
-
return this.eventEmitter;
|
|
91
126
|
}
|
|
92
127
|
|
|
93
128
|
@ReactMethod
|
|
94
|
-
public
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
Integer receivedVersion = bundleInfo.getInt("version");
|
|
98
|
-
|
|
99
|
-
ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
100
|
-
|
|
101
|
-
executor.execute(() -> {
|
|
102
|
-
DeviceEventManagerModule.RCTDeviceEventEmitter eventEmitter = getEventEmitter();
|
|
103
|
-
|
|
104
|
-
FileOutputStream fout = null;
|
|
105
|
-
BufferedOutputStream bout = null;
|
|
106
|
-
BufferedInputStream inputStream = null;
|
|
107
|
-
HttpURLConnection connection = null;
|
|
108
|
-
File downloadedZip = null;
|
|
109
|
-
boolean isZip = false;
|
|
110
|
-
|
|
111
|
-
try {
|
|
112
|
-
int DOWNLOAD_BUFFER_SIZE = StallionConstants.DOWNLOAD_BUFFER_SIZE;
|
|
113
|
-
URL url = new URL(receivedDownloadUrl);
|
|
114
|
-
connection = (HttpURLConnection) url.openConnection();
|
|
115
|
-
connection.setRequestMethod( "GET" );
|
|
116
|
-
connection.setRequestProperty("x-sdk-access-token", stallionStorage.get(StallionConstants.API_KEY_IDENTIFIER));
|
|
117
|
-
connection.setRequestProperty("Content-Type", "application/json");
|
|
118
|
-
|
|
119
|
-
connection.setDoInput(true);
|
|
120
|
-
|
|
121
|
-
connection.connect();
|
|
122
|
-
inputStream = new BufferedInputStream(connection.getInputStream());
|
|
123
|
-
File downloadFolder = new File(baseDir + StallionConstants.DOWNLOAD_FOLDER_DIR);
|
|
124
|
-
downloadFolder.getParentFile().mkdirs();
|
|
125
|
-
|
|
126
|
-
downloadedZip = new File(downloadFolder, StallionConstants.ZIP_FILE_NAME);
|
|
127
|
-
downloadedZip.getParentFile().mkdirs();
|
|
128
|
-
|
|
129
|
-
fout = new FileOutputStream(downloadedZip, false);
|
|
130
|
-
bout = new BufferedOutputStream(fout, DOWNLOAD_BUFFER_SIZE);
|
|
131
|
-
byte[] data = new byte[DOWNLOAD_BUFFER_SIZE];
|
|
132
|
-
byte[] header = new byte[4];
|
|
133
|
-
|
|
134
|
-
long totalBytes = connection.getContentLength();
|
|
135
|
-
long receivedBytes = 0;
|
|
136
|
-
int numBytesRead;
|
|
137
|
-
double prevDownloadFraction = 0;
|
|
138
|
-
double progressEventThreshold = 0.1;
|
|
139
|
-
while ((numBytesRead = inputStream.read(data, 0, DOWNLOAD_BUFFER_SIZE)) >= 0) {
|
|
140
|
-
if (receivedBytes < 4) {
|
|
141
|
-
for (int i = 0; i < numBytesRead; i++) {
|
|
142
|
-
int headerOffset = (int) (receivedBytes) + i;
|
|
143
|
-
if (headerOffset >= 4) {
|
|
144
|
-
break;
|
|
145
|
-
}
|
|
146
|
-
header[headerOffset] = data[i];
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
receivedBytes += numBytesRead;
|
|
151
|
-
bout.write(data, 0, numBytesRead);
|
|
152
|
-
double currentDownloadFraction = (double) receivedBytes / (double) totalBytes;
|
|
153
|
-
if(currentDownloadFraction - prevDownloadFraction > progressEventThreshold) {
|
|
154
|
-
prevDownloadFraction = currentDownloadFraction;
|
|
155
|
-
getReactApplicationContext().runOnUiQueueThread(() -> getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(StallionConstants.DOWNLOAD_PROGRESS_EVENT, currentDownloadFraction));
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
isZip = ByteBuffer.wrap(header).getInt() == 0x504b0304;
|
|
160
|
-
Log.d("", String.valueOf(isZip));
|
|
161
|
-
|
|
162
|
-
} catch (Exception e) {
|
|
163
|
-
promise.reject(StallionConstants.DOWNLOAD_ERROR_PREFIX, StallionConstants.DOWNLOAD_API_ERROR_MESSAGE);
|
|
164
|
-
} finally {
|
|
165
|
-
try {
|
|
166
|
-
if (bout != null) bout.close();
|
|
167
|
-
if (fout != null) fout.close();
|
|
168
|
-
if (inputStream != null) inputStream.close();
|
|
169
|
-
if (connection != null) connection.disconnect();
|
|
170
|
-
} catch (IOException e) {
|
|
171
|
-
promise.reject(StallionConstants.DOWNLOAD_ERROR_PREFIX, StallionConstants.DOWNLOAD_API_ERROR_MESSAGE);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
129
|
+
public void sync() {
|
|
130
|
+
StallionSyncHandler.sync();
|
|
131
|
+
}
|
|
174
132
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
133
|
+
@ReactMethod
|
|
134
|
+
public void downloadStageBundle(ReadableMap bundleInfo, Promise promise) {
|
|
135
|
+
StallionStageManager.downloadStageBundle(bundleInfo, promise);
|
|
136
|
+
}
|
|
179
137
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
getReactApplicationContext().runOnUiQueueThread(() -> getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(StallionConstants.DOWNLOAD_PROGRESS_EVENT, 1));
|
|
199
|
-
} catch (Exception e) {
|
|
200
|
-
promise.reject(StallionConstants.DOWNLOAD_ERROR_PREFIX, StallionConstants.DOWNLOAD_FILESYSTEM_ERROR_MESSAGE);
|
|
201
|
-
} finally {
|
|
202
|
-
try {
|
|
203
|
-
StallionZip.deleteFileOrFolderSilently(downloadedZip);
|
|
204
|
-
} catch (Exception e) {
|
|
205
|
-
promise.reject(StallionConstants.DOWNLOAD_ERROR_PREFIX, StallionConstants.DOWNLOAD_DELETE_ERROR);
|
|
206
|
-
}
|
|
207
|
-
return;
|
|
138
|
+
@ReactMethod
|
|
139
|
+
public void popEvents(Promise promise) {
|
|
140
|
+
try {
|
|
141
|
+
promise.resolve(StallionEventManager.getInstance().popEvents());
|
|
142
|
+
} catch (Exception e) {
|
|
143
|
+
promise.reject("popEvents error: ", e.toString());
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@ReactMethod
|
|
148
|
+
public void acknowledgeEvents(String eventIdsJson, Promise promise) {
|
|
149
|
+
try {
|
|
150
|
+
// Parse the stringified JSON array into a Java List
|
|
151
|
+
JSONArray jsonArray = new JSONArray(eventIdsJson);
|
|
152
|
+
List<String> eventIds = new ArrayList<>();
|
|
153
|
+
|
|
154
|
+
for (int i = 0; i < jsonArray.length(); i++) {
|
|
155
|
+
eventIds.add(jsonArray.getString(i));
|
|
208
156
|
}
|
|
209
|
-
|
|
157
|
+
|
|
158
|
+
// Use StallionEventManager to acknowledge the events
|
|
159
|
+
StallionEventManager eventManager = StallionEventManager.getInstance();
|
|
160
|
+
eventManager.acknowledgeEvents(eventIds);
|
|
161
|
+
|
|
162
|
+
// Resolve the promise indicating success
|
|
163
|
+
promise.resolve("Events acknowledged successfully.");
|
|
164
|
+
} catch (JSONException e) {
|
|
165
|
+
// Reject the promise if JSON parsing fails
|
|
166
|
+
promise.reject("ACKNOWLEDGE_EVENTS_JSON_ERROR", "Invalid JSON format for event IDs: " + e.getMessage(), e);
|
|
167
|
+
} catch (Exception e) {
|
|
168
|
+
// Reject the promise for other errors
|
|
169
|
+
promise.reject("ACKNOWLEDGE_EVENTS_ERROR", "Failed to acknowledge events: " + e.getMessage(), e);
|
|
170
|
+
}
|
|
210
171
|
}
|
|
211
172
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
package com.stallion.events;
|
|
2
|
+
|
|
3
|
+
public class StallionEventConstants {
|
|
4
|
+
public enum NativeProdEventTypes {
|
|
5
|
+
DOWNLOAD_STARTED_PROD,
|
|
6
|
+
DOWNLOAD_ERROR_PROD,
|
|
7
|
+
DOWNLOAD_COMPLETE_PROD,
|
|
8
|
+
SYNC_ERROR_PROD,
|
|
9
|
+
ROLLED_BACK_PROD,
|
|
10
|
+
INSTALLED_PROD,
|
|
11
|
+
STABILIZED_PROD,
|
|
12
|
+
EXCEPTION_PROD,
|
|
13
|
+
AUTO_ROLLED_BACK_PROD,
|
|
14
|
+
CORRUPTED_FILE_ERROR
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public enum NativeStageEventTypes {
|
|
18
|
+
DOWNLOAD_PROGRESS_STAGE,
|
|
19
|
+
DOWNLOAD_COMPLETE_STAGE,
|
|
20
|
+
EXCEPTION_STAGE
|
|
21
|
+
}
|
|
22
|
+
}
|