agora-appbuilder-core 4.0.0-spl.10 → 4.0.0-spl.12
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 +17 -7
- 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;
|
|
@@ -136,10 +136,10 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
136
136
|
const {RtcEngine} = rtc as unknown as {RtcEngine: WebRtcEngineInstance};
|
|
137
137
|
const {localStream} = RtcEngine;
|
|
138
138
|
|
|
139
|
-
const refreshDeviceList = useCallback(async () => {
|
|
139
|
+
const refreshDeviceList = useCallback(async (noEmitLog?: boolean) => {
|
|
140
140
|
let updatedDeviceList: MediaDeviceInfo[];
|
|
141
141
|
await RtcEngine.getDevices(function (devices: deviceInfo[]) {
|
|
142
|
-
log('Fetching all devices: ', devices);
|
|
142
|
+
!noEmitLog && log('Fetching all devices: ', devices);
|
|
143
143
|
/**
|
|
144
144
|
* Some browsers list the same microphone twice with different Id's,
|
|
145
145
|
* their group Id's match as they are the same physical device.
|
|
@@ -161,7 +161,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
161
161
|
device.kind == 'audiooutput'),
|
|
162
162
|
);
|
|
163
163
|
|
|
164
|
-
log('Setting unique devices', updatedDeviceList);
|
|
164
|
+
!noEmitLog && log('Setting unique devices', updatedDeviceList);
|
|
165
165
|
if (updatedDeviceList.length > 0) {
|
|
166
166
|
setDeviceList(updatedDeviceList);
|
|
167
167
|
}
|
|
@@ -327,8 +327,11 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
327
327
|
};
|
|
328
328
|
|
|
329
329
|
useEffect(() => {
|
|
330
|
+
// Notify updated state every 20s
|
|
331
|
+
let count = 0;
|
|
330
332
|
const interval = setInterval(() => {
|
|
331
|
-
|
|
333
|
+
count = count + 1;
|
|
334
|
+
refreshDeviceList(count % 10 !== 0);
|
|
332
335
|
}, 2000);
|
|
333
336
|
return () => {
|
|
334
337
|
clearInterval(interval);
|
|
@@ -437,7 +440,15 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
437
440
|
checkDeviceExists(storedDevice, deviceList)
|
|
438
441
|
) {
|
|
439
442
|
log(logTag, deviceLogTag, 'Setting to active id', storedDevice);
|
|
440
|
-
setDevice(storedDevice)
|
|
443
|
+
setDevice(storedDevice).catch((e:Error) => {
|
|
444
|
+
log(
|
|
445
|
+
logTag,
|
|
446
|
+
deviceLogTag,
|
|
447
|
+
'ERROR:Setting to active id',
|
|
448
|
+
storedDevice,
|
|
449
|
+
e.message,
|
|
450
|
+
);
|
|
451
|
+
});
|
|
441
452
|
} else {
|
|
442
453
|
eventEmitter(currentDevice);
|
|
443
454
|
setDeviceUi(currentDevice);
|
|
@@ -542,7 +553,6 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
542
553
|
// Port this to useEffectEvent(https://beta.reactjs.org/reference/react/useEffectEvent) when
|
|
543
554
|
// released
|
|
544
555
|
useEffect(() => {
|
|
545
|
-
log('previous devicelist updated', deviceList);
|
|
546
556
|
AgoraRTC.onMicrophoneChanged = commonOnChangedEvent;
|
|
547
557
|
return () => {
|
|
548
558
|
AgoraRTC.onMicrophoneChanged = null;
|
|
@@ -622,7 +632,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
622
632
|
return new Promise<void>((res, rej) => {
|
|
623
633
|
if (mutexRef.current) {
|
|
624
634
|
const e = new Error(logtag + ' Change already in progress');
|
|
625
|
-
log('DeviceConfigure:', logtag, 'Error setting', kind, e);
|
|
635
|
+
log('DeviceConfigure:', logtag, 'Error setting', kind, e.message);
|
|
626
636
|
rej(e);
|
|
627
637
|
return;
|
|
628
638
|
}
|
|
@@ -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]);
|