stream-chat-react-native-core 5.11.3-beta.7 → 5.12.0-beta.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.
Files changed (27) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +38 -22
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/ImageReloadIndicator.js +40 -0
  4. package/lib/commonjs/components/Attachment/ImageReloadIndicator.js.map +1 -0
  5. package/lib/commonjs/components/Channel/Channel.js +20 -18
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/hooks/useLoadingImage.js +57 -16
  8. package/lib/commonjs/hooks/useLoadingImage.js.map +1 -1
  9. package/lib/commonjs/version.json +1 -1
  10. package/lib/module/components/Attachment/Gallery.js +38 -22
  11. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  12. package/lib/module/components/Attachment/ImageReloadIndicator.js +40 -0
  13. package/lib/module/components/Attachment/ImageReloadIndicator.js.map +1 -0
  14. package/lib/module/components/Channel/Channel.js +20 -18
  15. package/lib/module/components/Channel/Channel.js.map +1 -1
  16. package/lib/module/hooks/useLoadingImage.js +57 -16
  17. package/lib/module/hooks/useLoadingImage.js.map +1 -1
  18. package/lib/module/version.json +1 -1
  19. package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts +6 -0
  20. package/lib/typescript/hooks/useLoadingImage.d.ts +3 -3
  21. package/package.json +1 -1
  22. package/src/components/Attachment/Gallery.tsx +22 -5
  23. package/src/components/Attachment/ImageReloadIndicator.tsx +27 -0
  24. package/src/components/Attachment/__tests__/Gallery.test.js +3 -1
  25. package/src/components/Channel/Channel.tsx +4 -1
  26. package/src/hooks/useLoadingImage.tsx +57 -9
  27. package/src/version.json +1 -1
@@ -4,29 +4,70 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.useLoadingImage = void 0;
6
6
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
8
  var _react = require("react");
8
- var _netinfo = require("@react-native-community/netinfo");
9
+ var _ChatContext = require("../contexts/chatContext/ChatContext");
10
+ function reducer(prevState, action) {
11
+ switch (action.type) {
12
+ case 'reloadImage':
13
+ return (0, _extends2["default"])({}, prevState, {
14
+ isLoadingImage: true,
15
+ isLoadingImageError: false
16
+ });
17
+ case 'setLoadingImage':
18
+ return (0, _extends2["default"])({}, prevState, {
19
+ isLoadingImage: action.isLoadingImage
20
+ });
21
+ case 'setLoadingImageError':
22
+ return (0, _extends2["default"])({}, prevState, {
23
+ isLoadingImageError: action.isLoadingImageError
24
+ });
25
+ default:
26
+ return prevState;
27
+ }
28
+ }
9
29
  var useLoadingImage = function useLoadingImage() {
10
- var _useState = (0, _react.useState)(true),
11
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
12
- isLoadingImage = _useState2[0],
13
- setLoadingImage = _useState2[1];
14
- var _useState3 = (0, _react.useState)(false),
15
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
16
- isLoadingImageError = _useState4[0],
17
- setLoadingImageError = _useState4[1];
18
- var _useNetInfo = (0, _netinfo.useNetInfo)(),
19
- isConnected = _useNetInfo.isConnected;
30
+ var _useReducer = (0, _react.useReducer)(reducer, {
31
+ isLoadingImage: true,
32
+ isLoadingImageError: false
33
+ }),
34
+ _useReducer2 = (0, _slicedToArray2["default"])(_useReducer, 2),
35
+ imageState = _useReducer2[0],
36
+ dispatch = _useReducer2[1];
37
+ var isLoadingImage = imageState.isLoadingImage,
38
+ isLoadingImageError = imageState.isLoadingImageError;
39
+ var onReloadImageRef = (0, _react.useRef)(function () {
40
+ return dispatch({
41
+ type: 'reloadImage'
42
+ });
43
+ });
44
+ var setLoadingImageRef = (0, _react.useRef)(function (isLoadingImage) {
45
+ return dispatch({
46
+ isLoadingImage: isLoadingImage,
47
+ type: 'setLoadingImage'
48
+ });
49
+ });
50
+ var setLoadingImageErrorRef = (0, _react.useRef)(function (isLoadingImageError) {
51
+ return dispatch({
52
+ isLoadingImageError: isLoadingImageError,
53
+ type: 'setLoadingImageError'
54
+ });
55
+ });
56
+ var _useChatContext = (0, _ChatContext.useChatContext)(),
57
+ isOnline = _useChatContext.isOnline;
58
+ var hasImageLoadedErroredRef = (0, _react.useRef)(isLoadingImageError);
59
+ hasImageLoadedErroredRef.current = isLoadingImageError;
20
60
  (0, _react.useEffect)(function () {
21
- if (isConnected) {
22
- setLoadingImageError(false);
61
+ if (isOnline && hasImageLoadedErroredRef.current) {
62
+ onReloadImageRef.current();
23
63
  }
24
- }, [isConnected]);
64
+ }, [isOnline]);
25
65
  return {
26
66
  isLoadingImage: isLoadingImage,
27
67
  isLoadingImageError: isLoadingImageError,
28
- setLoadingImage: setLoadingImage,
29
- setLoadingImageError: setLoadingImageError
68
+ onReloadImage: onReloadImageRef.current,
69
+ setLoadingImage: setLoadingImageRef.current,
70
+ setLoadingImageError: setLoadingImageErrorRef.current
30
71
  };
31
72
  };
32
73
  exports.useLoadingImage = useLoadingImage;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_netinfo","useLoadingImage","_useState","useState","_useState2","_slicedToArray2","isLoadingImage","setLoadingImage","_useState3","_useState4","isLoadingImageError","setLoadingImageError","_useNetInfo","useNetInfo","isConnected","useEffect","exports"],"sources":["useLoadingImage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useNetInfo } from '@react-native-community/netinfo';\n\nexport const useLoadingImage = () => {\n const [isLoadingImage, setLoadingImage] = useState(true);\n const [isLoadingImageError, setLoadingImageError] = useState(false);\n const { isConnected } = useNetInfo();\n useEffect(() => {\n if (isConnected) {\n setLoadingImageError(false);\n }\n }, [isConnected]);\n\n return { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AAEO,IAAME,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;EACnC,IAAAC,SAAA,GAA0C,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAAjDI,cAAc,GAAAF,UAAA;IAAEG,eAAe,GAAAH,UAAA;EACtC,IAAAI,UAAA,GAAoD,IAAAL,eAAQ,EAAC,KAAK,CAAC;IAAAM,UAAA,OAAAJ,eAAA,aAAAG,UAAA;IAA5DE,mBAAmB,GAAAD,UAAA;IAAEE,oBAAoB,GAAAF,UAAA;EAChD,IAAAG,WAAA,GAAwB,IAAAC,mBAAU,GAAE;IAA5BC,WAAW,GAAAF,WAAA,CAAXE,WAAW;EACnB,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAID,WAAW,EAAE;MACfH,oBAAoB,CAAC,KAAK,CAAC;IAC7B;EACF,CAAC,EAAE,CAACG,WAAW,CAAC,CAAC;EAEjB,OAAO;IAAER,cAAc,EAAdA,cAAc;IAAEI,mBAAmB,EAAnBA,mBAAmB;IAAEH,eAAe,EAAfA,eAAe;IAAEI,oBAAoB,EAApBA;EAAqB,CAAC;AACvF,CAAC;AAACK,OAAA,CAAAf,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["_react","require","_ChatContext","reducer","prevState","action","type","_extends2","isLoadingImage","isLoadingImageError","useLoadingImage","_useReducer","useReducer","_useReducer2","_slicedToArray2","imageState","dispatch","onReloadImageRef","useRef","setLoadingImageRef","setLoadingImageErrorRef","_useChatContext","useChatContext","isOnline","hasImageLoadedErroredRef","current","useEffect","onReloadImage","setLoadingImage","setLoadingImageError","exports"],"sources":["useLoadingImage.tsx"],"sourcesContent":["import { useEffect, useReducer, useRef } from 'react';\n\nimport { useChatContext } from '../contexts/chatContext/ChatContext';\n\ntype ImageState = {\n isLoadingImage: boolean;\n isLoadingImageError: boolean;\n};\n\ntype Action =\n | { type: 'reloadImage' }\n | { isLoadingImage: boolean; type: 'setLoadingImage' }\n | { isLoadingImageError: boolean; type: 'setLoadingImageError' };\n\nfunction reducer(prevState: ImageState, action: Action) {\n switch (action.type) {\n case 'reloadImage':\n return {\n ...prevState,\n isLoadingImage: true,\n isLoadingImageError: false,\n };\n case 'setLoadingImage':\n return { ...prevState, isLoadingImage: action.isLoadingImage };\n case 'setLoadingImageError':\n return { ...prevState, isLoadingImageError: action.isLoadingImageError };\n default:\n return prevState;\n }\n}\nexport const useLoadingImage = () => {\n const [imageState, dispatch] = useReducer(reducer, {\n isLoadingImage: true,\n isLoadingImageError: false,\n });\n const { isLoadingImage, isLoadingImageError } = imageState;\n const onReloadImageRef = useRef(() => dispatch({ type: 'reloadImage' }));\n const setLoadingImageRef = useRef((isLoadingImage: boolean) =>\n dispatch({ isLoadingImage, type: 'setLoadingImage' }),\n );\n const setLoadingImageErrorRef = useRef((isLoadingImageError: boolean) =>\n dispatch({ isLoadingImageError, type: 'setLoadingImageError' }),\n );\n const { isOnline } = useChatContext();\n\n // storing the value of isLoadingImageError in a ref to avoid passing as a dep to useEffect\n const hasImageLoadedErroredRef = useRef(isLoadingImageError);\n hasImageLoadedErroredRef.current = isLoadingImageError;\n\n useEffect(() => {\n if (isOnline && hasImageLoadedErroredRef.current) {\n // if there was an error previously, reload the image automatically when user comes back online\n onReloadImageRef.current();\n }\n }, [isOnline]);\n\n return {\n isLoadingImage,\n isLoadingImageError,\n onReloadImage: onReloadImageRef.current,\n setLoadingImage: setLoadingImageRef.current,\n setLoadingImageError: setLoadingImageErrorRef.current,\n };\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAYA,SAASE,OAAOA,CAACC,SAAqB,EAAEC,MAAc,EAAE;EACtD,QAAQA,MAAM,CAACC,IAAI;IACjB,KAAK,aAAa;MAChB,WAAAC,SAAA,iBACKH,SAAS;QACZI,cAAc,EAAE,IAAI;QACpBC,mBAAmB,EAAE;MAAK;IAE9B,KAAK,iBAAiB;MACpB,WAAAF,SAAA,iBAAYH,SAAS;QAAEI,cAAc,EAAEH,MAAM,CAACG;MAAc;IAC9D,KAAK,sBAAsB;MACzB,WAAAD,SAAA,iBAAYH,SAAS;QAAEK,mBAAmB,EAAEJ,MAAM,CAACI;MAAmB;IACxE;MACE,OAAOL,SAAS;EAAC;AAEvB;AACO,IAAMM,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;EACnC,IAAAC,WAAA,GAA+B,IAAAC,iBAAU,EAACT,OAAO,EAAE;MACjDK,cAAc,EAAE,IAAI;MACpBC,mBAAmB,EAAE;IACvB,CAAC,CAAC;IAAAI,YAAA,OAAAC,eAAA,aAAAH,WAAA;IAHKI,UAAU,GAAAF,YAAA;IAAEG,QAAQ,GAAAH,YAAA;EAI3B,IAAQL,cAAc,GAA0BO,UAAU,CAAlDP,cAAc;IAAEC,mBAAmB,GAAKM,UAAU,CAAlCN,mBAAmB;EAC3C,IAAMQ,gBAAgB,GAAG,IAAAC,aAAM,EAAC;IAAA,OAAMF,QAAQ,CAAC;MAAEV,IAAI,EAAE;IAAc,CAAC,CAAC;EAAA,EAAC;EACxE,IAAMa,kBAAkB,GAAG,IAAAD,aAAM,EAAC,UAACV,cAAuB;IAAA,OACxDQ,QAAQ,CAAC;MAAER,cAAc,EAAdA,cAAc;MAAEF,IAAI,EAAE;IAAkB,CAAC,CAAC;EAAA,EACtD;EACD,IAAMc,uBAAuB,GAAG,IAAAF,aAAM,EAAC,UAACT,mBAA4B;IAAA,OAClEO,QAAQ,CAAC;MAAEP,mBAAmB,EAAnBA,mBAAmB;MAAEH,IAAI,EAAE;IAAuB,CAAC,CAAC;EAAA,EAChE;EACD,IAAAe,eAAA,GAAqB,IAAAC,2BAAc,GAAE;IAA7BC,QAAQ,GAAAF,eAAA,CAARE,QAAQ;EAGhB,IAAMC,wBAAwB,GAAG,IAAAN,aAAM,EAACT,mBAAmB,CAAC;EAC5De,wBAAwB,CAACC,OAAO,GAAGhB,mBAAmB;EAEtD,IAAAiB,gBAAS,EAAC,YAAM;IACd,IAAIH,QAAQ,IAAIC,wBAAwB,CAACC,OAAO,EAAE;MAEhDR,gBAAgB,CAACQ,OAAO,EAAE;IAC5B;EACF,CAAC,EAAE,CAACF,QAAQ,CAAC,CAAC;EAEd,OAAO;IACLf,cAAc,EAAdA,cAAc;IACdC,mBAAmB,EAAnBA,mBAAmB;IACnBkB,aAAa,EAAEV,gBAAgB,CAACQ,OAAO;IACvCG,eAAe,EAAET,kBAAkB,CAACM,OAAO;IAC3CI,oBAAoB,EAAET,uBAAuB,CAACK;EAChD,CAAC;AACH,CAAC;AAACK,OAAA,CAAApB,eAAA,GAAAA,eAAA"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.11.3-beta.7"
2
+ "version": "5.12.0-beta.2"
3
3
  }
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { Pressable } from 'react-native';
3
+ export declare const ImageReloadIndicator: ({ onReloadImage, style, }: {
4
+ onReloadImage: () => void;
5
+ style: React.ComponentProps<typeof Pressable>['style'];
6
+ }) => JSX.Element;
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
2
1
  export declare const useLoadingImage: () => {
3
2
  isLoadingImage: boolean;
4
3
  isLoadingImageError: boolean;
5
- setLoadingImage: import("react").Dispatch<import("react").SetStateAction<boolean>>;
6
- setLoadingImageError: import("react").Dispatch<import("react").SetStateAction<boolean>>;
4
+ onReloadImage: () => void;
5
+ setLoadingImage: (isLoadingImage: boolean) => void;
6
+ setLoadingImageError: (isLoadingImageError: boolean) => void;
7
7
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.11.3-beta.7",
4
+ "version": "5.12.0-beta.2",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -4,6 +4,7 @@ import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
4
4
  import type { Attachment } from 'stream-chat';
5
5
 
6
6
  import { GalleryImage } from './GalleryImage';
7
+ import { ImageReloadIndicator } from './ImageReloadIndicator';
7
8
  import { buildGallery } from './utils/buildGallery/buildGallery';
8
9
 
9
10
  import type { Thumbnail } from './utils/buildGallery/types';
@@ -67,6 +68,11 @@ const styles = StyleSheet.create({
67
68
  justifyContent: 'center',
68
69
  position: 'absolute',
69
70
  },
71
+ imageReloadContainerStyle: {
72
+ ...StyleSheet.absoluteFillObject,
73
+ alignItems: 'center',
74
+ justifyContent: 'center',
75
+ },
70
76
  moreImagesContainer: {
71
77
  alignItems: 'center',
72
78
  justifyContent: 'center',
@@ -452,8 +458,13 @@ const GalleryImageThumbnail = <
452
458
  GalleryThumbnailProps<StreamChatGenerics>,
453
459
  'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'
454
460
  >) => {
455
- const { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =
456
- useLoadingImage();
461
+ const {
462
+ isLoadingImage,
463
+ isLoadingImageError,
464
+ onReloadImage,
465
+ setLoadingImage,
466
+ setLoadingImageError,
467
+ } = useLoadingImage();
457
468
 
458
469
  const {
459
470
  theme: {
@@ -471,11 +482,17 @@ const GalleryImageThumbnail = <
471
482
  }}
472
483
  >
473
484
  {isLoadingImageError ? (
474
- <ImageLoadingFailedIndicator style={[styles.imageLoadingErrorIndicatorStyle]} />
485
+ <>
486
+ <ImageLoadingFailedIndicator style={styles.imageLoadingErrorIndicatorStyle} />
487
+ <ImageReloadIndicator
488
+ onReloadImage={onReloadImage}
489
+ style={styles.imageReloadContainerStyle}
490
+ />
491
+ </>
475
492
  ) : (
476
493
  <>
477
494
  <GalleryImage
478
- onError={(error) => {
495
+ onError={({ nativeEvent: { error } }) => {
479
496
  console.warn(error);
480
497
  setLoadingImage(false);
481
498
  setLoadingImageError(true);
@@ -494,7 +511,7 @@ const GalleryImageThumbnail = <
494
511
  uri={thumbnail.url}
495
512
  />
496
513
  {isLoadingImage && (
497
- <View style={[styles.imageLoadingIndicatorContainer]}>
514
+ <View style={styles.imageLoadingIndicatorContainer}>
498
515
  <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />
499
516
  </View>
500
517
  )}
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { Pressable } from 'react-native';
3
+
4
+ import { useTheme } from '../../contexts/themeContext/ThemeContext';
5
+ import { Refresh } from '../../icons';
6
+
7
+ const REFRESH_ICON_SIZE = 24;
8
+
9
+ export const ImageReloadIndicator = ({
10
+ onReloadImage,
11
+ style,
12
+ }: {
13
+ onReloadImage: () => void;
14
+ style: React.ComponentProps<typeof Pressable>['style'];
15
+ }) => {
16
+ const {
17
+ theme: {
18
+ colors: { grey_dark },
19
+ },
20
+ } = useTheme();
21
+
22
+ return (
23
+ <Pressable onPress={onReloadImage} style={style}>
24
+ <Refresh height={REFRESH_ICON_SIZE} pathFill={grey_dark} width={REFRESH_ICON_SIZE} />
25
+ </Pressable>
26
+ );
27
+ };
@@ -270,7 +270,9 @@ describe('Gallery', () => {
270
270
  expect(queryAllByTestId('gallery-container').length).toBe(1);
271
271
  });
272
272
 
273
- fireEvent(getByA11yLabel('Gallery Image'), 'error');
273
+ fireEvent(getByA11yLabel('Gallery Image'), 'error', {
274
+ nativeEvent: { error: 'error loading image' },
275
+ });
274
276
  expect(getByAccessibilityHint('image-loading-error')).toBeTruthy();
275
277
  });
276
278
 
@@ -640,7 +640,10 @@ const ChannelWithContext = <
640
640
  }, [threadPropsExists]);
641
641
 
642
642
  const handleAppBackground = useCallback(() => {
643
- if (channel) {
643
+ const channelData = channel.data as
644
+ | Extract<typeof channel.data, { own_capabilities: string[] }>
645
+ | undefined;
646
+ if (channelData?.own_capabilities?.includes('send-typing-events')) {
644
647
  channel.sendEvent({
645
648
  parent_id: thread?.id,
646
649
  type: 'typing.stop',
@@ -1,16 +1,64 @@
1
- import { useEffect, useState } from 'react';
1
+ import { useEffect, useReducer, useRef } from 'react';
2
2
 
3
- import { useNetInfo } from '@react-native-community/netinfo';
3
+ import { useChatContext } from '../contexts/chatContext/ChatContext';
4
4
 
5
+ type ImageState = {
6
+ isLoadingImage: boolean;
7
+ isLoadingImageError: boolean;
8
+ };
9
+
10
+ type Action =
11
+ | { type: 'reloadImage' }
12
+ | { isLoadingImage: boolean; type: 'setLoadingImage' }
13
+ | { isLoadingImageError: boolean; type: 'setLoadingImageError' };
14
+
15
+ function reducer(prevState: ImageState, action: Action) {
16
+ switch (action.type) {
17
+ case 'reloadImage':
18
+ return {
19
+ ...prevState,
20
+ isLoadingImage: true,
21
+ isLoadingImageError: false,
22
+ };
23
+ case 'setLoadingImage':
24
+ return { ...prevState, isLoadingImage: action.isLoadingImage };
25
+ case 'setLoadingImageError':
26
+ return { ...prevState, isLoadingImageError: action.isLoadingImageError };
27
+ default:
28
+ return prevState;
29
+ }
30
+ }
5
31
  export const useLoadingImage = () => {
6
- const [isLoadingImage, setLoadingImage] = useState(true);
7
- const [isLoadingImageError, setLoadingImageError] = useState(false);
8
- const { isConnected } = useNetInfo();
32
+ const [imageState, dispatch] = useReducer(reducer, {
33
+ isLoadingImage: true,
34
+ isLoadingImageError: false,
35
+ });
36
+ const { isLoadingImage, isLoadingImageError } = imageState;
37
+ const onReloadImageRef = useRef(() => dispatch({ type: 'reloadImage' }));
38
+ const setLoadingImageRef = useRef((isLoadingImage: boolean) =>
39
+ dispatch({ isLoadingImage, type: 'setLoadingImage' }),
40
+ );
41
+ const setLoadingImageErrorRef = useRef((isLoadingImageError: boolean) =>
42
+ dispatch({ isLoadingImageError, type: 'setLoadingImageError' }),
43
+ );
44
+ const { isOnline } = useChatContext();
45
+
46
+ // storing the value of isLoadingImageError in a ref to avoid passing as a dep to useEffect
47
+ const hasImageLoadedErroredRef = useRef(isLoadingImageError);
48
+ hasImageLoadedErroredRef.current = isLoadingImageError;
49
+
9
50
  useEffect(() => {
10
- if (isConnected) {
11
- setLoadingImageError(false);
51
+ if (isOnline && hasImageLoadedErroredRef.current) {
52
+ // if there was an error previously, reload the image automatically when user comes back online
53
+ onReloadImageRef.current();
12
54
  }
13
- }, [isConnected]);
55
+ }, [isOnline]);
14
56
 
15
- return { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError };
57
+ return {
58
+ isLoadingImage,
59
+ isLoadingImageError,
60
+ onReloadImage: onReloadImageRef.current,
61
+ setLoadingImage: setLoadingImageRef.current,
62
+ setLoadingImageError: setLoadingImageErrorRef.current,
63
+ };
16
64
  };
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.11.3-beta.7"
2
+ "version": "5.12.0-beta.2"
3
3
  }