Browse Source

ref(connection-indicator) Convert to TS (#12239)

factor2
Robert Pintilii 3 years ago
parent
commit
1106a86ba7
No account linked to committer's email address

+ 1
- 0
react/features/base/conference/reducer.ts View File

@@ -51,6 +51,7 @@ export interface IJitsiConference {
51 51
     kickParticipant: Function;
52 52
     muteParticipant: Function;
53 53
     myLobbyUserId: Function;
54
+    myUserId: Function;
54 55
     on: Function;
55 56
     removeTrack: Function;
56 57
     replaceTrack: Function;

+ 1
- 0
react/features/base/connection/reducer.ts View File

@@ -20,6 +20,7 @@ export interface IConnectionState {
20 20
     connecting?: Object;
21 21
     connection?: {
22 22
         getJid: () => string;
23
+        getLogs: () => Object;
23 24
     };
24 25
     error?: ConnectionFailedError;
25 26
     locationURL?: URL;

react/features/connection-indicator/actions.js → react/features/connection-indicator/actions.ts View File

@@ -1,3 +1,4 @@
1
+import { IStore } from '../app/types';
1 2
 import getRoomName from '../base/config/getRoomName';
2 3
 import { downloadJSON } from '../base/util/downloadJSON';
3 4
 
@@ -8,11 +9,11 @@ import { downloadJSON } from '../base/util/downloadJSON';
8 9
  * @returns {Function}
9 10
  */
10 11
 export function saveLogs() {
11
-    return (dispatch, getState) => {
12
+    return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
12 13
 
13
-        const logs = getState()['features/base/connection'].connection.getLogs();
14
+        const logs = getState()['features/base/connection'].connection?.getLogs();
14 15
         const roomName = getRoomName() || '';
15 16
 
16
-        downloadJSON(logs, `meetlog-${roomName}.json`);
17
+        downloadJSON(logs ?? {}, `meetlog-${roomName}.json`);
17 18
     };
18 19
 }

+ 0
- 1
react/features/connection-indicator/components/web/ConnectionIndicator.tsx View File

@@ -25,7 +25,6 @@ import {
25 25
     isParticipantConnectionStatusInterrupted,
26 26
     isTrackStreamingStatusInactive,
27 27
     isTrackStreamingStatusInterrupted
28
-    // @ts-ignore
29 28
 } from '../../functions';
30 29
 import AbstractConnectionIndicator, {
31 30
     INDICATOR_DISPLAY_THRESHOLD,

react/features/connection-indicator/functions.js → react/features/connection-indicator/functions.ts View File

@@ -1,4 +1,6 @@
1 1
 import { JitsiParticipantConnectionStatus, JitsiTrackStreamingStatus } from '../base/lib-jitsi-meet';
2
+import { Participant } from '../base/participants/types';
3
+import { ITrack } from '../base/tracks/reducer';
2 4
 
3 5
 /**
4 6
  * Checks if the passed track's streaming status is active.
@@ -6,7 +8,7 @@ import { JitsiParticipantConnectionStatus, JitsiTrackStreamingStatus } from '../
6 8
  * @param {Object} videoTrack - Track reference.
7 9
  * @returns {boolean} - Is streaming status active.
8 10
  */
9
-export function isTrackStreamingStatusActive(videoTrack) {
11
+export function isTrackStreamingStatusActive(videoTrack: ITrack) {
10 12
     const streamingStatus = videoTrack?.streamingStatus;
11 13
 
12 14
     return streamingStatus === JitsiTrackStreamingStatus.ACTIVE;
@@ -18,7 +20,7 @@ export function isTrackStreamingStatusActive(videoTrack) {
18 20
  * @param {Object} videoTrack - Track reference.
19 21
  * @returns {boolean} - Is streaming status inactive.
20 22
  */
21
-export function isTrackStreamingStatusInactive(videoTrack) {
23
+export function isTrackStreamingStatusInactive(videoTrack: ITrack) {
22 24
     const streamingStatus = videoTrack?.streamingStatus;
23 25
 
24 26
     return streamingStatus === JitsiTrackStreamingStatus.INACTIVE;
@@ -30,7 +32,7 @@ export function isTrackStreamingStatusInactive(videoTrack) {
30 32
  * @param {Object} videoTrack - Track reference.
31 33
  * @returns {boolean} - Is streaming status interrupted.
32 34
  */
33
-export function isTrackStreamingStatusInterrupted(videoTrack) {
35
+export function isTrackStreamingStatusInterrupted(videoTrack: ITrack) {
34 36
     const streamingStatus = videoTrack?.streamingStatus;
35 37
 
36 38
     return streamingStatus === JitsiTrackStreamingStatus.INTERRUPTED;
@@ -42,7 +44,7 @@ export function isTrackStreamingStatusInterrupted(videoTrack) {
42 44
  * @param {Object} participant - Participant reference.
43 45
  * @returns {boolean} - Is connection status active.
44 46
  */
45
-export function isParticipantConnectionStatusActive(participant) {
47
+export function isParticipantConnectionStatusActive(participant: Participant) {
46 48
     const connectionStatus = participant?.connectionStatus;
47 49
 
48 50
     return connectionStatus === JitsiParticipantConnectionStatus.ACTIVE;
@@ -54,7 +56,7 @@ export function isParticipantConnectionStatusActive(participant) {
54 56
  * @param {Object} participant - Participant reference.
55 57
  * @returns {boolean} - Is connection status inactive.
56 58
  */
57
-export function isParticipantConnectionStatusInactive(participant) {
59
+export function isParticipantConnectionStatusInactive(participant?: Participant) {
58 60
     const connectionStatus = participant?.connectionStatus;
59 61
 
60 62
     return connectionStatus === JitsiParticipantConnectionStatus.INACTIVE;
@@ -66,7 +68,7 @@ export function isParticipantConnectionStatusInactive(participant) {
66 68
  * @param {Object} participant - Participant reference.
67 69
  * @returns {boolean} - Is connection status interrupted.
68 70
  */
69
-export function isParticipantConnectionStatusInterrupted(participant) {
71
+export function isParticipantConnectionStatusInterrupted(participant?: Participant) {
70 72
     const connectionStatus = participant?.connectionStatus;
71 73
 
72 74
     return connectionStatus === JitsiParticipantConnectionStatus.INTERRUPTED;

react/features/connection-indicator/middleware.js → react/features/connection-indicator/middleware.ts View File

@@ -1,9 +1,7 @@
1
-// @flow
1
+import { CONFERENCE_JOINED } from '../base/conference/actionTypes';
2
+import MiddlewareRegistry from '../base/redux/MiddlewareRegistry';
2 3
 
3
-import { CONFERENCE_JOINED } from '../base/conference';
4
-import { MiddlewareRegistry } from '../base/redux';
5
-
6
-import { statsEmitter } from './index';
4
+import statsEmitter from './statsEmitter';
7 5
 
8 6
 /**
9 7
  * Implements the middleware of the feature connection-indicator.
@@ -11,7 +9,7 @@ import { statsEmitter } from './index';
11 9
  * @param {Store} store - The redux store.
12 10
  * @returns {Function}
13 11
  */
14
-// eslint-disable-next-line no-unused-vars
12
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
15 13
 MiddlewareRegistry.register(store => next => action => {
16 14
     switch (action.type) {
17 15
     case CONFERENCE_JOINED: {

react/features/connection-indicator/statsEmitter.js → react/features/connection-indicator/statsEmitter.ts View File

@@ -1,7 +1,6 @@
1
-// @flow
2
-
3 1
 import _ from 'lodash';
4 2
 
3
+import { IJitsiConference } from '../base/conference/reducer';
5 4
 import {
6 5
     JitsiConnectionQualityEvents
7 6
 } from '../base/lib-jitsi-meet';
@@ -13,7 +12,13 @@ import {
13 12
  *     userId: Function[]
14 13
  * }.
15 14
  */
16
-const subscribers = {};
15
+const subscribers: any = {};
16
+
17
+interface Stats {
18
+    codec?: Object;
19
+    framerate?: Object;
20
+    resolution?: Object;
21
+}
17 22
 
18 23
 /**
19 24
  * A singleton that acts as a pub/sub service for connection stat updates.
@@ -27,12 +32,12 @@ const statsEmitter = {
27 32
      * {@code statsEmitter} should subscribe for stat updates.
28 33
      * @returns {void}
29 34
      */
30
-    startListeningForStats(conference: Object) {
35
+    startListeningForStats(conference: IJitsiConference) {
31 36
         conference.on(JitsiConnectionQualityEvents.LOCAL_STATS_UPDATED,
32
-            stats => this._onStatsUpdated(conference.myUserId(), stats));
37
+            (stats: Stats) => this._onStatsUpdated(conference.myUserId(), stats));
33 38
 
34 39
         conference.on(JitsiConnectionQualityEvents.REMOTE_STATS_UPDATED,
35
-            (id, stats) => this._emitStatsUpdate(id, stats));
40
+            (id: string, stats: Stats) => this._emitStatsUpdate(id, stats));
36 41
     },
37 42
 
38 43
     /**
@@ -44,7 +49,7 @@ const statsEmitter = {
44 49
      * user have been updated.
45 50
      * @returns {void}
46 51
      */
47
-    subscribeToClientStats(id: ?string, callback: Function) {
52
+    subscribeToClientStats(id: string | undefined, callback: Function) {
48 53
         if (!id) {
49 54
             return;
50 55
         }
@@ -72,7 +77,7 @@ const statsEmitter = {
72 77
         }
73 78
 
74 79
         const filteredSubscribers = subscribers[id].filter(
75
-            subscriber => subscriber !== callback);
80
+            (subscriber: Function) => subscriber !== callback);
76 81
 
77 82
         if (filteredSubscribers.length) {
78 83
             subscribers[id] = filteredSubscribers;
@@ -89,10 +94,10 @@ const statsEmitter = {
89 94
      * @param {Object} stats - New connection stats for the user.
90 95
      * @returns {void}
91 96
      */
92
-    _emitStatsUpdate(id: string, stats: Object = {}) {
97
+    _emitStatsUpdate(id: string, stats: Stats = {}) {
93 98
         const callbacks = subscribers[id] || [];
94 99
 
95
-        callbacks.forEach(callback => {
100
+        callbacks.forEach((callback: Function) => {
96 101
             callback(stats);
97 102
         });
98 103
     },
@@ -107,7 +112,7 @@ const statsEmitter = {
107 112
      * by the library.
108 113
      * @returns {void}
109 114
      */
110
-    _onStatsUpdated(localUserId: string, stats: Object) {
115
+    _onStatsUpdated(localUserId: string, stats: Stats) {
111 116
         const allUserFramerates = stats.framerate || {};
112 117
         const allUserResolutions = stats.resolution || {};
113 118
         const allUserCodecs = stats.codec || {};
@@ -117,9 +122,9 @@ const statsEmitter = {
117 122
         // be primitives, not maps, so here we override the 'lib-jitsi-meet'
118 123
         // stats objects.
119 124
         const modifiedLocalStats = Object.assign({}, stats, {
120
-            framerate: allUserFramerates[localUserId],
121
-            resolution: allUserResolutions[localUserId],
122
-            codec: allUserCodecs[localUserId]
125
+            framerate: allUserFramerates[localUserId as keyof typeof allUserFramerates],
126
+            resolution: allUserResolutions[localUserId as keyof typeof allUserResolutions],
127
+            codec: allUserCodecs[localUserId as keyof typeof allUserCodecs]
123 128
         });
124 129
 
125 130
         this._emitStatsUpdate(localUserId, modifiedLocalStats);
@@ -133,21 +138,21 @@ const statsEmitter = {
133 138
         _.union(framerateUserIds, resolutionUserIds, codecUserIds)
134 139
             .filter(id => id !== localUserId)
135 140
             .forEach(id => {
136
-                const remoteUserStats = {};
141
+                const remoteUserStats: Stats = {};
137 142
 
138
-                const framerate = allUserFramerates[id];
143
+                const framerate = allUserFramerates[id as keyof typeof allUserFramerates];
139 144
 
140 145
                 if (framerate) {
141 146
                     remoteUserStats.framerate = framerate;
142 147
                 }
143 148
 
144
-                const resolution = allUserResolutions[id];
149
+                const resolution = allUserResolutions[id as keyof typeof allUserResolutions];
145 150
 
146 151
                 if (resolution) {
147 152
                     remoteUserStats.resolution = resolution;
148 153
                 }
149 154
 
150
-                const codec = allUserCodecs[id];
155
+                const codec = allUserCodecs[id as keyof typeof allUserCodecs];
151 156
 
152 157
                 if (codec) {
153 158
                     remoteUserStats.codec = codec;

Loading…
Cancel
Save