react-native-3rddigital-appupdate 1.0.6 → 1.0.7

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/README.md CHANGED
@@ -44,6 +44,7 @@ const App = () => {
44
44
  androidPackage: 'com.example.android',
45
45
  loaderOptions: {
46
46
  text: 'Downloading update...',
47
+ showProgress: true,
47
48
  },
48
49
  dialogOptions: {
49
50
  title: 'Update Available',
@@ -91,14 +92,16 @@ Options:
91
92
 
92
93
  Props (LoaderOptions):
93
94
 
94
- | Key | Type | Default | Description |
95
- | ----------------- | --------- | ----------------- | ------------------------------------- |
96
- | `text` | string | `undefined` | Text displayed below the spinner |
97
- | `color` | string | `#2563EB` | Spinner color |
98
- | `backgroundColor` | string | `rgba(0,0,0,0.3)` | Overlay background color |
99
- | `textColor` | string | `#fff` | Loader text color |
100
- | `containerStyle` | ViewStyle | `{}` | Custom style for the loader container |
101
- | `textStyle` | TextStyle | `{}` | Custom style for the loader text |
95
+ | Key | Type | Default | Description |
96
+ | ------------------- | --------- | ----------------- | ----------------------------------------------- |
97
+ | `text` | string | `undefined` | Text displayed below the spinner |
98
+ | `color` | string | `#2563EB` | Spinner color |
99
+ | `backgroundColor` | string | `rgba(0,0,0,0.3)` | Overlay background color |
100
+ | `textColor` | string | `#fff` | Loader text color |
101
+ | `containerStyle` | ViewStyle | `{}` | Custom style for the loader container |
102
+ | `textStyle` | TextStyle | `{}` | Custom style for the loader text |
103
+ | `progressTextStyle` | TextStyle | `{}` | Custom style for the loader progress text |
104
+ | `showProgress` | boolean | `false` | Show real-time download percentage (e.g. “45%”) |
102
105
 
103
106
  🔹 Dialog (AppAlertDialog)
104
107
 
@@ -5,15 +5,22 @@ import { ActivityIndicator, StyleSheet, Text, View } from 'react-native';
5
5
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  let showLoader;
7
7
  let hideLoader;
8
+ let updateProgressValue;
8
9
  export const AppLoader = () => {
9
10
  const [visible, setVisible] = useState(false);
10
11
  const [options, setOptions] = useState({});
12
+ const [progress, setProgress] = useState(0);
11
13
  showLoader = opts => {
12
14
  setOptions(opts || {});
15
+ setProgress(0);
13
16
  setVisible(true);
14
17
  };
15
18
  hideLoader = () => {
16
19
  setVisible(false);
20
+ setProgress(0);
21
+ };
22
+ updateProgressValue = value => {
23
+ setProgress(value);
17
24
  };
18
25
  if (!visible) return null;
19
26
  return /*#__PURE__*/_jsx(View, {
@@ -30,6 +37,11 @@ export const AppLoader = () => {
30
37
  color: options.textColor || '#fff'
31
38
  }, options.textStyle],
32
39
  children: options.text
40
+ }), options.showProgress && /*#__PURE__*/_jsxs(Text, {
41
+ style: [styles.progressText, {
42
+ color: options.textColor || '#fff'
43
+ }, options.progressTextStyle],
44
+ children: [progress.toFixed(0), "%"]
33
45
  })]
34
46
  })
35
47
  });
@@ -50,9 +62,17 @@ const styles = StyleSheet.create({
50
62
  text: {
51
63
  marginTop: 12,
52
64
  fontSize: 14,
53
- fontWeight: '500'
65
+ fontWeight: '500',
66
+ textAlign: 'center'
67
+ },
68
+ progressText: {
69
+ marginTop: 10,
70
+ fontSize: 13,
71
+ fontWeight: '600',
72
+ textAlign: 'center'
54
73
  }
55
74
  });
56
75
  AppLoader.show = options => showLoader?.(options);
57
76
  AppLoader.hide = () => hideLoader?.();
77
+ AppLoader.updateProgress = progress => updateProgressValue?.(progress);
58
78
  //# sourceMappingURL=AppLoader.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useState","ActivityIndicator","StyleSheet","Text","View","jsx","_jsx","jsxs","_jsxs","showLoader","hideLoader","AppLoader","visible","setVisible","options","setOptions","opts","style","styles","overlay","backgroundColor","children","loaderBox","containerStyle","size","color","text","textColor","textStyle","create","absoluteFillObject","justifyContent","alignItems","zIndex","padding","borderRadius","marginTop","fontSize","fontWeight","show","hide"],"sourceRoot":"../../src","sources":["AppLoader.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SACEC,iBAAiB,EACjBC,UAAU,EACVC,IAAI,EACJC,IAAI,QAGC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWtB,IAAIC,UAA6C;AACjD,IAAIC,UAAsB;AAE1B,OAAO,MAAMC,SAAS,GAAGA,CAAA,KAAM;EAC7B,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAACc,OAAO,EAAEC,UAAU,CAAC,GAAGf,QAAQ,CAAgB,CAAC,CAAC,CAAC;EAEzDS,UAAU,GAAIO,IAAoB,IAAK;IACrCD,UAAU,CAACC,IAAI,IAAI,CAAC,CAAC,CAAC;IACtBH,UAAU,CAAC,IAAI,CAAC;EAClB,CAAC;EAEDH,UAAU,GAAGA,CAAA,KAAM;IACjBG,UAAU,CAAC,KAAK,CAAC;EACnB,CAAC;EAED,IAAI,CAACD,OAAO,EAAE,OAAO,IAAI;EAEzB,oBACEN,IAAA,CAACF,IAAI;IACHa,KAAK,EAAE,CACLC,MAAM,CAACC,OAAO,EACd;MAAEC,eAAe,EAAEN,OAAO,CAACM,eAAe,IAAI;IAAkB,CAAC,CACjE;IAAAC,QAAA,eAEFb,KAAA,CAACJ,IAAI;MAACa,KAAK,EAAE,CAACC,MAAM,CAACI,SAAS,EAAER,OAAO,CAACS,cAAc,CAAE;MAAAF,QAAA,gBACtDf,IAAA,CAACL,iBAAiB;QAACuB,IAAI,EAAC,OAAO;QAACC,KAAK,EAAEX,OAAO,CAACW,KAAK,IAAI;MAAU,CAAE,CAAC,EACpEX,OAAO,CAACY,IAAI,iBACXpB,IAAA,CAACH,IAAI;QACHc,KAAK,EAAE,CACLC,MAAM,CAACQ,IAAI,EACX;UAAED,KAAK,EAAEX,OAAO,CAACa,SAAS,IAAI;QAAO,CAAC,EACtCb,OAAO,CAACc,SAAS,CACjB;QAAAP,QAAA,EAEDP,OAAO,CAACY;MAAI,CACT,CACP;IAAA,CACG;EAAC,CACH,CAAC;AAEX,CAAC;AAED,MAAMR,MAAM,GAAGhB,UAAU,CAAC2B,MAAM,CAAC;EAC/BV,OAAO,EAAE;IACP,GAAGjB,UAAU,CAAC4B,kBAAkB;IAChCC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,MAAM,EAAE;EACV,CAAC;EACDX,SAAS,EAAE;IACTY,OAAO,EAAE,EAAE;IACXC,YAAY,EAAE,EAAE;IAChBf,eAAe,EAAE,SAAS;IAC1BY,UAAU,EAAE;EACd,CAAC;EACDN,IAAI,EAAE;IACJU,SAAS,EAAE,EAAE;IACbC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF3B,SAAS,CAAC4B,IAAI,GAAIzB,OAAuB,IAAKL,UAAU,GAAGK,OAAO,CAAC;AACnEH,SAAS,CAAC6B,IAAI,GAAG,MAAM9B,UAAU,GAAG,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useState","ActivityIndicator","StyleSheet","Text","View","jsx","_jsx","jsxs","_jsxs","showLoader","hideLoader","updateProgressValue","AppLoader","visible","setVisible","options","setOptions","progress","setProgress","opts","value","style","styles","overlay","backgroundColor","children","loaderBox","containerStyle","size","color","text","textColor","textStyle","showProgress","progressText","progressTextStyle","toFixed","create","absoluteFillObject","justifyContent","alignItems","zIndex","padding","borderRadius","marginTop","fontSize","fontWeight","textAlign","show","hide","updateProgress"],"sourceRoot":"../../src","sources":["AppLoader.tsx"],"mappings":"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","ignoreList":[]}
@@ -31,6 +31,12 @@ export const checkOTAUpdate = async ({
31
31
  const downloadAndReport = () => {
32
32
  AppLoader.show(loaderOptions);
33
33
  hotUpdate.downloadBundleUri(ReactNativeBlobUtil, url, version, {
34
+ progress: (received, total) => {
35
+ if (loaderOptions?.showProgress) {
36
+ const percentage = (Number(received) / Number(total) * 100).toFixed(1);
37
+ AppLoader.updateProgress(Number(percentage));
38
+ }
39
+ },
34
40
  updateSuccess: () => {
35
41
  axios.post(`${API_URL}bundles/${bundleId}/count`, {
36
42
  status: 'success'
@@ -1 +1 @@
1
- {"version":3,"names":["axios","Platform","ReactNativeBlobUtil","DeviceInfo","hotUpdate","AppAlertDialog","AppLoader","API_URL","checkOTAUpdate","key","iosPackage","androidPackage","loaderOptions","dialogOptions","response","get","currentVersion","getCurrentVersion","data","OS","android","ios","version","forceUpdate","url","bundleId","currentAppVersion","getVersion","bundleAppVersion","appVersion","downloadAndReport","show","downloadBundleUri","updateSuccess","post","status","headers","finally","hide","updateFail","error","JSON","stringify","deviceInfo","model","getModel","brand","getBrand","systemName","getSystemName","systemVersion","getSystemVersion","restartAfterInstall","restartDelay","showMessage","title","message","confirmText","cancelText","onConfirm","onCancel","err","console","warn"],"sourceRoot":"../../src","sources":["checkOTAUpdate.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["axios","Platform","ReactNativeBlobUtil","DeviceInfo","hotUpdate","AppAlertDialog","AppLoader","API_URL","checkOTAUpdate","key","iosPackage","androidPackage","loaderOptions","dialogOptions","response","get","currentVersion","getCurrentVersion","data","OS","android","ios","version","forceUpdate","url","bundleId","currentAppVersion","getVersion","bundleAppVersion","appVersion","downloadAndReport","show","downloadBundleUri","progress","received","total","showProgress","percentage","Number","toFixed","updateProgress","updateSuccess","post","status","headers","finally","hide","updateFail","error","JSON","stringify","deviceInfo","model","getModel","brand","getBrand","systemName","getSystemName","systemVersion","getSystemVersion","restartAfterInstall","restartDelay","showMessage","title","message","confirmText","cancelText","onConfirm","onCancel","err","console","warn"],"sourceRoot":"../../src","sources":["checkOTAUpdate.ts"],"mappings":"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","ignoreList":[]}
@@ -6,10 +6,13 @@ export type LoaderOptions = {
6
6
  textColor?: string;
7
7
  containerStyle?: ViewStyle;
8
8
  textStyle?: TextStyle;
9
+ progressTextStyle?: TextStyle;
10
+ showProgress?: boolean;
9
11
  };
10
12
  export declare const AppLoader: {
11
13
  (): import("react/jsx-runtime").JSX.Element | null;
12
14
  show(options?: LoaderOptions): void;
13
15
  hide(): void;
16
+ updateProgress(progress: number): void;
14
17
  };
15
18
  //# sourceMappingURL=AppLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppLoader.d.ts","sourceRoot":"","sources":["../../../src/AppLoader.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAKF,eAAO,MAAM,SAAS;;mBA4DM,aAAa;;CAtBxC,CAAC"}
1
+ {"version":3,"file":"AppLoader.d.ts","sourceRoot":"","sources":["../../../src/AppLoader.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAMF,eAAO,MAAM,SAAS;;mBAqFM,aAAa;;6BAEH,MAAM;CA/B3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkOTAUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkOTAUpdate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,oEAMlC,cAAc,kBAuEhB,CAAC"}
1
+ {"version":3,"file":"checkOTAUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkOTAUpdate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,oEAMlC,cAAc,kBAgFhB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-3rddigital-appupdate",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "A React Native library for seamless over-the-air (OTA) updates with version checks, automatic bundle download, and customizable user prompts for iOS and Android.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
package/src/AppLoader.tsx CHANGED
@@ -15,22 +15,32 @@ export type LoaderOptions = {
15
15
  textColor?: string;
16
16
  containerStyle?: ViewStyle;
17
17
  textStyle?: TextStyle;
18
+ progressTextStyle?: TextStyle;
19
+ showProgress?: boolean;
18
20
  };
19
21
 
20
22
  let showLoader: (options?: LoaderOptions) => void;
21
23
  let hideLoader: () => void;
24
+ let updateProgressValue: (progress: number) => void;
22
25
 
23
26
  export const AppLoader = () => {
24
27
  const [visible, setVisible] = useState(false);
25
28
  const [options, setOptions] = useState<LoaderOptions>({});
29
+ const [progress, setProgress] = useState(0);
26
30
 
27
31
  showLoader = (opts?: LoaderOptions) => {
28
32
  setOptions(opts || {});
33
+ setProgress(0);
29
34
  setVisible(true);
30
35
  };
31
36
 
32
37
  hideLoader = () => {
33
38
  setVisible(false);
39
+ setProgress(0);
40
+ };
41
+
42
+ updateProgressValue = (value: number) => {
43
+ setProgress(value);
34
44
  };
35
45
 
36
46
  if (!visible) return null;
@@ -55,6 +65,17 @@ export const AppLoader = () => {
55
65
  {options.text}
56
66
  </Text>
57
67
  )}
68
+ {options.showProgress && (
69
+ <Text
70
+ style={[
71
+ styles.progressText,
72
+ { color: options.textColor || '#fff' },
73
+ options.progressTextStyle,
74
+ ]}
75
+ >
76
+ {progress.toFixed(0)}%
77
+ </Text>
78
+ )}
58
79
  </View>
59
80
  </View>
60
81
  );
@@ -77,8 +98,17 @@ const styles = StyleSheet.create({
77
98
  marginTop: 12,
78
99
  fontSize: 14,
79
100
  fontWeight: '500',
101
+ textAlign: 'center',
102
+ },
103
+ progressText: {
104
+ marginTop: 10,
105
+ fontSize: 13,
106
+ fontWeight: '600',
107
+ textAlign: 'center',
80
108
  },
81
109
  });
82
110
 
83
111
  AppLoader.show = (options?: LoaderOptions) => showLoader?.(options);
84
112
  AppLoader.hide = () => hideLoader?.();
113
+ AppLoader.updateProgress = (progress: number) =>
114
+ updateProgressValue?.(progress);
@@ -45,6 +45,15 @@ export const checkOTAUpdate = async ({
45
45
  const downloadAndReport = () => {
46
46
  AppLoader.show(loaderOptions);
47
47
  hotUpdate.downloadBundleUri(ReactNativeBlobUtil, url, version, {
48
+ progress: (received, total) => {
49
+ if (loaderOptions?.showProgress) {
50
+ const percentage = (
51
+ (Number(received) / Number(total)) *
52
+ 100
53
+ ).toFixed(1);
54
+ AppLoader.updateProgress(Number(percentage));
55
+ }
56
+ },
48
57
  updateSuccess: () => {
49
58
  axios
50
59
  .post(