@appzung/react-native-code-push 11.0.0-rc5 → 11.0.0-rc7
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/CodePush.podspec +3 -5
- package/README.md +1 -1
- package/android/app/src/main/java/com/appzung/codepush/react/CodePushConstants.java +2 -0
- package/android/app/src/main/java/com/appzung/codepush/react/CodePushNativeModule.java +62 -0
- package/ios/CodePush/CodePush.h +10 -6
- package/ios/CodePush/{CodePush.m → CodePush.mm} +126 -142
- package/ios/CodePush/CodePushConfig.m +50 -0
- package/ios/CodePush.xcodeproj/project.pbxproj +6 -6
- package/lib/commonjs/CodePush.js.map +1 -1
- package/lib/commonjs/allowRestart.js +4 -2
- package/lib/commonjs/allowRestart.js.map +1 -1
- package/lib/commonjs/checkForUpdates.js +1 -1
- package/lib/commonjs/checkForUpdates.js.map +1 -1
- package/lib/commonjs/clearUpdates.js +4 -2
- package/lib/commonjs/clearUpdates.js.map +1 -1
- package/lib/commonjs/dataTransmission.js +28 -0
- package/lib/commonjs/dataTransmission.js.map +1 -0
- package/lib/commonjs/disallowRestart.js +4 -2
- package/lib/commonjs/disallowRestart.js.map +1 -1
- package/lib/commonjs/enums/LogLevel.enum.js +3 -0
- package/lib/commonjs/enums/LogLevel.enum.js.map +1 -1
- package/lib/commonjs/index.js +36 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/internals/CodePushApiSdk.js +23 -1
- package/lib/commonjs/internals/CodePushApiSdk.js.map +1 -1
- package/lib/commonjs/internals/CodePushApiSdk.types.js.map +1 -1
- package/lib/commonjs/internals/CodePushEventEmitter.js +10 -0
- package/lib/commonjs/internals/CodePushEventEmitter.js.map +1 -0
- package/lib/commonjs/internals/RemotePackageImplementation.js +2 -3
- package/lib/commonjs/internals/RemotePackageImplementation.js.map +1 -1
- package/lib/commonjs/internals/logger.js +51 -0
- package/lib/commonjs/internals/logger.js.map +1 -0
- package/lib/commonjs/internals/utils/log.js +4 -2
- package/lib/commonjs/internals/utils/log.js.map +1 -1
- package/lib/commonjs/internals/version.js +1 -1
- package/lib/commonjs/logger.js +19 -0
- package/lib/commonjs/logger.js.map +1 -0
- package/lib/commonjs/notifyAppReady.js +4 -2
- package/lib/commonjs/notifyAppReady.js.map +1 -1
- package/lib/commonjs/restartApp.js +2 -2
- package/lib/commonjs/restartApp.js.map +1 -1
- package/lib/commonjs/sync.js +5 -3
- package/lib/commonjs/sync.js.map +1 -1
- package/lib/commonjs/telemetry.js +28 -0
- package/lib/commonjs/telemetry.js.map +1 -0
- package/lib/module/CodePush.js.map +1 -1
- package/lib/module/allowRestart.js +3 -1
- package/lib/module/allowRestart.js.map +1 -1
- package/lib/module/checkForUpdates.js +1 -1
- package/lib/module/checkForUpdates.js.map +1 -1
- package/lib/module/clearUpdates.js +3 -1
- package/lib/module/clearUpdates.js.map +1 -1
- package/lib/module/dataTransmission.js +24 -0
- package/lib/module/dataTransmission.js.map +1 -0
- package/lib/module/disallowRestart.js +3 -1
- package/lib/module/disallowRestart.js.map +1 -1
- package/lib/module/enums/LogLevel.enum.js +3 -0
- package/lib/module/enums/LogLevel.enum.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/internals/CodePushApiSdk.js +23 -1
- package/lib/module/internals/CodePushApiSdk.js.map +1 -1
- package/lib/module/internals/CodePushApiSdk.types.js.map +1 -1
- package/lib/module/internals/CodePushEventEmitter.js +6 -0
- package/lib/module/internals/CodePushEventEmitter.js.map +1 -0
- package/lib/module/internals/RemotePackageImplementation.js +2 -3
- package/lib/module/internals/RemotePackageImplementation.js.map +1 -1
- package/lib/module/internals/logger.js +44 -0
- package/lib/module/internals/logger.js.map +1 -0
- package/lib/module/internals/utils/log.js +4 -2
- package/lib/module/internals/utils/log.js.map +1 -1
- package/lib/module/internals/version.js +1 -1
- package/lib/module/logger.js +4 -0
- package/lib/module/logger.js.map +1 -0
- package/lib/module/notifyAppReady.js +4 -2
- package/lib/module/notifyAppReady.js.map +1 -1
- package/lib/module/restartApp.js +2 -2
- package/lib/module/restartApp.js.map +1 -1
- package/lib/module/sync.js +5 -3
- package/lib/module/sync.js.map +1 -1
- package/lib/module/telemetry.js +24 -0
- package/lib/module/telemetry.js.map +1 -0
- package/lib/typescript/commonjs/src/CodePush.d.ts +2 -2
- package/lib/typescript/commonjs/src/CodePush.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/allowRestart.d.ts +1 -1
- package/lib/typescript/commonjs/src/allowRestart.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/clearUpdates.d.ts +1 -1
- package/lib/typescript/commonjs/src/clearUpdates.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/dataTransmission.d.ts +13 -0
- package/lib/typescript/commonjs/src/dataTransmission.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/disallowRestart.d.ts +1 -1
- package/lib/typescript/commonjs/src/disallowRestart.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/enums/LogLevel.enum.d.ts +3 -0
- package/lib/typescript/commonjs/src/enums/LogLevel.enum.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +3 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/internals/CodePushApiSdk.d.ts +3 -1
- package/lib/typescript/commonjs/src/internals/CodePushApiSdk.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/internals/CodePushApiSdk.types.d.ts +2 -0
- package/lib/typescript/commonjs/src/internals/CodePushApiSdk.types.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/internals/CodePushEventEmitter.d.ts +3 -0
- package/lib/typescript/commonjs/src/internals/CodePushEventEmitter.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/RNAppZungCodePushModuleSpec.d.ts +4 -0
- package/lib/typescript/commonjs/src/internals/RNAppZungCodePushModuleSpec.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/internals/RemotePackageImplementation.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/internals/logger.d.ts +33 -0
- package/lib/typescript/commonjs/src/internals/logger.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/internals/utils/log.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/internals/version.d.ts +1 -1
- package/lib/typescript/commonjs/src/logLevel.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/logger.d.ts +3 -0
- package/lib/typescript/commonjs/src/logger.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/notifyAppReady.d.ts +2 -0
- package/lib/typescript/commonjs/src/notifyAppReady.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/restartApp.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/sync.d.ts +2 -0
- package/lib/typescript/commonjs/src/sync.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/telemetry.d.ts +13 -0
- package/lib/typescript/commonjs/src/telemetry.d.ts.map +1 -0
- package/lib/typescript/module/src/CodePush.d.ts +2 -2
- package/lib/typescript/module/src/CodePush.d.ts.map +1 -1
- package/lib/typescript/module/src/allowRestart.d.ts +1 -1
- package/lib/typescript/module/src/allowRestart.d.ts.map +1 -1
- package/lib/typescript/module/src/clearUpdates.d.ts +1 -1
- package/lib/typescript/module/src/clearUpdates.d.ts.map +1 -1
- package/lib/typescript/module/src/dataTransmission.d.ts +13 -0
- package/lib/typescript/module/src/dataTransmission.d.ts.map +1 -0
- package/lib/typescript/module/src/disallowRestart.d.ts +1 -1
- package/lib/typescript/module/src/disallowRestart.d.ts.map +1 -1
- package/lib/typescript/module/src/enums/LogLevel.enum.d.ts +3 -0
- package/lib/typescript/module/src/enums/LogLevel.enum.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +3 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/internals/CodePushApiSdk.d.ts +3 -1
- package/lib/typescript/module/src/internals/CodePushApiSdk.d.ts.map +1 -1
- package/lib/typescript/module/src/internals/CodePushApiSdk.types.d.ts +2 -0
- package/lib/typescript/module/src/internals/CodePushApiSdk.types.d.ts.map +1 -1
- package/lib/typescript/module/src/internals/CodePushEventEmitter.d.ts +3 -0
- package/lib/typescript/module/src/internals/CodePushEventEmitter.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/RNAppZungCodePushModuleSpec.d.ts +4 -0
- package/lib/typescript/module/src/internals/RNAppZungCodePushModuleSpec.d.ts.map +1 -1
- package/lib/typescript/module/src/internals/RemotePackageImplementation.d.ts.map +1 -1
- package/lib/typescript/module/src/internals/logger.d.ts +33 -0
- package/lib/typescript/module/src/internals/logger.d.ts.map +1 -0
- package/lib/typescript/module/src/internals/utils/log.d.ts.map +1 -1
- package/lib/typescript/module/src/internals/version.d.ts +1 -1
- package/lib/typescript/module/src/logLevel.d.ts.map +1 -1
- package/lib/typescript/module/src/logger.d.ts +3 -0
- package/lib/typescript/module/src/logger.d.ts.map +1 -0
- package/lib/typescript/module/src/notifyAppReady.d.ts +2 -0
- package/lib/typescript/module/src/notifyAppReady.d.ts.map +1 -1
- package/lib/typescript/module/src/restartApp.d.ts.map +1 -1
- package/lib/typescript/module/src/sync.d.ts +2 -0
- package/lib/typescript/module/src/sync.d.ts.map +1 -1
- package/lib/typescript/module/src/telemetry.d.ts +13 -0
- package/lib/typescript/module/src/telemetry.d.ts.map +1 -0
- package/package.json +23 -14
- package/scripts/generateBundledResourcesHash.js +73 -68
- package/scripts/getFilesInFolder.js +12 -12
- package/scripts/recordFilesBeforeBundleCommand.js +19 -20
- package/src/CodePush.tsx +4 -2
- package/src/allowRestart.ts +3 -1
- package/src/checkForUpdates.ts +1 -1
- package/src/clearUpdates.ts +3 -1
- package/src/dataTransmission.ts +21 -0
- package/src/disallowRestart.ts +3 -1
- package/src/enums/LogLevel.enum.ts +3 -0
- package/src/index.ts +3 -0
- package/src/internals/CodePushApiSdk.ts +27 -0
- package/src/internals/CodePushApiSdk.types.ts +2 -0
- package/src/internals/CodePushEventEmitter.ts +4 -0
- package/src/internals/RNAppZungCodePushModuleSpec.ts +6 -0
- package/src/internals/RemotePackageImplementation.ts +2 -3
- package/src/internals/logger.ts +46 -0
- package/src/internals/utils/log.ts +4 -2
- package/src/internals/version.ts +1 -1
- package/src/logger.ts +2 -0
- package/src/notifyAppReady.ts +4 -2
- package/src/restartApp.ts +2 -2
- package/src/sync.ts +5 -3
- package/src/telemetry.ts +21 -0
- package/docs/advanced-usage.md +0 -71
- package/docs/api-android.md +0 -22
- package/docs/api-ios.md +0 -19
- package/docs/api-js/README.md +0 -58
- package/docs/api-js/enumerations/CheckFrequency.md +0 -33
- package/docs/api-js/enumerations/DeploymentStatus.md +0 -25
- package/docs/api-js/enumerations/InstallMode.md +0 -50
- package/docs/api-js/enumerations/LogLevel.md +0 -31
- package/docs/api-js/enumerations/SyncStatus.md +0 -85
- package/docs/api-js/enumerations/UpdateState.md +0 -37
- package/docs/api-js/functions/allowRestart.md +0 -17
- package/docs/api-js/functions/checkForUpdate.md +0 -29
- package/docs/api-js/functions/clearUpdates.md +0 -19
- package/docs/api-js/functions/disallowRestart.md +0 -17
- package/docs/api-js/functions/getClientUniqueId.md +0 -15
- package/docs/api-js/functions/getLogLevel.md +0 -13
- package/docs/api-js/functions/getUpdateMetadata.md +0 -23
- package/docs/api-js/functions/notifyAppReady.md +0 -17
- package/docs/api-js/functions/resetClientUniqueId.md +0 -15
- package/docs/api-js/functions/restartApp.md +0 -25
- package/docs/api-js/functions/setLogLevel.md +0 -19
- package/docs/api-js/functions/sync.md +0 -43
- package/docs/api-js/functions/withCodePush.md +0 -65
- package/docs/api-js/interfaces/CodePushOptions.md +0 -118
- package/docs/api-js/interfaces/DownloadProgress.md +0 -23
- package/docs/api-js/interfaces/LocalPackage.md +0 -171
- package/docs/api-js/interfaces/Package.md +0 -98
- package/docs/api-js/interfaces/RemotePackage.md +0 -169
- package/docs/api-js/interfaces/RollbackRetryOptions.md +0 -28
- package/docs/api-js/interfaces/StatusReport.md +0 -47
- package/docs/api-js/interfaces/SyncOptions.md +0 -80
- package/docs/api-js/interfaces/UpdateDialog.md +0 -89
- package/docs/api-js/type-aliases/DownloadProgressCallback.md +0 -21
- package/docs/api-js/type-aliases/HandleBinaryVersionMismatchCallback.md +0 -23
- package/docs/api-js/type-aliases/SyncStatusChangedCallback.md +0 -23
- package/docs/api-js/variables/DEFAULT_UPDATE_DIALOG.md +0 -12
- package/docs/code-signing.md +0 -64
- package/docs/migrating-to-v10.md +0 -31
- package/docs/setup-android.md +0 -80
- package/docs/setup-ios.md +0 -108
- package/docs/setup-windows.md +0 -55
- package/typedoc.json +0 -9
package/CodePush.podspec
CHANGED
|
@@ -14,14 +14,12 @@ Pod::Spec.new do |s|
|
|
|
14
14
|
s.tvos.deployment_target = '15.5'
|
|
15
15
|
s.preserve_paths = '*.js'
|
|
16
16
|
s.library = 'z'
|
|
17
|
-
s.source_files = 'ios/CodePush/*.{h,m}'
|
|
17
|
+
s.source_files = 'ios/CodePush/*.{h,m,mm}'
|
|
18
18
|
s.public_header_files = ['ios/CodePush/CodePush.h']
|
|
19
19
|
s.pod_target_xcconfig = { "DEFINES_MODULE" => "YES" }
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# linked properly at a parent workspace level.
|
|
24
|
-
s.dependency 'React-Core'
|
|
21
|
+
install_modules_dependencies(s)
|
|
22
|
+
|
|
25
23
|
s.dependency 'SSZipArchive', '~> 2.5.5'
|
|
26
24
|
s.dependency 'JWT', '~> 3.0.0-beta.12'
|
|
27
25
|
s.dependency 'Base64', '~> 1.1'
|
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
[AppZung](https://appzung.com) is a robust solution for CodePush functionality, created in response to AppCenter's retirement.
|
|
22
22
|
CodePush allows you to easily add a dynamic update experience to your React Native apps.
|
|
23
23
|
|
|
24
|
-
We offer feature-parity with the original CodePush and
|
|
24
|
+
We offer feature-parity with the original CodePush and introduce advanced capabilities in:
|
|
25
25
|
|
|
26
26
|
- Hosting
|
|
27
27
|
- Delivery
|
|
@@ -32,4 +32,6 @@ public class CodePushConstants {
|
|
|
32
32
|
public static final String LATEST_ROLLBACK_TIME_KEY = "time";
|
|
33
33
|
public static final String LATEST_ROLLBACK_COUNT_KEY = "count";
|
|
34
34
|
public static final String CLIENT_UNIQUE_ID_KEY = "clientUniqueId";
|
|
35
|
+
public static final String TELEMETRY_ENABLED_KEY = "telemetryEnabled";
|
|
36
|
+
public static final String DATA_TRANSMISSION_ENABLED_KEY = "dataTransmissionEnabled";
|
|
35
37
|
}
|
|
@@ -49,6 +49,8 @@ import java.util.UUID;
|
|
|
49
49
|
public class CodePushNativeModule extends BaseJavaModule {
|
|
50
50
|
private String mBinaryContentsHash = null;
|
|
51
51
|
private String mClientUniqueId = null;
|
|
52
|
+
private boolean mTelemetryEnabled = true;
|
|
53
|
+
private boolean mDataTransmissionEnabled = true;
|
|
52
54
|
private LifecycleEventListener mLifecycleEventListener = null;
|
|
53
55
|
private int mMinimumBackgroundDuration = 0;
|
|
54
56
|
|
|
@@ -78,6 +80,28 @@ public class CodePushNativeModule extends BaseJavaModule {
|
|
|
78
80
|
mClientUniqueId = UUID.randomUUID().toString();
|
|
79
81
|
preferences.edit().putString(CodePushConstants.CLIENT_UNIQUE_ID_KEY, mClientUniqueId).apply();
|
|
80
82
|
}
|
|
83
|
+
|
|
84
|
+
if (preferences.contains(CodePushConstants.TELEMETRY_ENABLED_KEY)) {
|
|
85
|
+
mTelemetryEnabled = preferences.getBoolean(CodePushConstants.TELEMETRY_ENABLED_KEY, true);
|
|
86
|
+
} else {
|
|
87
|
+
int defaultTelemetryEnabledResId = reactContext.getResources().getIdentifier("CodePushDefaultTelemetryEnabled", "bool", reactContext.getPackageName());
|
|
88
|
+
if (defaultTelemetryEnabledResId != 0) {
|
|
89
|
+
mTelemetryEnabled = reactContext.getResources().getBoolean(defaultTelemetryEnabledResId);
|
|
90
|
+
} else {
|
|
91
|
+
mTelemetryEnabled = true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (preferences.contains(CodePushConstants.DATA_TRANSMISSION_ENABLED_KEY)) {
|
|
96
|
+
mDataTransmissionEnabled = preferences.getBoolean(CodePushConstants.DATA_TRANSMISSION_ENABLED_KEY, true);
|
|
97
|
+
} else {
|
|
98
|
+
int defaultDataTransmissionEnabledResId = reactContext.getResources().getIdentifier("CodePushDefaultDataTransmissionEnabled", "bool", reactContext.getPackageName());
|
|
99
|
+
if (defaultDataTransmissionEnabledResId != 0) {
|
|
100
|
+
mDataTransmissionEnabled = reactContext.getResources().getBoolean(defaultDataTransmissionEnabledResId);
|
|
101
|
+
} else {
|
|
102
|
+
mDataTransmissionEnabled = true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
81
105
|
}
|
|
82
106
|
|
|
83
107
|
@Override
|
|
@@ -485,6 +509,8 @@ public class CodePushNativeModule extends BaseJavaModule {
|
|
|
485
509
|
configMap.putString("clientUniqueId", mClientUniqueId);
|
|
486
510
|
configMap.putString("releaseChannelPublicId", mCodePush.getReleaseChannelPublicId());
|
|
487
511
|
configMap.putString("serverUrl", mCodePush.getServerUrl());
|
|
512
|
+
configMap.putBoolean("telemetryEnabled", mTelemetryEnabled);
|
|
513
|
+
configMap.putBoolean("dataTransmissionEnabled", mDataTransmissionEnabled);
|
|
488
514
|
|
|
489
515
|
// The binary hash may be null in debug builds
|
|
490
516
|
if (mBinaryContentsHash != null) {
|
|
@@ -834,6 +860,42 @@ public class CodePushNativeModule extends BaseJavaModule {
|
|
|
834
860
|
}
|
|
835
861
|
}
|
|
836
862
|
|
|
863
|
+
@ReactMethod
|
|
864
|
+
public void setTelemetryEnabled(boolean enabled, Promise promise) {
|
|
865
|
+
try {
|
|
866
|
+
SharedPreferences preferences = mCodePush.getContext().getSharedPreferences(CodePushConstants.CODE_PUSH_PREFERENCES, 0);
|
|
867
|
+
preferences.edit().putBoolean(CodePushConstants.TELEMETRY_ENABLED_KEY, enabled).apply();
|
|
868
|
+
mTelemetryEnabled = enabled;
|
|
869
|
+
promise.resolve(null);
|
|
870
|
+
} catch (Exception e) {
|
|
871
|
+
CodePushUtils.log(e);
|
|
872
|
+
promise.reject(e);
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
@ReactMethod
|
|
877
|
+
public void getTelemetryEnabled(Promise promise) {
|
|
878
|
+
promise.resolve(mTelemetryEnabled);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
@ReactMethod
|
|
882
|
+
public void setDataTransmissionEnabled(boolean enabled, Promise promise) {
|
|
883
|
+
try {
|
|
884
|
+
SharedPreferences preferences = mCodePush.getContext().getSharedPreferences(CodePushConstants.CODE_PUSH_PREFERENCES, 0);
|
|
885
|
+
preferences.edit().putBoolean(CodePushConstants.DATA_TRANSMISSION_ENABLED_KEY, enabled).apply();
|
|
886
|
+
mDataTransmissionEnabled = enabled;
|
|
887
|
+
promise.resolve(null);
|
|
888
|
+
} catch (Exception e) {
|
|
889
|
+
CodePushUtils.log(e);
|
|
890
|
+
promise.reject(e);
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
@ReactMethod
|
|
895
|
+
public void getDataTransmissionEnabled(Promise promise) {
|
|
896
|
+
promise.resolve(mDataTransmissionEnabled);
|
|
897
|
+
}
|
|
898
|
+
|
|
837
899
|
@ReactMethod
|
|
838
900
|
public void addListener(String eventName) {
|
|
839
901
|
// Set up any upstream listeners or background tasks as necessary
|
package/ios/CodePush/CodePush.h
CHANGED
|
@@ -63,12 +63,6 @@
|
|
|
63
63
|
+ (BOOL)isFailedHash:(NSString*)packageHash;
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
/*
|
|
67
|
-
* This method is used to get information about the latest rollback.
|
|
68
|
-
* This information will be used to decide whether the application
|
|
69
|
-
* should ignore the update or not.
|
|
70
|
-
*/
|
|
71
|
-
+ (NSDictionary*)getRollbackInfo;
|
|
72
66
|
/*
|
|
73
67
|
* This method is used to save information about the latest rollback.
|
|
74
68
|
* This information will be used to decide whether the application
|
|
@@ -104,6 +98,8 @@
|
|
|
104
98
|
@property (readonly) NSString *clientUniqueId;
|
|
105
99
|
@property (copy) NSString *serverURL;
|
|
106
100
|
@property (copy) NSString *publicKey;
|
|
101
|
+
@property (nonatomic) BOOL telemetryEnabled;
|
|
102
|
+
@property (nonatomic) BOOL dataTransmissionEnabled;
|
|
107
103
|
|
|
108
104
|
+ (instancetype)current;
|
|
109
105
|
|
|
@@ -220,8 +216,16 @@ failCallback:(void (^)(NSError *err))failCallback;
|
|
|
220
216
|
|
|
221
217
|
@end
|
|
222
218
|
|
|
219
|
+
#ifdef __cplusplus
|
|
220
|
+
extern "C" {
|
|
221
|
+
#endif
|
|
222
|
+
|
|
223
223
|
void CPLog(NSString *formatString, ...);
|
|
224
224
|
|
|
225
|
+
#ifdef __cplusplus
|
|
226
|
+
}
|
|
227
|
+
#endif
|
|
228
|
+
|
|
225
229
|
typedef NS_ENUM(NSInteger, CodePushInstallMode) {
|
|
226
230
|
CodePushInstallModeImmediate,
|
|
227
231
|
CodePushInstallModeOnNextRestart,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#if __has_include(<React/RCTAssert.h>)
|
|
2
1
|
#import <React/RCTAssert.h>
|
|
3
2
|
#import <React/RCTBridgeModule.h>
|
|
4
3
|
#import <React/RCTConvert.h>
|
|
@@ -6,18 +5,10 @@
|
|
|
6
5
|
#import <React/RCTRootView.h>
|
|
7
6
|
#import <React/RCTUtils.h>
|
|
8
7
|
#import <React/RCTReloadCommand.h>
|
|
9
|
-
#else // back compatibility for RN version < 0.40
|
|
10
|
-
#import "RCTAssert.h"
|
|
11
|
-
#import "RCTBridgeModule.h"
|
|
12
|
-
#import "RCTConvert.h"
|
|
13
|
-
#import "RCTEventDispatcher.h"
|
|
14
|
-
#import "RCTRootView.h"
|
|
15
|
-
#import "RCTUtils.h"
|
|
16
|
-
#endif
|
|
17
8
|
|
|
18
9
|
#import "CodePush.h"
|
|
19
10
|
|
|
20
|
-
@interface CodePush () <RCTBridgeModule
|
|
11
|
+
@interface CodePush () <RCTBridgeModule>
|
|
21
12
|
@end
|
|
22
13
|
|
|
23
14
|
@implementation CodePush {
|
|
@@ -30,8 +21,8 @@
|
|
|
30
21
|
|
|
31
22
|
// Used to coordinate the dispatching of download progress events to JS.
|
|
32
23
|
long long _latestExpectedContentLength;
|
|
33
|
-
long long
|
|
34
|
-
|
|
24
|
+
long long _latestReceivedContentLength;
|
|
25
|
+
NSTimeInterval _lastProgressEmitTimestamp;
|
|
35
26
|
|
|
36
27
|
BOOL _allowed;
|
|
37
28
|
BOOL _restartInProgress;
|
|
@@ -255,18 +246,6 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
255
246
|
#pragma mark - Private API methods
|
|
256
247
|
|
|
257
248
|
@synthesize methodQueue = _methodQueue;
|
|
258
|
-
@synthesize pauseCallback = _pauseCallback;
|
|
259
|
-
@synthesize paused = _paused;
|
|
260
|
-
|
|
261
|
-
- (void)setPaused:(BOOL)paused
|
|
262
|
-
{
|
|
263
|
-
if (_paused != paused) {
|
|
264
|
-
_paused = paused;
|
|
265
|
-
if (_pauseCallback) {
|
|
266
|
-
_pauseCallback();
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
249
|
|
|
271
250
|
/*
|
|
272
251
|
* This method is used to clear updates that are installed
|
|
@@ -302,15 +281,15 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
302
281
|
// Export the values of the CodePushInstallMode and CodePushUpdateState
|
|
303
282
|
// enums so that the script-side can easily stay in sync
|
|
304
283
|
return @{
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
284
|
+
@"codePushInstallModeOnNextRestart":@(CodePushInstallModeOnNextRestart),
|
|
285
|
+
@"codePushInstallModeImmediate": @(CodePushInstallModeImmediate),
|
|
286
|
+
@"codePushInstallModeOnNextResume": @(CodePushInstallModeOnNextResume),
|
|
287
|
+
@"codePushInstallModeOnNextSuspend": @(CodePushInstallModeOnNextSuspend),
|
|
288
|
+
|
|
289
|
+
@"codePushUpdateStateRunning": @(CodePushUpdateStateRunning),
|
|
290
|
+
@"codePushUpdateStatePending": @(CodePushUpdateStatePending),
|
|
291
|
+
@"codePushUpdateStateLatest": @(CodePushUpdateStateLatest)
|
|
292
|
+
};
|
|
314
293
|
};
|
|
315
294
|
|
|
316
295
|
+ (BOOL)requiresMainQueueSetup
|
|
@@ -326,14 +305,14 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
326
305
|
}
|
|
327
306
|
|
|
328
307
|
- (void)dispatchDownloadProgressEvent {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
308
|
+
// Notify the script-side about the progress
|
|
309
|
+
[self sendEventWithName:DownloadProgressEvent
|
|
310
|
+
body:@{
|
|
311
|
+
@"totalBytes" : [NSNumber
|
|
312
|
+
numberWithLongLong:_latestExpectedContentLength],
|
|
313
|
+
@"receivedBytes" : [NSNumber
|
|
314
|
+
numberWithLongLong:_latestReceivedContentLength]
|
|
315
|
+
}];
|
|
337
316
|
}
|
|
338
317
|
|
|
339
318
|
/*
|
|
@@ -345,28 +324,28 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
345
324
|
if (![self binaryBundleURL]) {
|
|
346
325
|
NSString *errorMessage;
|
|
347
326
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
327
|
+
#ifdef DEBUG
|
|
328
|
+
#if TARGET_IPHONE_SIMULATOR
|
|
329
|
+
errorMessage = @"React Native doesn't generate your app's JS bundle by default when deploying to the simulator. "
|
|
330
|
+
"If you'd like to test CodePush using the simulator, you can do one of the following depending on your "
|
|
331
|
+
"React Native version and/or preferred workflow:\n\n"
|
|
353
332
|
|
|
354
|
-
|
|
355
|
-
|
|
333
|
+
"1. Update your AppDelegate.m file to load the JS bundle from the packager instead of from CodePush. "
|
|
334
|
+
"You can still test your CodePush update experience using this workflow (Debug builds only).\n\n"
|
|
356
335
|
|
|
357
|
-
|
|
358
|
-
|
|
336
|
+
"2. Force the JS bundle to be generated in simulator builds by adding 'export FORCE_BUNDLING=true' to the script under "
|
|
337
|
+
"\"Build Phases\" > \"Bundle React Native code and images\" (React Native >=0.48 only).\n\n"
|
|
359
338
|
|
|
360
|
-
|
|
361
|
-
|
|
339
|
+
"3. Force the JS bundle to be generated in simulator builds by removing the if block that echoes "
|
|
340
|
+
"\"Skipping bundling for Simulator platform\" in the \"node_modules/react-native/packager/react-native-xcode.sh\" file (React Native <=0.47 only)\n\n"
|
|
362
341
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
342
|
+
"4. Deploy a Release build to the simulator, which unlike Debug builds, will generate the JS bundle (React Native >=0.22.0 only).";
|
|
343
|
+
#else
|
|
344
|
+
errorMessage = [NSString stringWithFormat:@"The specified JS bundle file wasn't found within the app's binary. Is \"%@\" the correct file name?", [bundleResourceName stringByAppendingPathExtension:bundleResourceExtension]];
|
|
345
|
+
#endif
|
|
346
|
+
#else
|
|
368
347
|
errorMessage = @"Something went wrong. Please verify if generated JS bundle is correct. ";
|
|
369
|
-
|
|
348
|
+
#endif
|
|
370
349
|
|
|
371
350
|
RCTFatal([CodePushErrorUtils errorWithMessage:errorMessage]);
|
|
372
351
|
}
|
|
@@ -396,7 +375,6 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
396
375
|
#ifdef DEBUG
|
|
397
376
|
[self clearDebugUpdates];
|
|
398
377
|
#endif
|
|
399
|
-
self.paused = YES;
|
|
400
378
|
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
|
|
401
379
|
NSDictionary *pendingUpdate = [preferences objectForKey:PendingUpdateKey];
|
|
402
380
|
if (pendingUpdate) {
|
|
@@ -517,8 +495,8 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
517
495
|
// If there is a pending update whose "state" isn't loading, then we consider it "pending".
|
|
518
496
|
// Additionally, if a specific hash was provided, we ensure it matches that of the pending update.
|
|
519
497
|
BOOL updateIsPending = pendingUpdate &&
|
|
520
|
-
|
|
521
|
-
|
|
498
|
+
[pendingUpdate[PendingUpdateIsLoadingKey] boolValue] == NO &&
|
|
499
|
+
(!packageHash || [pendingUpdate[PendingUpdateHashKey] isEqualToString:packageHash]);
|
|
522
500
|
|
|
523
501
|
return updateIsPending;
|
|
524
502
|
}
|
|
@@ -690,10 +668,10 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
690
668
|
|
|
691
669
|
if (_installMode == CodePushInstallModeOnNextSuspend && [[self class] isPendingUpdate:nil]) {
|
|
692
670
|
_appSuspendTimer = [NSTimer scheduledTimerWithTimeInterval:_minimumBackgroundDuration
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
671
|
+
target:self
|
|
672
|
+
selector:@selector(loadBundleOnTick:)
|
|
673
|
+
userInfo:nil
|
|
674
|
+
repeats:NO];
|
|
697
675
|
}
|
|
698
676
|
}
|
|
699
677
|
|
|
@@ -708,8 +686,8 @@ static NSString *const LatestRollbackCountKey = @"count";
|
|
|
708
686
|
*/
|
|
709
687
|
RCT_EXPORT_METHOD(downloadUpdate:(NSDictionary*)updatePackage
|
|
710
688
|
notifyProgress:(BOOL)notifyProgress
|
|
711
|
-
|
|
712
|
-
|
|
689
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
690
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
713
691
|
{
|
|
714
692
|
NSDictionary *mutableUpdatePackage = [updatePackage mutableCopy];
|
|
715
693
|
NSURL *binaryBundleURL = [CodePush binaryBundleURL];
|
|
@@ -718,56 +696,46 @@ RCT_EXPORT_METHOD(downloadUpdate:(NSDictionary*)updatePackage
|
|
|
718
696
|
forKey:BinaryBundleDateKey];
|
|
719
697
|
}
|
|
720
698
|
|
|
721
|
-
if (notifyProgress) {
|
|
722
|
-
// Set up and unpause the frame observer so that it can emit
|
|
723
|
-
// progress events every frame if the progress is updated.
|
|
724
|
-
_didUpdateProgress = NO;
|
|
725
|
-
self.paused = NO;
|
|
726
|
-
}
|
|
727
|
-
|
|
728
699
|
NSString * publicKey = [[CodePushConfig current] publicKey];
|
|
729
700
|
|
|
730
701
|
[CodePushPackage
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
if (
|
|
745
|
-
|
|
746
|
-
self.paused = YES;
|
|
702
|
+
downloadPackage:mutableUpdatePackage
|
|
703
|
+
expectedBundleFileName:[bundleResourceName stringByAppendingPathExtension:bundleResourceExtension]
|
|
704
|
+
publicKey:publicKey
|
|
705
|
+
operationQueue:_methodQueue
|
|
706
|
+
// The download is progressing forward
|
|
707
|
+
progressCallback:^(long long expectedContentLength, long long receivedContentLength) {
|
|
708
|
+
self->_latestExpectedContentLength = expectedContentLength;
|
|
709
|
+
self->_latestReceivedContentLength = receivedContentLength;
|
|
710
|
+
|
|
711
|
+
if (expectedContentLength == receivedContentLength) {
|
|
712
|
+
[self dispatchDownloadProgressEvent];
|
|
713
|
+
} else if (notifyProgress) {
|
|
714
|
+
NSTimeInterval timestamp = [[NSDate date] timeIntervalSince1970];
|
|
715
|
+
if (timestamp - self->_lastProgressEmitTimestamp > 0.3) {
|
|
716
|
+
self->_lastProgressEmitTimestamp = timestamp;
|
|
747
717
|
[self dispatchDownloadProgressEvent];
|
|
748
718
|
}
|
|
749
719
|
}
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
720
|
+
}
|
|
721
|
+
// The download completed
|
|
722
|
+
doneCallback:^{
|
|
723
|
+
NSError *err;
|
|
724
|
+
NSDictionary *newPackage = [CodePushPackage getPackage:mutableUpdatePackage[PackageHashKey] error:&err];
|
|
754
725
|
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
726
|
+
if (err) {
|
|
727
|
+
return reject([NSString stringWithFormat: @"%lu", (long)err.code], err.localizedDescription, err);
|
|
728
|
+
}
|
|
729
|
+
resolve(newPackage);
|
|
730
|
+
}
|
|
731
|
+
// The download failed
|
|
732
|
+
failCallback:^(NSError *err) {
|
|
733
|
+
if ([CodePushErrorUtils isCodePushError:err]) {
|
|
734
|
+
[self saveFailedUpdate:mutableUpdatePackage];
|
|
759
735
|
}
|
|
760
|
-
// The download failed
|
|
761
|
-
failCallback:^(NSError *err) {
|
|
762
|
-
if ([CodePushErrorUtils isCodePushError:err]) {
|
|
763
|
-
[self saveFailedUpdate:mutableUpdatePackage];
|
|
764
|
-
}
|
|
765
736
|
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
self.paused = YES;
|
|
769
|
-
reject([NSString stringWithFormat: @"%lu", (long)err.code], err.localizedDescription, err);
|
|
770
|
-
}];
|
|
737
|
+
reject([NSString stringWithFormat: @"%lu", (long)err.code], err.localizedDescription, err);
|
|
738
|
+
}];
|
|
771
739
|
}
|
|
772
740
|
|
|
773
741
|
- (void)restartAppInternal:(BOOL)onlyIfUpdateIsPending
|
|
@@ -804,7 +772,7 @@ RCT_EXPORT_METHOD(downloadUpdate:(NSDictionary*)updatePackage
|
|
|
804
772
|
* app version, as well as the release channel public ID that was configured in the Info.plist file.
|
|
805
773
|
*/
|
|
806
774
|
RCT_EXPORT_METHOD(getConfiguration:(RCTPromiseResolveBlock)resolve
|
|
807
|
-
|
|
775
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
808
776
|
{
|
|
809
777
|
NSDictionary *configuration = [[CodePushConfig current] configuration];
|
|
810
778
|
NSError *error;
|
|
@@ -838,8 +806,8 @@ RCT_EXPORT_METHOD(getConfiguration:(RCTPromiseResolveBlock)resolve
|
|
|
838
806
|
* This method is the native side of the CodePush.getUpdateMetadata method.
|
|
839
807
|
*/
|
|
840
808
|
RCT_EXPORT_METHOD(getUpdateMetadata:(CodePushUpdateState)updateState
|
|
841
|
-
|
|
842
|
-
|
|
809
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
810
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
843
811
|
{
|
|
844
812
|
NSError *error;
|
|
845
813
|
NSMutableDictionary *package = [[CodePushPackage getCurrentPackage:&error] mutableCopy];
|
|
@@ -886,10 +854,10 @@ RCT_EXPORT_METHOD(getUpdateMetadata:(CodePushUpdateState)updateState
|
|
|
886
854
|
* This method is the native side of the LocalPackage.install method.
|
|
887
855
|
*/
|
|
888
856
|
RCT_EXPORT_METHOD(installUpdate:(NSDictionary*)updatePackage
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
857
|
+
installMode:(CodePushInstallMode)installMode
|
|
858
|
+
minimumBackgroundDuration:(int)minimumBackgroundDuration
|
|
859
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
860
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
893
861
|
{
|
|
894
862
|
NSError *error;
|
|
895
863
|
[CodePushPackage installPackage:updatePackage
|
|
@@ -939,8 +907,8 @@ RCT_EXPORT_METHOD(installUpdate:(NSDictionary*)updatePackage
|
|
|
939
907
|
* module, and is only used internally to populate the RemotePackage.failedInstall property.
|
|
940
908
|
*/
|
|
941
909
|
RCT_EXPORT_METHOD(isFailedUpdate:(NSString *)packageHash
|
|
942
|
-
|
|
943
|
-
|
|
910
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
911
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
944
912
|
{
|
|
945
913
|
BOOL isFailedHash = [[self class] isFailedHash:packageHash];
|
|
946
914
|
resolve(@(isFailedHash));
|
|
@@ -967,14 +935,14 @@ RCT_EXPORT_METHOD(getLatestRollbackInfo:(RCTPromiseResolveBlock)resolve
|
|
|
967
935
|
* module, and is only used internally to populate the LocalPackage.isFirstRun property.
|
|
968
936
|
*/
|
|
969
937
|
RCT_EXPORT_METHOD(isFirstRun:(NSString *)packageHash
|
|
970
|
-
|
|
971
|
-
|
|
938
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
939
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
972
940
|
{
|
|
973
941
|
NSError *error;
|
|
974
942
|
BOOL isFirstRun = _isFirstRunAfterUpdate
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
943
|
+
&& nil != packageHash
|
|
944
|
+
&& [packageHash length] > 0
|
|
945
|
+
&& [packageHash isEqualToString:[CodePushPackage getCurrentPackageHash:&error]];
|
|
978
946
|
|
|
979
947
|
resolve(@(isFirstRun));
|
|
980
948
|
}
|
|
@@ -983,14 +951,14 @@ RCT_EXPORT_METHOD(isFirstRun:(NSString *)packageHash
|
|
|
983
951
|
* This method is the native side of the CodePush.notifyApplicationReady() method.
|
|
984
952
|
*/
|
|
985
953
|
RCT_EXPORT_METHOD(notifyApplicationReady:(RCTPromiseResolveBlock)resolve
|
|
986
|
-
|
|
954
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
987
955
|
{
|
|
988
956
|
[CodePush removePendingUpdate];
|
|
989
957
|
resolve(nil);
|
|
990
958
|
}
|
|
991
959
|
|
|
992
960
|
RCT_EXPORT_METHOD(allow:(RCTPromiseResolveBlock)resolve
|
|
993
|
-
|
|
961
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
994
962
|
{
|
|
995
963
|
CPLog(@"Re-allowing restarts.");
|
|
996
964
|
_allowed = YES;
|
|
@@ -1006,14 +974,14 @@ RCT_EXPORT_METHOD(allow:(RCTPromiseResolveBlock)resolve
|
|
|
1006
974
|
}
|
|
1007
975
|
|
|
1008
976
|
RCT_EXPORT_METHOD(clearPendingRestart:(RCTPromiseResolveBlock)resolve
|
|
1009
|
-
|
|
977
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1010
978
|
{
|
|
1011
979
|
[_restartQueue removeAllObjects];
|
|
1012
980
|
resolve(nil);
|
|
1013
981
|
}
|
|
1014
982
|
|
|
1015
983
|
RCT_EXPORT_METHOD(disallow:(RCTPromiseResolveBlock)resolve
|
|
1016
|
-
|
|
984
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1017
985
|
{
|
|
1018
986
|
CPLog(@"Disallowing restarts.");
|
|
1019
987
|
_allowed = NO;
|
|
@@ -1024,8 +992,8 @@ RCT_EXPORT_METHOD(disallow:(RCTPromiseResolveBlock)resolve
|
|
|
1024
992
|
* This method is the native side of the CodePush.restartApp() method.
|
|
1025
993
|
*/
|
|
1026
994
|
RCT_EXPORT_METHOD(restartApp:(BOOL)onlyIfUpdateIsPending
|
|
1027
|
-
|
|
1028
|
-
|
|
995
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
996
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1029
997
|
{
|
|
1030
998
|
[self restartAppInternal:onlyIfUpdateIsPending];
|
|
1031
999
|
resolve(nil);
|
|
@@ -1043,12 +1011,40 @@ RCT_EXPORT_METHOD(clearUpdates) {
|
|
|
1043
1011
|
}
|
|
1044
1012
|
|
|
1045
1013
|
RCT_EXPORT_METHOD(resetClientUniqueId:(RCTPromiseResolveBlock)resolve
|
|
1046
|
-
|
|
1014
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1047
1015
|
{
|
|
1048
1016
|
CPLog(@"On iOS, resetting client device ID does nothing as it is the iOS IDFV.");
|
|
1049
1017
|
resolve([[CodePushConfig current] clientUniqueId]);
|
|
1050
1018
|
}
|
|
1051
1019
|
|
|
1020
|
+
RCT_EXPORT_METHOD(setTelemetryEnabled:(BOOL)enabled
|
|
1021
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
1022
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1023
|
+
{
|
|
1024
|
+
[[CodePushConfig current] setTelemetryEnabled:enabled];
|
|
1025
|
+
resolve(nil);
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
RCT_EXPORT_METHOD(getTelemetryEnabled:(RCTPromiseResolveBlock)resolve
|
|
1029
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1030
|
+
{
|
|
1031
|
+
resolve(@([[CodePushConfig current] telemetryEnabled]));
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
RCT_EXPORT_METHOD(setDataTransmissionEnabled:(BOOL)enabled
|
|
1035
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
1036
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1037
|
+
{
|
|
1038
|
+
[[CodePushConfig current] setDataTransmissionEnabled:enabled];
|
|
1039
|
+
resolve(nil);
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
RCT_EXPORT_METHOD(getDataTransmissionEnabled:(RCTPromiseResolveBlock)resolve
|
|
1043
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1044
|
+
{
|
|
1045
|
+
resolve(@([[CodePushConfig current] dataTransmissionEnabled]));
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1052
1048
|
#pragma mark - JavaScript-exported module methods (Private)
|
|
1053
1049
|
|
|
1054
1050
|
/*
|
|
@@ -1069,7 +1065,7 @@ RCT_EXPORT_METHOD(downloadAndReplaceCurrentBundle:(NSString *)remoteBundleUrl)
|
|
|
1069
1065
|
* or an update failed) and return its details (version label, status).
|
|
1070
1066
|
*/
|
|
1071
1067
|
RCT_EXPORT_METHOD(getNewStatusReport:(RCTPromiseResolveBlock)resolve
|
|
1072
|
-
|
|
1068
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
1073
1069
|
{
|
|
1074
1070
|
if (needToReportRollback) {
|
|
1075
1071
|
needToReportRollback = NO;
|
|
@@ -1114,16 +1110,4 @@ RCT_EXPORT_METHOD(saveStatusReportForRetry:(NSDictionary *)statusReport)
|
|
|
1114
1110
|
[CodePushTelemetryManager saveStatusReportForRetry:statusReport];
|
|
1115
1111
|
}
|
|
1116
1112
|
|
|
1117
|
-
#pragma mark - RCTFrameUpdateObserver Methods
|
|
1118
|
-
|
|
1119
|
-
- (void)didUpdateFrame:(RCTFrameUpdate *)update
|
|
1120
|
-
{
|
|
1121
|
-
if (!_didUpdateProgress) {
|
|
1122
|
-
return;
|
|
1123
|
-
}
|
|
1124
|
-
|
|
1125
|
-
[self dispatchDownloadProgressEvent];
|
|
1126
|
-
_didUpdateProgress = NO;
|
|
1127
|
-
}
|
|
1128
|
-
|
|
1129
1113
|
@end
|