agora-appbuilder-core 4.0.0-spl.10 → 4.0.0-spl.11
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/package.json +1 -1
- package/template/_package-lock.json +72 -24
- package/template/bridge/rtm/web/index.ts +3 -2
- package/template/package.json +3 -2
- package/template/src/AppWrapper.tsx +3 -0
- package/template/src/components/DeviceConfigure.tsx +10 -2
- package/template/src/components/RTMConfigure.tsx +18 -16
- package/template/src/components/chat-messages/useChatMessages.tsx +165 -152
- package/template/src/components/livestream/LiveStreamContext.tsx +189 -157
- package/template/src/rtm/RTMEngine.ts +4 -4
- package/template/src/subComponents/recording/useRecording.tsx +1 -1
- package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +5 -1
- package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +64 -45
- package/template/src/utils/axiomLogger.ts +117 -0
- package/template/src/utils/useAsyncEffect.ts +138 -0
package/package.json
CHANGED
|
@@ -18,12 +18,13 @@
|
|
|
18
18
|
"@sentry/tracing": "6.2.1",
|
|
19
19
|
"@supersami/rn-foreground-service": "^1.1.1",
|
|
20
20
|
"agora-react-native-rtm": "1.5.1",
|
|
21
|
-
"agora-rtc-sdk-ng": "4.
|
|
22
|
-
"agora-rtm-sdk": "1.
|
|
21
|
+
"agora-rtc-sdk-ng": "4.16.1",
|
|
22
|
+
"agora-rtm-sdk": "1.5.1",
|
|
23
23
|
"electron-log": "4.3.5",
|
|
24
24
|
"electron-squirrel-startup": "1.0.0",
|
|
25
25
|
"electron-updater": "4.3.9",
|
|
26
26
|
"exponential-backoff": "3.1.0",
|
|
27
|
+
"fetch-retry": "^5.0.6",
|
|
27
28
|
"graphql": "15.5.0",
|
|
28
29
|
"nanoevents": "7.0.1",
|
|
29
30
|
"nanoid": "4.0.0",
|
|
@@ -6967,11 +6968,11 @@
|
|
|
6967
6968
|
}
|
|
6968
6969
|
},
|
|
6969
6970
|
"node_modules/agora-rtc-sdk-ng": {
|
|
6970
|
-
"version": "4.
|
|
6971
|
-
"resolved": "https://registry.npmjs.org/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.
|
|
6972
|
-
"integrity": "sha512-
|
|
6971
|
+
"version": "4.16.1",
|
|
6972
|
+
"resolved": "https://registry.npmjs.org/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.16.1.tgz",
|
|
6973
|
+
"integrity": "sha512-9ccs22X/BEAGe5tIGx2OqWkGpdvuGoB7xq72BouuR5HhP0WVBIBimixOvXXftlY9SwDWsBfKhBV23EtA7jtrTA==",
|
|
6973
6974
|
"dependencies": {
|
|
6974
|
-
"agora-rte-extension": "^1.
|
|
6975
|
+
"agora-rte-extension": "^1.2.3"
|
|
6975
6976
|
}
|
|
6976
6977
|
},
|
|
6977
6978
|
"node_modules/agora-rte-extension": {
|
|
@@ -6980,9 +6981,9 @@
|
|
|
6980
6981
|
"integrity": "sha512-k3yNrYVyzJRoQJjaJUktKUI1XRtf8J1XsW8OzYKFqGlS8WQRMsES1+Phj2rfuEriiLObfuyuCimG6KHQCt5tiw=="
|
|
6981
6982
|
},
|
|
6982
6983
|
"node_modules/agora-rtm-sdk": {
|
|
6983
|
-
"version": "1.
|
|
6984
|
-
"resolved": "https://registry.npmjs.org/agora-rtm-sdk/-/agora-rtm-sdk-1.
|
|
6985
|
-
"integrity": "sha512-
|
|
6984
|
+
"version": "1.5.1",
|
|
6985
|
+
"resolved": "https://registry.npmjs.org/agora-rtm-sdk/-/agora-rtm-sdk-1.5.1.tgz",
|
|
6986
|
+
"integrity": "sha512-4zMZVijEOTimIaY4VUS6kJxg7t+nTV3Frtt01Ffs6dvkOrPmpeuCu/1MX88QgAOE04IBiLo0l89ysc+woVn2FA=="
|
|
6986
6987
|
},
|
|
6987
6988
|
"node_modules/ajv": {
|
|
6988
6989
|
"version": "6.12.6",
|
|
@@ -12070,6 +12071,15 @@
|
|
|
12070
12071
|
"node": ">=8"
|
|
12071
12072
|
}
|
|
12072
12073
|
},
|
|
12074
|
+
"node_modules/eslint/node_modules/type-fest": {
|
|
12075
|
+
"version": "0.8.1",
|
|
12076
|
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
|
12077
|
+
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
|
12078
|
+
"dev": true,
|
|
12079
|
+
"engines": {
|
|
12080
|
+
"node": ">=8"
|
|
12081
|
+
}
|
|
12082
|
+
},
|
|
12073
12083
|
"node_modules/eslint/node_modules/which": {
|
|
12074
12084
|
"version": "1.3.1",
|
|
12075
12085
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
|
@@ -12870,6 +12880,11 @@
|
|
|
12870
12880
|
"pend": "~1.2.0"
|
|
12871
12881
|
}
|
|
12872
12882
|
},
|
|
12883
|
+
"node_modules/fetch-retry": {
|
|
12884
|
+
"version": "5.0.6",
|
|
12885
|
+
"resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz",
|
|
12886
|
+
"integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ=="
|
|
12887
|
+
},
|
|
12873
12888
|
"node_modules/figures": {
|
|
12874
12889
|
"version": "2.0.0",
|
|
12875
12890
|
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
|
|
@@ -24374,6 +24389,15 @@
|
|
|
24374
24389
|
"node": ">=8"
|
|
24375
24390
|
}
|
|
24376
24391
|
},
|
|
24392
|
+
"node_modules/read-pkg-up/node_modules/type-fest": {
|
|
24393
|
+
"version": "0.8.1",
|
|
24394
|
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
|
24395
|
+
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
|
24396
|
+
"dev": true,
|
|
24397
|
+
"engines": {
|
|
24398
|
+
"node": ">=8"
|
|
24399
|
+
}
|
|
24400
|
+
},
|
|
24377
24401
|
"node_modules/read-pkg/node_modules/parse-json": {
|
|
24378
24402
|
"version": "5.2.0",
|
|
24379
24403
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
|
@@ -27867,12 +27891,17 @@
|
|
|
27867
27891
|
}
|
|
27868
27892
|
},
|
|
27869
27893
|
"node_modules/type-fest": {
|
|
27870
|
-
"version": "
|
|
27871
|
-
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-
|
|
27872
|
-
"integrity": "sha512-
|
|
27894
|
+
"version": "2.19.0",
|
|
27895
|
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
|
|
27896
|
+
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
|
|
27873
27897
|
"dev": true,
|
|
27898
|
+
"optional": true,
|
|
27899
|
+
"peer": true,
|
|
27874
27900
|
"engines": {
|
|
27875
|
-
"node": ">=
|
|
27901
|
+
"node": ">=12.20"
|
|
27902
|
+
},
|
|
27903
|
+
"funding": {
|
|
27904
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
27876
27905
|
}
|
|
27877
27906
|
},
|
|
27878
27907
|
"node_modules/type-is": {
|
|
@@ -34838,11 +34867,11 @@
|
|
|
34838
34867
|
"requires": {}
|
|
34839
34868
|
},
|
|
34840
34869
|
"agora-rtc-sdk-ng": {
|
|
34841
|
-
"version": "4.
|
|
34842
|
-
"resolved": "https://registry.npmjs.org/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.
|
|
34843
|
-
"integrity": "sha512-
|
|
34870
|
+
"version": "4.16.1",
|
|
34871
|
+
"resolved": "https://registry.npmjs.org/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.16.1.tgz",
|
|
34872
|
+
"integrity": "sha512-9ccs22X/BEAGe5tIGx2OqWkGpdvuGoB7xq72BouuR5HhP0WVBIBimixOvXXftlY9SwDWsBfKhBV23EtA7jtrTA==",
|
|
34844
34873
|
"requires": {
|
|
34845
|
-
"agora-rte-extension": "^1.
|
|
34874
|
+
"agora-rte-extension": "^1.2.3"
|
|
34846
34875
|
}
|
|
34847
34876
|
},
|
|
34848
34877
|
"agora-rte-extension": {
|
|
@@ -34851,9 +34880,9 @@
|
|
|
34851
34880
|
"integrity": "sha512-k3yNrYVyzJRoQJjaJUktKUI1XRtf8J1XsW8OzYKFqGlS8WQRMsES1+Phj2rfuEriiLObfuyuCimG6KHQCt5tiw=="
|
|
34852
34881
|
},
|
|
34853
34882
|
"agora-rtm-sdk": {
|
|
34854
|
-
"version": "1.
|
|
34855
|
-
"resolved": "https://registry.npmjs.org/agora-rtm-sdk/-/agora-rtm-sdk-1.
|
|
34856
|
-
"integrity": "sha512-
|
|
34883
|
+
"version": "1.5.1",
|
|
34884
|
+
"resolved": "https://registry.npmjs.org/agora-rtm-sdk/-/agora-rtm-sdk-1.5.1.tgz",
|
|
34885
|
+
"integrity": "sha512-4zMZVijEOTimIaY4VUS6kJxg7t+nTV3Frtt01Ffs6dvkOrPmpeuCu/1MX88QgAOE04IBiLo0l89ysc+woVn2FA=="
|
|
34857
34886
|
},
|
|
34858
34887
|
"ajv": {
|
|
34859
34888
|
"version": "6.12.6",
|
|
@@ -38689,6 +38718,12 @@
|
|
|
38689
38718
|
"has-flag": "^4.0.0"
|
|
38690
38719
|
}
|
|
38691
38720
|
},
|
|
38721
|
+
"type-fest": {
|
|
38722
|
+
"version": "0.8.1",
|
|
38723
|
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
|
38724
|
+
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
|
38725
|
+
"dev": true
|
|
38726
|
+
},
|
|
38692
38727
|
"which": {
|
|
38693
38728
|
"version": "1.3.1",
|
|
38694
38729
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
|
@@ -39478,6 +39513,11 @@
|
|
|
39478
39513
|
"pend": "~1.2.0"
|
|
39479
39514
|
}
|
|
39480
39515
|
},
|
|
39516
|
+
"fetch-retry": {
|
|
39517
|
+
"version": "5.0.6",
|
|
39518
|
+
"resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz",
|
|
39519
|
+
"integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ=="
|
|
39520
|
+
},
|
|
39481
39521
|
"figures": {
|
|
39482
39522
|
"version": "2.0.0",
|
|
39483
39523
|
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
|
|
@@ -48577,6 +48617,12 @@
|
|
|
48577
48617
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
48578
48618
|
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
|
48579
48619
|
"dev": true
|
|
48620
|
+
},
|
|
48621
|
+
"type-fest": {
|
|
48622
|
+
"version": "0.8.1",
|
|
48623
|
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
|
48624
|
+
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
|
48625
|
+
"dev": true
|
|
48580
48626
|
}
|
|
48581
48627
|
}
|
|
48582
48628
|
},
|
|
@@ -51300,10 +51346,12 @@
|
|
|
51300
51346
|
"dev": true
|
|
51301
51347
|
},
|
|
51302
51348
|
"type-fest": {
|
|
51303
|
-
"version": "
|
|
51304
|
-
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-
|
|
51305
|
-
"integrity": "sha512-
|
|
51306
|
-
"dev": true
|
|
51349
|
+
"version": "2.19.0",
|
|
51350
|
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
|
|
51351
|
+
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
|
|
51352
|
+
"dev": true,
|
|
51353
|
+
"optional": true,
|
|
51354
|
+
"peer": true
|
|
51307
51355
|
},
|
|
51308
51356
|
"type-is": {
|
|
51309
51357
|
"version": "1.6.18",
|
|
@@ -20,8 +20,7 @@ import {RtmClientEvents} from 'agora-react-native-rtm/lib/typescript/src/RtmEngi
|
|
|
20
20
|
import AgoraRTM, {VERSION} from 'agora-rtm-sdk';
|
|
21
21
|
// export {RtmAttribute}
|
|
22
22
|
//
|
|
23
|
-
interface RtmAttributePlaceholder {
|
|
24
|
-
};
|
|
23
|
+
interface RtmAttributePlaceholder {}
|
|
25
24
|
export {RtmAttributePlaceholder as RtmAttribute};
|
|
26
25
|
|
|
27
26
|
type callbackType = (args?: any) => void;
|
|
@@ -99,6 +98,8 @@ export default class RtmEngine {
|
|
|
99
98
|
this.appId = APP_ID;
|
|
100
99
|
this.client = AgoraRTM.createInstance(this.appId);
|
|
101
100
|
|
|
101
|
+
window.rtmClient = this.client;
|
|
102
|
+
|
|
102
103
|
this.client.on('ConnectionStateChanged', (state, reason) => {
|
|
103
104
|
this.clientEventsMap.get('connectionStateChanged')({state, reason});
|
|
104
105
|
});
|
package/template/package.json
CHANGED
|
@@ -58,12 +58,13 @@
|
|
|
58
58
|
"@sentry/tracing": "6.2.1",
|
|
59
59
|
"@supersami/rn-foreground-service": "^1.1.1",
|
|
60
60
|
"agora-react-native-rtm": "1.5.1",
|
|
61
|
-
"agora-rtc-sdk-ng": "4.
|
|
62
|
-
"agora-rtm-sdk": "1.
|
|
61
|
+
"agora-rtc-sdk-ng": "4.16.1",
|
|
62
|
+
"agora-rtm-sdk": "1.5.1",
|
|
63
63
|
"electron-log": "4.3.5",
|
|
64
64
|
"electron-squirrel-startup": "1.0.0",
|
|
65
65
|
"electron-updater": "4.3.9",
|
|
66
66
|
"exponential-backoff": "3.1.0",
|
|
67
|
+
"fetch-retry": "^5.0.6",
|
|
67
68
|
"graphql": "15.5.0",
|
|
68
69
|
"nanoevents": "7.0.1",
|
|
69
70
|
"nanoid": "4.0.0",
|
|
@@ -34,6 +34,9 @@ import ToastComponent from './components/ToastComponent';
|
|
|
34
34
|
import {ToastContext, ToastProvider} from './components/useToast';
|
|
35
35
|
import {SdkApiContext} from './components/SdkApiContext';
|
|
36
36
|
import isSDK from './utils/isSDK';
|
|
37
|
+
import {setupLogger} from './utils/axiomLogger';
|
|
38
|
+
|
|
39
|
+
setupLogger();
|
|
37
40
|
|
|
38
41
|
interface AppWrapperProps {
|
|
39
42
|
children: React.ReactNode;
|
|
@@ -437,7 +437,15 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
437
437
|
checkDeviceExists(storedDevice, deviceList)
|
|
438
438
|
) {
|
|
439
439
|
log(logTag, deviceLogTag, 'Setting to active id', storedDevice);
|
|
440
|
-
setDevice(storedDevice)
|
|
440
|
+
setDevice(storedDevice).catch((e:Error) => {
|
|
441
|
+
log(
|
|
442
|
+
logTag,
|
|
443
|
+
deviceLogTag,
|
|
444
|
+
'ERROR:Setting to active id',
|
|
445
|
+
storedDevice,
|
|
446
|
+
e.message,
|
|
447
|
+
);
|
|
448
|
+
});
|
|
441
449
|
} else {
|
|
442
450
|
eventEmitter(currentDevice);
|
|
443
451
|
setDeviceUi(currentDevice);
|
|
@@ -622,7 +630,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
622
630
|
return new Promise<void>((res, rej) => {
|
|
623
631
|
if (mutexRef.current) {
|
|
624
632
|
const e = new Error(logtag + ' Change already in progress');
|
|
625
|
-
log('DeviceConfigure:', logtag, 'Error setting', kind, e);
|
|
633
|
+
log('DeviceConfigure:', logtag, 'Error setting', kind, e.message);
|
|
626
634
|
rej(e);
|
|
627
635
|
return;
|
|
628
636
|
}
|
|
@@ -33,6 +33,7 @@ import RTMEngine from '../rtm/RTMEngine';
|
|
|
33
33
|
import {filterObject} from '../utils';
|
|
34
34
|
import SDKEvents from '../utils/SdkEvents';
|
|
35
35
|
import isSDK from '../utils/isSDK';
|
|
36
|
+
import {useAsyncEffect} from '../utils/useAsyncEffect';
|
|
36
37
|
|
|
37
38
|
export enum UserType {
|
|
38
39
|
ScreenShare = 'screenshare',
|
|
@@ -120,7 +121,7 @@ const RtmConfigure = (props: any) => {
|
|
|
120
121
|
});
|
|
121
122
|
RTMEngine.getInstance().setLocalUID(localUid.toString());
|
|
122
123
|
timerValueRef.current = 5;
|
|
123
|
-
setAttribute();
|
|
124
|
+
await setAttribute();
|
|
124
125
|
} catch (error) {
|
|
125
126
|
setTimeout(async () => {
|
|
126
127
|
timerValueRef.current = timerValueRef.current + timerValueRef.current;
|
|
@@ -392,7 +393,7 @@ const RtmConfigure = (props: any) => {
|
|
|
392
393
|
}
|
|
393
394
|
}
|
|
394
395
|
});
|
|
395
|
-
doLoginAndSetupRTM();
|
|
396
|
+
await doLoginAndSetupRTM();
|
|
396
397
|
};
|
|
397
398
|
|
|
398
399
|
const runQueuedEvents = async () => {
|
|
@@ -443,23 +444,24 @@ const RtmConfigure = (props: any) => {
|
|
|
443
444
|
};
|
|
444
445
|
|
|
445
446
|
const end = async () => {
|
|
446
|
-
callActive
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
447
|
+
if (!callActive) {
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
await RTMEngine.getInstance().destroy();
|
|
451
|
+
setHasUserJoinedRTM(false);
|
|
452
|
+
// setLogin(false),
|
|
453
|
+
console.log('RTM cleanup done');
|
|
453
454
|
};
|
|
454
455
|
|
|
455
|
-
|
|
456
|
-
if (!
|
|
457
|
-
|
|
458
|
-
|
|
456
|
+
useAsyncEffect(async () => {
|
|
457
|
+
if (!callActive) {
|
|
458
|
+
console.log('waiting to init RTM');
|
|
459
|
+
setLogin(true);
|
|
460
|
+
} else {
|
|
461
|
+
await init();
|
|
459
462
|
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
end();
|
|
463
|
+
return async () => {
|
|
464
|
+
await end();
|
|
463
465
|
};
|
|
464
466
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
465
467
|
}, [rtcProps.channel, rtcProps.appId, callActive]);
|
|
@@ -177,166 +177,179 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
|
|
|
177
177
|
},
|
|
178
178
|
});
|
|
179
179
|
};
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
msgId: messageData.msgId,
|
|
192
|
-
});
|
|
193
|
-
/**
|
|
194
|
-
* if chat group window is not active.
|
|
195
|
-
* then we will increment the unread count
|
|
196
|
-
*/
|
|
197
|
-
if (!groupActiveRef.current) {
|
|
198
|
-
setUnreadGroupMessageCount((prevState) => {
|
|
199
|
-
return prevState + 1;
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
break;
|
|
203
|
-
case ChatMessageActionEnum.Update:
|
|
204
|
-
setMessageStore((prevState) => {
|
|
205
|
-
const newState = prevState.map((item) => {
|
|
206
|
-
if (
|
|
207
|
-
item.msgId === messageData.msgId &&
|
|
208
|
-
item.uid === data.sender
|
|
209
|
-
) {
|
|
210
|
-
return {
|
|
211
|
-
...item,
|
|
212
|
-
msg: messageData.msg,
|
|
213
|
-
updatedTimestamp: messageData.updatedTimestamp,
|
|
214
|
-
};
|
|
215
|
-
} else {
|
|
216
|
-
return item;
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
return newState;
|
|
220
|
-
});
|
|
221
|
-
break;
|
|
222
|
-
case ChatMessageActionEnum.Delete:
|
|
223
|
-
setMessageStore((prevState) => {
|
|
224
|
-
const newState = prevState.map((item) => {
|
|
225
|
-
if (
|
|
226
|
-
item.msgId === messageData.msgId &&
|
|
227
|
-
item.uid === data.sender
|
|
228
|
-
) {
|
|
229
|
-
return {
|
|
230
|
-
...item,
|
|
231
|
-
isDeleted: true,
|
|
232
|
-
updatedTimestamp: messageData.updatedTimestamp,
|
|
233
|
-
};
|
|
234
|
-
} else {
|
|
235
|
-
return item;
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
return newState;
|
|
239
|
-
});
|
|
240
|
-
break;
|
|
241
|
-
default:
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
events.on(EventNames.PRIVATE_CHAT_MESSAGE, (data) => {
|
|
246
|
-
const payload = JSON.parse(data.payload);
|
|
247
|
-
const messageAction = payload.action;
|
|
248
|
-
const messageData = payload.value;
|
|
249
|
-
switch (messageAction) {
|
|
250
|
-
case ChatMessageActionEnum.Create:
|
|
251
|
-
//To order chat participant based on recent message
|
|
252
|
-
try {
|
|
253
|
-
updateRenderListState(data.sender, {
|
|
254
|
-
lastMessageTimeStamp: new Date().getTime(),
|
|
255
|
-
});
|
|
256
|
-
} catch (error) {
|
|
257
|
-
console.log("ERROR : couldn't update the last message timestamp");
|
|
258
|
-
}
|
|
259
|
-
showMessageNotification(messageData.msg, `${data.sender}`, true);
|
|
260
|
-
addMessageToPrivateStore(
|
|
261
|
-
data.sender,
|
|
262
|
-
{
|
|
180
|
+
|
|
181
|
+
const unsubPublicChatMessage = events.on(
|
|
182
|
+
EventNames.PUBLIC_CHAT_MESSAGE,
|
|
183
|
+
(data) => {
|
|
184
|
+
const payload = JSON.parse(data.payload);
|
|
185
|
+
const messageAction = payload.action;
|
|
186
|
+
const messageData = payload.value;
|
|
187
|
+
switch (messageAction) {
|
|
188
|
+
case ChatMessageActionEnum.Create:
|
|
189
|
+
showMessageNotification(messageData.msg, `${data.sender}`);
|
|
190
|
+
addMessageToStore(data.sender, {
|
|
263
191
|
msg: messageData.msg,
|
|
264
192
|
createdTimestamp: messageData.createdTimestamp,
|
|
265
|
-
msgId: messageData.msgId,
|
|
266
193
|
isDeleted: messageData.isDeleted,
|
|
267
|
-
|
|
268
|
-
false,
|
|
269
|
-
);
|
|
270
|
-
/**
|
|
271
|
-
* if user's private window is active.
|
|
272
|
-
* then we will not increment the unread count
|
|
273
|
-
*/
|
|
274
|
-
|
|
275
|
-
if (!(individualActiveRef.current === data.sender)) {
|
|
276
|
-
setUnreadIndividualMessageCount((prevState) => {
|
|
277
|
-
const prevCount =
|
|
278
|
-
prevState && prevState[data.sender]
|
|
279
|
-
? prevState[data.sender]
|
|
280
|
-
: 0;
|
|
281
|
-
return {
|
|
282
|
-
...prevState,
|
|
283
|
-
[data.sender]: prevCount + 1,
|
|
284
|
-
};
|
|
194
|
+
msgId: messageData.msgId,
|
|
285
195
|
});
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
196
|
+
/**
|
|
197
|
+
* if chat group window is not active.
|
|
198
|
+
* then we will increment the unread count
|
|
199
|
+
*/
|
|
200
|
+
if (!groupActiveRef.current) {
|
|
201
|
+
setUnreadGroupMessageCount((prevState) => {
|
|
202
|
+
return prevState + 1;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
break;
|
|
206
|
+
case ChatMessageActionEnum.Update:
|
|
207
|
+
setMessageStore((prevState) => {
|
|
208
|
+
const newState = prevState.map((item) => {
|
|
209
|
+
if (
|
|
210
|
+
item.msgId === messageData.msgId &&
|
|
211
|
+
item.uid === data.sender
|
|
212
|
+
) {
|
|
213
|
+
return {
|
|
214
|
+
...item,
|
|
215
|
+
msg: messageData.msg,
|
|
216
|
+
updatedTimestamp: messageData.updatedTimestamp,
|
|
217
|
+
};
|
|
218
|
+
} else {
|
|
219
|
+
return item;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
return newState;
|
|
304
223
|
});
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
224
|
+
break;
|
|
225
|
+
case ChatMessageActionEnum.Delete:
|
|
226
|
+
setMessageStore((prevState) => {
|
|
227
|
+
const newState = prevState.map((item) => {
|
|
228
|
+
if (
|
|
229
|
+
item.msgId === messageData.msgId &&
|
|
230
|
+
item.uid === data.sender
|
|
231
|
+
) {
|
|
232
|
+
return {
|
|
233
|
+
...item,
|
|
234
|
+
isDeleted: true,
|
|
235
|
+
updatedTimestamp: messageData.updatedTimestamp,
|
|
236
|
+
};
|
|
237
|
+
} else {
|
|
238
|
+
return item;
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
return newState;
|
|
242
|
+
});
|
|
243
|
+
break;
|
|
244
|
+
default:
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
);
|
|
249
|
+
|
|
250
|
+
const unsubPrivateChatMessage = events.on(
|
|
251
|
+
EventNames.PRIVATE_CHAT_MESSAGE,
|
|
252
|
+
(data) => {
|
|
253
|
+
const payload = JSON.parse(data.payload);
|
|
254
|
+
const messageAction = payload.action;
|
|
255
|
+
const messageData = payload.value;
|
|
256
|
+
switch (messageAction) {
|
|
257
|
+
case ChatMessageActionEnum.Create:
|
|
258
|
+
//To order chat participant based on recent message
|
|
259
|
+
try {
|
|
260
|
+
updateRenderListState(data.sender, {
|
|
261
|
+
lastMessageTimeStamp: new Date().getTime(),
|
|
262
|
+
});
|
|
263
|
+
} catch (error) {
|
|
264
|
+
console.log("ERROR : couldn't update the last message timestamp");
|
|
265
|
+
}
|
|
266
|
+
showMessageNotification(messageData.msg, `${data.sender}`, true);
|
|
267
|
+
addMessageToPrivateStore(
|
|
268
|
+
data.sender,
|
|
269
|
+
{
|
|
270
|
+
msg: messageData.msg,
|
|
271
|
+
createdTimestamp: messageData.createdTimestamp,
|
|
272
|
+
msgId: messageData.msgId,
|
|
273
|
+
isDeleted: messageData.isDeleted,
|
|
274
|
+
},
|
|
275
|
+
false,
|
|
276
|
+
);
|
|
277
|
+
/**
|
|
278
|
+
* if user's private window is active.
|
|
279
|
+
* then we will not increment the unread count
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
if (!(individualActiveRef.current === data.sender)) {
|
|
283
|
+
setUnreadIndividualMessageCount((prevState) => {
|
|
284
|
+
const prevCount =
|
|
285
|
+
prevState && prevState[data.sender]
|
|
286
|
+
? prevState[data.sender]
|
|
287
|
+
: 0;
|
|
320
288
|
return {
|
|
321
|
-
...
|
|
322
|
-
|
|
323
|
-
updatedTimestamp: messageData.updatedTimestamp,
|
|
289
|
+
...prevState,
|
|
290
|
+
[data.sender]: prevCount + 1,
|
|
324
291
|
};
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
break;
|
|
295
|
+
case ChatMessageActionEnum.Update:
|
|
296
|
+
setPrivateMessageStore((prevState) => {
|
|
297
|
+
const privateChatOfUid = prevState[data.sender];
|
|
298
|
+
const updatedData = privateChatOfUid.map((item) => {
|
|
299
|
+
if (
|
|
300
|
+
item.msgId === messageData.msgId &&
|
|
301
|
+
item.uid === data.sender
|
|
302
|
+
) {
|
|
303
|
+
return {
|
|
304
|
+
...item,
|
|
305
|
+
msg: messageData.msg,
|
|
306
|
+
updatedTimestamp: messageData.updatedTimestamp,
|
|
307
|
+
};
|
|
308
|
+
} else {
|
|
309
|
+
return item;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
const newState = {
|
|
313
|
+
...prevState,
|
|
314
|
+
[data.sender]: updatedData,
|
|
315
|
+
};
|
|
316
|
+
return newState;
|
|
328
317
|
});
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
318
|
+
break;
|
|
319
|
+
case ChatMessageActionEnum.Delete:
|
|
320
|
+
setPrivateMessageStore((prevState) => {
|
|
321
|
+
const privateChatOfUid = prevState[data.sender];
|
|
322
|
+
const updatedData = privateChatOfUid.map((item) => {
|
|
323
|
+
if (
|
|
324
|
+
item.msgId === messageData.msgId &&
|
|
325
|
+
item.uid === data.sender
|
|
326
|
+
) {
|
|
327
|
+
return {
|
|
328
|
+
...item,
|
|
329
|
+
isDeleted: true,
|
|
330
|
+
updatedTimestamp: messageData.updatedTimestamp,
|
|
331
|
+
};
|
|
332
|
+
} else {
|
|
333
|
+
return item;
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
const newState = {
|
|
337
|
+
...prevState,
|
|
338
|
+
[data.sender]: updatedData,
|
|
339
|
+
};
|
|
340
|
+
return newState;
|
|
341
|
+
});
|
|
342
|
+
break;
|
|
343
|
+
default:
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
);
|
|
348
|
+
|
|
349
|
+
return () => {
|
|
350
|
+
unsubPublicChatMessage();
|
|
351
|
+
unsubPrivateChatMessage();
|
|
352
|
+
};
|
|
340
353
|
}, []);
|
|
341
354
|
|
|
342
355
|
const addMessageToStore = (uid: UidType, body: messageInterface) => {
|