ref(TS) Alpha sort interfaces (#11883)

This commit is contained in:
Robert Pintilii 2022-07-20 11:47:01 +03:00 committed by GitHub
parent 4a8c8899a9
commit ac2af79807
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 791 additions and 512 deletions

277
package-lock.json generated
View File

@ -162,6 +162,7 @@
"eslint-plugin-jsdoc": "37.0.3",
"eslint-plugin-react": "7.26.1",
"eslint-plugin-react-native": "3.11.0",
"eslint-plugin-typescript-sort-keys": "2.1.0",
"expose-loader": "3.0.0",
"imports-loader": "0.7.1",
"jetifier": "1.6.4",
@ -5766,6 +5767,147 @@
"node": ">=10"
}
},
"node_modules/@typescript-eslint/experimental-utils": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.30.7.tgz",
"integrity": "sha512-r218ZVL0zFBYzEq8/9K2ZhRgsmKUhm8xd3sWChgvTbmP98kHGuY83IUl64SS9fx9OSBM9vMLdzBfox4eDdm/ZQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/utils": "5.30.7"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz",
"integrity": "sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.30.7",
"@typescript-eslint/visitor-keys": "5.30.7"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.7.tgz",
"integrity": "sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz",
"integrity": "sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.30.7",
"@typescript-eslint/visitor-keys": "5.30.7",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.7.tgz",
"integrity": "sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"@typescript-eslint/scope-manager": "5.30.7",
"@typescript-eslint/types": "5.30.7",
"@typescript-eslint/typescript-estree": "5.30.7",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz",
"integrity": "sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.30.7",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@typescript-eslint/experimental-utils/node_modules/semver": {
"version": "7.3.7",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@typescript-eslint/parser": {
"version": "5.30.4",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.4.tgz",
@ -9317,6 +9459,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/eslint-plugin-typescript-sort-keys": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-typescript-sort-keys/-/eslint-plugin-typescript-sort-keys-2.1.0.tgz",
"integrity": "sha512-ET7ABypdz19m47QnKynzNfWPi4CTNQ5jQQC1X5d0gojIwblkbGiCa5IilsqzBTmqxZ0yXDqKBO/GBkBFQCOFsg==",
"dev": true,
"dependencies": {
"@typescript-eslint/experimental-utils": "^5.0.0",
"json-schema": "^0.4.0",
"natural-compare-lite": "^1.4.0"
},
"engines": {
"node": "10 - 12 || >= 13.9"
},
"peerDependencies": {
"@typescript-eslint/parser": "^1 || ^2 || ^3 || ^4 || ^5",
"eslint": "^5 || ^6 || ^7 || ^8",
"typescript": "^3 || ^4"
}
},
"node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@ -12379,6 +12540,12 @@
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"node_modules/json-schema": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
"dev": true
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@ -13682,6 +13849,12 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"node_modules/natural-compare-lite": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@ -24827,6 +25000,87 @@
}
}
},
"@typescript-eslint/experimental-utils": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.30.7.tgz",
"integrity": "sha512-r218ZVL0zFBYzEq8/9K2ZhRgsmKUhm8xd3sWChgvTbmP98kHGuY83IUl64SS9fx9OSBM9vMLdzBfox4eDdm/ZQ==",
"dev": true,
"requires": {
"@typescript-eslint/utils": "5.30.7"
},
"dependencies": {
"@typescript-eslint/scope-manager": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz",
"integrity": "sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.30.7",
"@typescript-eslint/visitor-keys": "5.30.7"
}
},
"@typescript-eslint/types": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.7.tgz",
"integrity": "sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz",
"integrity": "sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.30.7",
"@typescript-eslint/visitor-keys": "5.30.7",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
}
},
"@typescript-eslint/utils": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.7.tgz",
"integrity": "sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
"@typescript-eslint/scope-manager": "5.30.7",
"@typescript-eslint/types": "5.30.7",
"@typescript-eslint/typescript-estree": "5.30.7",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
}
},
"@typescript-eslint/visitor-keys": {
"version": "5.30.7",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz",
"integrity": "sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.30.7",
"eslint-visitor-keys": "^3.3.0"
}
},
"eslint-visitor-keys": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true
},
"semver": {
"version": "7.3.7",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
}
}
},
"@typescript-eslint/parser": {
"version": "5.30.4",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.4.tgz",
@ -27701,6 +27955,17 @@
"integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==",
"dev": true
},
"eslint-plugin-typescript-sort-keys": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-typescript-sort-keys/-/eslint-plugin-typescript-sort-keys-2.1.0.tgz",
"integrity": "sha512-ET7ABypdz19m47QnKynzNfWPi4CTNQ5jQQC1X5d0gojIwblkbGiCa5IilsqzBTmqxZ0yXDqKBO/GBkBFQCOFsg==",
"dev": true,
"requires": {
"@typescript-eslint/experimental-utils": "^5.0.0",
"json-schema": "^0.4.0",
"natural-compare-lite": "^1.4.0"
}
},
"eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@ -29897,6 +30162,12 @@
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"json-schema": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
"dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@ -30976,6 +31247,12 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"natural-compare-lite": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
"negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",

View File

@ -167,6 +167,7 @@
"eslint-plugin-jsdoc": "37.0.3",
"eslint-plugin-react": "7.26.1",
"eslint-plugin-react-native": "3.11.0",
"eslint-plugin-typescript-sort-keys": "2.1.0",
"expose-loader": "3.0.0",
"imports-loader": "0.7.1",
"jetifier": "1.6.4",

View File

@ -19,11 +19,12 @@ module.exports = {
'@typescript-eslint/no-explicit-any': 'off',
'no-prototype-builtins': 'off',
'no-shadow': 'off',
'@typescript-eslint/no-shadow': [ 'error' ]
'@typescript-eslint/no-shadow': [ 'error' ],
'typescript-sort-keys/interface': 'error',
'typescript-sort-keys/string-enum': 'error'
},
'plugins': [ '@typescript-eslint' ],
'plugins': [ '@typescript-eslint', 'typescript-sort-keys' ],
'extends': [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended'
]

View File

@ -36,11 +36,11 @@ interface Value {
export interface IAnalyticsState {
localTracksDuration: {
audio: Value,
conference: Value,
video: {
camera: Value,
desktop: Value
},
conference: Value
}
}
}

View File

@ -14,8 +14,8 @@ import { ILastNState } from '../base/lastn/reducer';
import { ILibJitsiMeetState } from '../base/lib-jitsi-meet/reducer';
export interface IStore {
getState: Function,
dispatch: Function
dispatch: Function,
getState: Function
}
export interface IState {

View File

@ -31,13 +31,13 @@ const initialState = {
export interface IAVModerationState {
audioModerationEnabled: boolean;
videoModerationEnabled: boolean;
audioUnmuteApproved?: boolean|undefined;
audioWhitelist: { [id: string]: boolean };
videoWhitelist: { [id: string]: boolean };
pendingAudio: Array<{ id: string }>;
pendingVideo: Array<{ id: string }>;
audioUnmuteApproved?: boolean|undefined;
videoModerationEnabled: boolean;
videoUnmuteApproved?: boolean|undefined;
videoWhitelist: { [id: string]: boolean };
}
/**

View File

@ -47,24 +47,24 @@ const DEFAULT_STATE = {
};
export interface IConferenceState {
authEnabled?: boolean|undefined;
authLogin?: string|undefined;
authRequired?: Object;
conference: Object|undefined;
conferenceTimestamp?: number;
e2eeSupported: boolean|undefined;
followMeEnabled?: boolean;
joining: Object|undefined;
leaving: Object|undefined;
localSubject?: string;
locked: string|undefined;
membersOnly: boolean|undefined;
password: string|undefined;
passwordRequired: boolean|undefined;
authEnabled?: boolean|undefined;
authLogin?: string|undefined;
subject?: string;
localSubject?: string;
conferenceTimestamp?: number;
authRequired?: Object;
followMeEnabled?: boolean;
startReactionsMuted?: boolean;
room?: Object;
pendingSubjectChange?: string;
room?: Object;
startReactionsMuted?: boolean;
subject?: string;
}
/**

View File

@ -89,66 +89,74 @@ type Sounds = 'ASKED_TO_UNMUTE_SOUND' |
'TALK_WHILE_MUTED_SOUND';
export interface IConfig {
hosts?: {
domain: string;
anonymousdomain?: string;
authdomain?: string;
focus?: string;
muc: string;
_desktopSharingSourceDevice?: string;
analytics?: {
amplitudeAPPKey?: string;
disabled?: boolean;
googleAnalyticsTrackingId?: string;
matomoEndpoint?: string;
matomoSiteID?: string;
obfuscateRoomName?: boolean;
rtcstatsEnabled?: boolean;
rtcstatsEndpoint?: string;
rtcstatsPolIInterval?: number;
scriptURLs?: Array<string>;
};
bosh?: string;
websocket?: string;
focusUserJid?: string;
testing?: {
disableE2EE?: boolean;
enableThumbnailReordering?: boolean;
mobileXmppWsThreshold?: number;
p2pTestMode?: boolean;
testMode?: boolean;
noAutoPlayVideo?: boolean;
capScreenshareBitrate?: number;
setScreenSharingResolutionConstraints?: boolean;
callStatsThreshold?: number;
};
flags?: {
sourceNameSignaling?: boolean;
sendMultipleVideoStreams?: boolean;
};
disableModeratorIndicator?: boolean;
disableReactions?: boolean;
disableReactionsModeration?: boolean;
disablePolls?: boolean;
disableSelfView?: boolean;
disableSelfViewSettings?: boolean;
screenshotCapture?: {
enabled?: boolean;
mode?: 'always' | 'recording';
};
webrtcIceUdpDisable?: boolean;
webrtcIceTcpDisable?: boolean;
enableUnifiedOnChrome?: boolean;
disableAudioLevels?: boolean;
apiLogLevels?: Array<'warn' | 'log' | 'error' | 'info' | 'debug'>;
audioLevelsInterval?: number;
enableNoAudioDetection?: boolean;
enableSaveLogs?: boolean;
disableShowMoreStats?: boolean;
enableNoisyMicDetection?: boolean;
startAudioOnly?: boolean;
startAudioMuted?: boolean;
startWithAudioMuted?: boolean;
startSilent?: boolean;
enableOpusRed?: boolean;
audioQuality?: {
stereo?: boolean;
opusMaxAverageBitrate?: number|null;
stereo?: boolean;
};
autoCaptionOnRecord?: boolean;
autoKnockLobby?: boolean;
backgroundAlpha?: number;
bosh?: string;
brandingRoomAlias?: string;
breakoutRooms?: {
hideAddRoomButton?: boolean;
hideAutoAssignButton?: boolean;
hideJoinRoomButton?: boolean;
};
buttonsWithNotifyClick?: Array<ButtonsWithNotifyClick | { key: ButtonsWithNotifyClick; preventExecution: boolean }>;
callStatsConfigParams?: {
additionalIDs?: {
customerID?: string;
fqExtensionID?: string;
meetingsName?: string;
pbxExtensionID?: string;
pbxID?: string;
productName?: string;
serverName?: string;
sessionID?: string;
tenantID?: string;
};
applicationVersion?: string;
collectIP?: boolean;
collectLegacyStats?: boolean;
disableBeforeUnloadHandler?: boolean;
disablePrecalltest?: boolean;
siteID?: string;
};
callStatsID?: string;
callStatsSecret?: string;
channelLastN?: number;
chromeExtensionBanner?: {
chromeExtensionsInfo?: Array<{id: string; path: string}>;
edgeUrl?: string;
url?: string;
};
conferenceInfo?: {
alwaysVisible?: Array<string>;
autoHide?: Array<string>;
};
connectionIndicators?: {
autoHide?: boolean;
autoHideTimeout?: number;
disableDetails?: boolean;
disabled?: boolean;
inactiveDisabled?: boolean;
};
stereo?: boolean;
opusMaxAverageBitrate?: number;
resolution?: number;
disableRemoveRaisedHandOnFocus?: boolean;
disableSpeakerStatsSearch?: boolean;
speakerStatsOrder?: Array<'role'|'name'|'hasLeft'>;
maxFullResolutionParticipants?: number;
constraints?: {
video?: {
height?: {
@ -158,114 +166,210 @@ export interface IConfig {
}
}
};
disableSimulcast?: boolean;
enableLayerSuspension?: boolean;
startVideoMuted?: number;
startWithVideoMuted?: boolean;
preferH264?: boolean;
disableH264?: boolean;
desktopSharingFrameRate?: {
min?: number;
max?: number;
corsAvatarURLs?: Array<string>;
defaultLanguage?: string;
defaultLocalDisplayName?: string;
defaultRemoteDisplayName?: string;
deploymentInfo?: {
region?: string;
shard?: string;
userRegion?: string;
};
startScreenSharing?: boolean;
fileRecordingsEnabled?: boolean;
deploymentUrls?: {
downloadAppsUrl?: string;
userDocumentationURL?: string;
};
desktopSharingFrameRate?: {
max?: number;
min?: number;
};
dialInConfCodeUrl?: string;
dialInNumbersUrl?: string;
disable1On1Mode?: boolean|null;
disableAddingBackgroundImages?: boolean;
disableAudioLevels?: boolean;
disableBeforeUnloadHandlers?: boolean;
disableChatSmileys?: boolean;
disableDeepLinking?: boolean;
disableFilmstripAutohiding?: boolean;
disableH264?: boolean;
disableIncomingMessageSound?: boolean;
disableInitialGUM?: boolean;
disableInviteFunctions?: boolean;
disableJoinLeaveSounds?: boolean;
disableLocalVideoFlip?: boolean;
disableModeratorIndicator?: boolean;
disablePolls?: boolean;
disableProfile?: boolean;
disableReactions?: boolean;
disableReactionsModeration?: boolean;
disableRecordAudioNotification?: boolean;
disableRemoteMute?: boolean;
disableRemoveRaisedHandOnFocus?: boolean;
disableResponsiveTiles?: boolean;
disableRtx?: boolean;
disableScreensharingVirtualBackground?: boolean;
disableSelfView?: boolean;
disableSelfViewSettings?: boolean;
disableShortcuts?: boolean;
disableShowMoreStats?: boolean;
disableSimulcast?: boolean;
disableSpeakerStatsSearch?: boolean;
disableThirdPartyRequests?: boolean;
disableTileEnlargement?: boolean;
disableTileView?: boolean;
disabledNotifications?: Array<string>;
disabledSounds?: Array<Sounds>;
doNotFlipLocalVideo?: boolean;
doNotStoreRoom?: boolean;
dropbox?: {
appKey: string;
redirectURI?: string;
};
recordingService?: {
enabled?: boolean;
sharingEnabled?: boolean;
hideStorageWarning?: boolean;
dynamicBrandingUrl?: string;
e2ee?: {
e2eeLabels?: {
description?: string;
label?: string;
tooltip?: string;
warning?: string;
};
externallyManagedKey?: boolean;
labels?: {
description?: string;
label?: string;
tooltip?: string;
warning?: string;
};
};
e2eeLabels?: {
description?: string;
label?: string;
tooltip?: string;
warning?: string;
};
e2eping?: {
enabled?: boolean;
maxConferenceSize?: number;
maxMessagesPerSecond?: number;
numRequests?: number;
};
enableAutomaticUrlCopy?: boolean;
enableCalendarIntegration?: boolean;
enableClosePage?: boolean;
enableDisplayNameInStats?: boolean;
enableEmailInStats?: boolean;
enableEncodedTransformSupport?: boolean;
enableFeaturesBasedOnToken?: boolean;
enableForcedReload?: boolean;
enableIceRestart?: boolean;
enableInsecureRoomNameWarning?: boolean;
enableLayerSuspension?: boolean;
enableLipSync?: boolean;
enableLobbyChat?: boolean;
enableNoAudioDetection?: boolean;
enableNoisyMicDetection?: boolean;
enableOpusRed?: boolean;
enableRemb?: boolean;
enableSaveLogs?: boolean;
enableTcc?: boolean;
enableUnifiedOnChrome?: boolean;
enableWelcomePage?: boolean;
etherpad_base?: string;
faceLandmarks?: {
captureInterval?: number;
enableDisplayFaceExpressions?: boolean;
enableFaceCentering?: boolean;
enableFaceExpressionsDetection?: boolean;
enableRTCStats?: boolean;
faceCenteringThreshold?: number;
};
feedbackPercentage?: number;
fileRecordingsEnabled?: boolean;
fileRecordingsServiceEnabled?: boolean;
fileRecordingsServiceSharingEnabled?: boolean;
filmstrip?: {
disableResizable?: boolean;
disableStageFilmstrip?: boolean;
disableTopPanel?: boolean;
minParticipantCountForTopPanel?: number;
};
flags?: {
sendMultipleVideoStreams?: boolean;
sourceNameSignaling?: boolean;
};
focusUserJid?: string;
gatherStats?: boolean;
giphy?: {
displayMode?: 'all' | 'tile' | 'chat';
enabled?: boolean;
sdkKey?: '';
tileTime?: number;
};
gravatar?: {
baseUrl?: string;
disabled?: boolean;
};
gravatarBaseURL?: string;
hiddenPremeetingButtons?: Array<'microphone' | 'camera' | 'select-background' | 'invite' | 'settings'>;
hideAddRoomButton?: boolean;
hideConferenceSubject?: boolean;
hideConferenceTimer?: boolean;
hideDisplayName?: boolean;
hideDominantSpeakerBadge?: boolean;
hideEmailInSettings?: boolean;
hideLobbyButton?: boolean;
hideParticipantsStats?: boolean;
hideRecordingLabel?: boolean;
hosts?: {
anonymousdomain?: string;
authdomain?: string;
domain: string;
focus?: string;
muc: string;
};
inviteAppName?: string|null;
lastNLimits?: {
[key: number]: number;
};
liveStreamingEnabled?: boolean;
localRecording?: {
disable?: boolean;
notifyAllParticipants?: boolean;
};
transcribingEnabled?: boolean;
transcribeWithAppLanguage?: boolean;
preferredTranscribeLanguage?: string;
autoCaptionOnRecord?: boolean;
transcription?: {
enabled?: boolean;
useAppLanguage?: boolean;
preferredLanguage?: string;
disableStartForAll?: boolean;
autoCaptionOnRecord?: boolean;
};
channelLastN?: number;
connectionIndicators?: {
autoHide?: boolean;
autoHideTimeout?: number;
disabled?: boolean;
disableDetails?: boolean;
inactiveDisabled?: boolean;
};
startLastN?: number;
lastNLimits?: {
[key: number]: number;
};
useNewBandwidthAllocationStrategy?: boolean;
videoQuality?: {
disabledCodec?: string;
preferredCodec?: string;
enforcePreferredCodec?: boolean;
maxBitratesVideo?: {
[key: string]: {
low?: number;
standard?: number;
high?: number;
}
};
minHeightForQualityLvl: {
[key: number]: string;
};
resizeDesktopForPresenter?: boolean;
};
notificationTimeouts?: {
short?: number;
medium?: number;
long?: number;
};
recordingLimit?: {
limit?: number;
appName?: string;
appURL?: string;
};
disableRtx?: boolean;
disableBeforeUnloadHandlers?: boolean;
enableTcc?: boolean;
enableRemb?: boolean;
enableIceRestart?: boolean;
enableForcedReload?: boolean;
useTurnUdp?: boolean;
enableEncodedTransformSupport?: boolean;
disableResponsiveTiles?: boolean;
hideLobbyButton?: boolean;
autoKnockLobby?: boolean;
enableLobbyChat?: boolean;
hideAddRoomButton?: boolean;
requireDisplayName?: boolean;
enableWelcomePage?: boolean;
disableShortcuts?: boolean;
disableInitialGUM?: boolean;
enableClosePage?: boolean;
disable1On1Mode?: boolean|null;
defaultLocalDisplayName?: string;
defaultRemoteDisplayName?: string;
hideDisplayName?: boolean;
hideDominantSpeakerBadge?: boolean;
defaultLanguage?: string;
disableProfile?: boolean;
hideEmailInSettings?: boolean;
enableFeaturesBasedOnToken?: boolean;
roomPasswordNumberOfDigits?: number;
localSubject?: string;
locationURL?: string;
maxFullResolutionParticipants?: number;
moderatedRoomServiceUrl?: string;
mouseMoveCallbackInterval?: number;
noticeMessage?: string;
enableCalendarIntegration?: boolean;
notificationTimeouts?: {
long?: number;
medium?: number;
short?: number;
};
notifications?: Array<string>;
openSharedDocumentOnJoin?: boolean;
opusMaxAverageBitrate?: number;
p2p?: {
backToP2PDelay?: number;
disableH264?: boolean;
disabledCodec?: string;
enableUnifiedOnChrome?: boolean;
enabled?: boolean;
iceTransportPolicy?: string;
preferH264?: boolean;
preferredCodec?: string;
stunServers?: Array<{urls: string}>;
};
participantsPane?: {
hideModeratorSettingsTab?: boolean;
hideMoreActionsButton?: boolean;
hideMuteAllButton?: boolean;
};
pcStatsInterval?: number;
preferH264?: boolean;
preferredTranscribeLanguage?: string;
prejoinConfig?: {
enabled?: boolean;
hideDisplayName?: boolean;
@ -273,195 +377,91 @@ export interface IConfig {
};
prejoinPageEnabled?: boolean;
readOnlyName?: boolean;
openSharedDocumentOnJoin?: boolean;
enableInsecureRoomNameWarning?: boolean;
enableAutomaticUrlCopy?: boolean;
corsAvatarURLs?: Array<string>;
gravatarBaseURL?: string;
gravatar?: {
baseUrl?: string;
disabled?: boolean;
recordingLimit?: {
appName?: string;
appURL?: string;
limit?: number;
};
inviteAppName?: string|null;
toolbarButtons?: Array<ToolbarButtons>;
toolbarConfig?: {
initialTimeout?: number;
timeout?: number;
alwaysVisible?: boolean;
autoHideWhileChatIsOpen?: boolean;
};
buttonsWithNotifyClick?: Array<ButtonsWithNotifyClick | { key: ButtonsWithNotifyClick; preventExecution: boolean }>;
hiddenPremeetingButtons?: Array<'microphone' | 'camera' | 'select-background' | 'invite' | 'settings'>;
gatherStats?: boolean;
pcStatsInterval?: number;
callStatsID?: string;
callStatsSecret?: string;
callStatsConfigParams?: {
disableBeforeUnloadHandler?: boolean;
applicationVersion?: string;
disablePrecalltest?: boolean;
siteID?: string;
additionalIDs?: {
customerID?: string;
tenantID?: string;
productName?: string;
meetingsName?: string;
serverName?: string;
pbxID?: string;
pbxExtensionID?: string;
fqExtensionID?: string;
sessionID?: string;
};
collectLegacyStats?: boolean;
collectIP?: boolean;
};
enableDisplayNameInStats?: boolean;
enableEmailInStats?: boolean;
faceLandmarks?: {
enableFaceCentering?: boolean;
enableFaceExpressionsDetection?: boolean;
enableDisplayFaceExpressions?: boolean;
enableRTCStats?: boolean;
faceCenteringThreshold?: number;
captureInterval?: number;
};
feedbackPercentage?: number;
disableThirdPartyRequests?: boolean;
p2p?: {
recordingService?: {
enabled?: boolean;
enableUnifiedOnChrome?: boolean;
iceTransportPolicy?: string;
preferH264?: boolean;
preferredCodec?: string;
disableH264?: boolean;
disabledCodec?: string;
backToP2PDelay?: number;
stunServers?: Array<{urls: string}>;
};
analytics?: {
disabled?: boolean;
googleAnalyticsTrackingId?: string;
matomoEndpoint?: string;
matomoSiteID?: string;
amplitudeAPPKey?: string;
obfuscateRoomName?: boolean;
rtcstatsEnabled?: boolean;
rtcstatsEndpoint?: string;
rtcstatsPolIInterval?: number;
scriptURLs?: Array<string>;
};
apiLogLevels?: Array<'warn' | 'log' | 'error' | 'info' | 'debug'>;
deploymentInfo?: {
shard?: string;
region?: string;
userRegion?: string;
};
disabledSounds?: Array<Sounds>;
disableRecordAudioNotification?: boolean;
disableJoinLeaveSounds?: boolean;
disableIncomingMessageSound?: boolean;
chromeExtensionBanner?: {
url?: string;
edgeUrl?: string;
chromeExtensionsInfo?: Array<{id: string; path: string}>;
};
e2ee?: {
labels?: {
tooltip?: string;
description?: string;
label?: string;
warning?: string;
};
externallyManagedKey?: boolean;
e2eeLabels?: {
tooltip?: string;
description?: string;
label?: string;
warning?: string;
};
};
e2eeLabels?: {
tooltip?: string;
description?: string;
label?: string;
warning?: string;
};
e2eping?: {
enabled?: boolean;
numRequests?: number;
maxConferenceSize?: number;
maxMessagesPerSecond?: number;
};
_desktopSharingSourceDevice?: string;
disableDeepLinking?: boolean;
disableLocalVideoFlip?: boolean;
doNotFlipLocalVideo?: boolean;
disableInviteFunctions?: boolean;
doNotStoreRoom?: boolean;
deploymentUrls?: {
userDocumentationURL?: string;
downloadAppsUrl?: string;
hideStorageWarning?: boolean;
sharingEnabled?: boolean;
};
remoteVideoMenu?: {
disabled?: boolean;
disableKick?: boolean;
disableGrantModerator?: boolean;
disableKick?: boolean;
disablePrivateChat?: boolean;
disabled?: boolean;
};
requireDisplayName?: boolean;
resolution?: number;
roomPasswordNumberOfDigits?: number;
salesforceUrl?: string;
disableRemoteMute?: boolean;
enableLipSync?: boolean;
dynamicBrandingUrl?: string;
participantsPane?: {
hideModeratorSettingsTab?: boolean;
hideMoreActionsButton?: boolean;
hideMuteAllButton?: boolean;
screenshotCapture?: {
enabled?: boolean;
mode?: 'always' | 'recording';
};
breakoutRooms?: {
hideAddRoomButton?: boolean;
hideAutoAssignButton?: boolean;
hideJoinRoomButton?: boolean;
};
disableAddingBackgroundImages?: boolean;
disableScreensharingVirtualBackground?: boolean;
backgroundAlpha?: number;
moderatedRoomServiceUrl?: string;
disableTileView?: boolean;
disableTileEnlargement?: boolean;
conferenceInfo?: {
alwaysVisible?: Array<string>;
autoHide?: Array<string>;
};
hideConferenceSubject?: boolean;
hideConferenceTimer?: boolean;
hideRecordingLabel?: boolean;
hideParticipantsStats?: boolean;
speakerStatsOrder?: Array<'role'|'name'|'hasLeft'>;
startAudioMuted?: boolean;
startAudioOnly?: boolean;
startLastN?: number;
startScreenSharing?: boolean;
startSilent?: boolean;
startVideoMuted?: number;
startWithAudioMuted?: boolean;
startWithVideoMuted?: boolean;
stereo?: boolean;
subject?: string;
localSubject?: string;
useHostPageLocalStorage?: boolean;
etherpad_base?: string;
dialInNumbersUrl?: string;
dialInConfCodeUrl?: string;
brandingRoomAlias?: string;
mouseMoveCallbackInterval?: number;
notifications?: Array<string>;
disabledNotifications?: Array<string>;
disableFilmstripAutohiding?: boolean;
filmstrip?: {
disableResizable?: boolean;
disableStageFilmstrip?: boolean;
disableTopPanel?: boolean;
minParticipantCountForTopPanel?: number;
testing?: {
callStatsThreshold?: number;
capScreenshareBitrate?: number;
disableE2EE?: boolean;
enableThumbnailReordering?: boolean;
mobileXmppWsThreshold?: number;
noAutoPlayVideo?: boolean;
p2pTestMode?: boolean;
setScreenSharingResolutionConstraints?: boolean;
testMode?: boolean;
};
tileView?: {
numberOfVisibleTiles?: number;
};
disableChatSmileys?: boolean;
giphy?: {
enabled?: boolean;
sdkKey?: '';
displayMode?: 'all' | 'tile' | 'chat';
tileTime?: number;
toolbarButtons?: Array<ToolbarButtons>;
toolbarConfig?: {
alwaysVisible?: boolean;
autoHideWhileChatIsOpen?: boolean;
initialTimeout?: number;
timeout?: number;
};
locationURL?: string;
transcribeWithAppLanguage?: boolean;
transcribingEnabled?: boolean;
transcription?: {
autoCaptionOnRecord?: boolean;
disableStartForAll?: boolean;
enabled?: boolean;
preferredLanguage?: string;
useAppLanguage?: boolean;
};
useHostPageLocalStorage?: boolean;
useNewBandwidthAllocationStrategy?: boolean;
useTurnUdp?: boolean;
videoQuality?: {
disabledCodec?: string;
enforcePreferredCodec?: boolean;
maxBitratesVideo?: {
[key: string]: {
high?: number;
low?: number;
standard?: number;
}
};
minHeightForQualityLvl: {
[key: number]: string;
};
preferredCodec?: string;
resizeDesktopForPresenter?: boolean;
};
webrtcIceTcpDisable?: boolean;
webrtcIceUdpDisable?: boolean;
websocket?: string;
}

View File

@ -20,13 +20,13 @@ import {
import { ConnectionFailedError } from './actions.native';
export interface IConnectionState {
connection?: Object;
connecting?: Object;
timeEstablished?: number;
connection?: Object;
error?: ConnectionFailedError;
passwordRequired?: Object;
locationURL?: URL;
passwordRequired?: Object;
showConnectionInfo?: boolean;
timeEstablished?: number;
}
/**

View File

@ -9,6 +9,41 @@ import { styleTypeToObject } from '../../styles';
type Props = {
/**
* The id of the element this button icon controls.
*/
ariaControls?: string,
/**
* Id of description label.
*/
ariaDescribedBy?: string,
/**
* Aria disabled flag for the Icon.
*/
ariaDisabled?: boolean,
/**
* Whether the element popup is expanded.
*/
ariaExpanded?: boolean,
/**
* Whether the element has a popup.
*/
ariaHasPopup?: boolean,
/**
* Aria label for the Icon.
*/
ariaLabel?: string,
/**
* Whether the element has a pressed.
*/
ariaPressed?: boolean,
/**
* Class name for the web platform, if any.
*/
@ -19,21 +54,36 @@ type Props = {
*/
color?: string,
/**
* Id prop (mainly for autotests).
*/
id?: string,
/**
* Id of the icon container.
*/
containerId?: string,
/**
* Id prop (mainly for autotests).
*/
id?: string,
/**
* Function to invoke on click.
*/
onClick?: Function,
/**
* Keydown handler.
*/
onKeyDown?: Function,
/**
* Keypress handler.
*/
onKeyPress?: Function,
/**
* Role for the Icon.
*/
role?: string,
/**
* The size of the icon (if not provided by the style object).
*/
@ -49,60 +99,10 @@ type Props = {
*/
style?: Object,
/**
* Aria disabled flag for the Icon.
*/
ariaDisabled?: boolean,
/**
* Aria label for the Icon.
*/
ariaLabel?: string,
/**
* Whether the element has a popup.
*/
ariaHasPopup?: boolean,
/**
* Whether the element has a pressed.
*/
ariaPressed?: boolean,
/**
* Id of description label.
*/
ariaDescribedBy?: string,
/**
* Whether the element popup is expanded.
*/
ariaExpanded?: boolean,
/**
* The id of the element this button icon controls.
*/
ariaControls?: string,
/**
* TabIndex for the Icon.
*/
tabIndex?: number,
/**
* Role for the Icon.
*/
role?: string,
/**
* Keypress handler.
*/
onKeyPress?: Function,
/**
* Keydown handler.
*/
onKeyDown?: Function
tabIndex?: number
}
export const DEFAULT_COLOR = navigator.product === 'ReactNative' ? 'white' : undefined;

View File

@ -11,10 +11,10 @@ import { SET_LAST_N } from './actionTypes';
import { validateLastNLimits } from './functions';
export interface ILastNState {
lastN?: number;
lastNLimits?: {
[key: number]: number;
};
lastN?: number;
}
ReducerRegistry.register('features/base/lastn', (state: ILastNState = { }, action) => {

View File

@ -8,10 +8,10 @@ export const OVERLAY_Z_INDEX = 1000;
* The types of the buttons.
*/
export enum BUTTON_TYPES {
DESTRUCTIVE = 'destructive',
PRIMARY = 'primary',
SECONDARY = 'secondary',
TERTIARY = 'tertiary',
DESTRUCTIVE = 'destructive'
TERTIARY = 'tertiary'
}
/**

View File

@ -1,13 +1,55 @@
interface TypographyType {
fontSize: number;
lineHeight: number;
fontWeight: string;
letterSpacing: number;
lineHeight: number;
}
export interface Theme {
breakpoints: {
down: (value: number) => string;
up: (value: number) => string;
},
palette: {
uiBackground: string;
action01: string;
action01Active: string;
action01Hover: string;
action02: string;
action02Active: string;
action02Hover: string;
action03: string;
action03Active: string;
action03Hover: string;
actionDanger: string;
actionDangerActive: string;
actionDangerHover: string;
disabled01: string;
field01: string;
focus01: string;
icon01: string;
icon02: string;
icon03: string;
icon04: string;
iconError: string;
link01: string;
link01Active: string;
link01Hover: string;
success01: string;
success02: string;
support01: string;
support02: string;
support03: string;
support04: string;
support05: string;
support06: string;
support07: string;
support08: string;
support09: string;
text01: string;
text02: string;
text03: string;
text04: string;
textError: string;
ui01: string;
ui02: string;
ui03: string;
@ -18,72 +60,30 @@ export interface Theme {
ui08: string;
ui09: string;
ui10: string;
action01: string;
action01Hover: string;
action01Active: string;
action02: string;
action02Hover: string;
action02Active: string;
actionDanger: string;
actionDangerHover: string;
actionDangerActive: string;
action03: string;
action03Hover: string;
action03Active: string;
disabled01: string;
focus01: string;
link01: string;
link01Hover: string;
link01Active: string;
text01: string;
text02: string;
text03: string;
text04: string;
textError: string;
icon01: string;
icon02: string;
icon03: string;
icon04: string;
iconError: string;
field01: string;
success01: string;
success02: string;
uiBackground: string;
warning01: string;
warning02: string;
support01: string;
support02: string;
support03: string;
support04: string;
support05: string;
support06: string;
support07: string;
support08: string;
support09: string;
};
shape: {
borderRadius: number;
};
spacing: (index: number) => number;
typography: {
labelRegular: TypographyType;
labelBold: TypographyType;
bodyShortRegular: TypographyType;
bodyShortBold: TypographyType;
bodyShortRegularLarge: TypographyType;
bodyShortBoldLarge: TypographyType;
bodyLongRegular: TypographyType;
bodyLongRegularLarge: TypographyType;
bodyLongBold: TypographyType;
bodyLongBoldLarge: TypographyType;
bodyLongRegular: TypographyType;
bodyLongRegularLarge: TypographyType;
bodyShortBold: TypographyType;
bodyShortBoldLarge: TypographyType;
bodyShortRegular: TypographyType;
bodyShortRegularLarge: TypographyType;
heading1: TypographyType;
heading2: TypographyType;
heading3: TypographyType;
heading4: TypographyType;
heading5: TypographyType;
heading6: TypographyType;
labelBold: TypographyType;
labelRegular: TypographyType;
};
breakpoints: {
down: (value: number) => string;
up: (value: number) => string;
}
}

View File

@ -20,19 +20,19 @@ type InitInput = {
}
type DetectOutput = {
faceExpression?: string,
faceBox?: FaceBox,
faceCount: number
faceCount: number,
faceExpression?: string
};
export interface FaceLandmarksHelper {
getFaceBox(detections: Array<FaceResult>, threshold: number): FaceBox | undefined;
getFaceExpression(detections: Array<FaceResult>): string | undefined;
getFaceCount(detections : Array<FaceResult>): number;
getDetections(image: ImageBitmap | ImageData): Promise<Array<FaceResult>>;
init(): Promise<void>;
detect({ image, threshold } : DetectInput): Promise<DetectOutput>;
getDetectionInProgress(): boolean;
getDetections(image: ImageBitmap | ImageData): Promise<Array<FaceResult>>;
getFaceBox(detections: Array<FaceResult>, threshold: number): FaceBox | undefined;
getFaceCount(detections : Array<FaceResult>): number;
getFaceExpression(detections: Array<FaceResult>): string | undefined;
init(): Promise<void>;
}
/**

View File

@ -32,9 +32,9 @@ type Props = {
* Room and participant jid reference.
*/
entity: {
room: any,
jid: string,
participantName: string
participantName: string,
room: any
},
/**

View File

@ -31,9 +31,9 @@ type Props = {
_rooms: Array<any>,
/**
* The room the participant is in.
* The Redux dispatch function.
*/
room: any,
dispatch: Function,
/**
* The jid of the selected participant.
@ -46,9 +46,9 @@ type Props = {
participantName: string,
/**
* The Redux dispatch function.
* The room the participant is in.
*/
dispatch: Function,
room: any,
/**
* Translation function.

View File

@ -11,25 +11,25 @@ import { REACTIONS } from '../../constants';
type Props = {
/**
* Index of the reaction in the queue.
*/
index: number,
/**
* Reaction to be displayed.
*/
reaction: string,
/**
* Id of the reaction.
*/
uid: string,
/**
* Removes reaction from redux state.
*/
reactionRemove: Function,
/**
* Index of the reaction in the queue.
* Id of the reaction.
*/
index: number
uid: string
};
type State = {

View File

@ -50,16 +50,16 @@ type Props = {
*/
handleClick: Function,
/**
* Whether or not the reactions menu is open.
*/
isOpen: boolean,
/**
* Whether or not it's a mobile browser.
*/
isMobile: boolean,
/**
* Whether or not the reactions menu is open.
*/
isOpen: boolean,
/**
* Notify mode for `toolbarButtonClicked` event -
* whether to only notify or to also prevent button click routine.

View File

@ -102,11 +102,11 @@ export const SOUNDS_THRESHOLDS = [ 1, 4, 10 ];
interface IReactions {
[key: string]: {
message: string;
emoji: string;
message: string;
shortcutChar: string;
soundId: string;
soundFiles: string[];
soundId: string;
}
}

View File

@ -12,16 +12,21 @@ import { ReactionEmojiProps } from './constants';
interface IReactionsState {
/**
* The indicator that determines whether the reactions menu is visible.
*/
visible: boolean,
/**
* An array that contains the reactions buffer to be sent.
*/
buffer: Array<string>,
/**
* Whether or not the disable reaction sounds notification was shown.
*/
notificationDisplayed: boolean,
/**
* The array of reactions to animate.
*/
queue: Array<ReactionEmojiProps>,
/**
* A number, non-zero value which identifies the timer created by a call
* to setTimeout().
@ -29,14 +34,9 @@ interface IReactionsState {
timeoutID: number|null,
/**
* The array of reactions to animate.
*/
queue: Array<ReactionEmojiProps>,
/**
* Whether or not the disable reaction sounds notification was shown.
* The indicator that determines whether the reactions menu is visible.
*/
notificationDisplayed: boolean
visible: boolean
}
export interface ReactionsAction extends Partial<IReactionsState> {

View File

@ -2,9 +2,9 @@ import { IStore } from '../../../app/types';
interface ILocalRecordingManager {
addAudioTrackToLocalRecording: (track: MediaStreamTrack) => void;
stopLocalRecording: () => void;
startLocalRecording: (store: IStore) => void;
isRecordingLocally: () => boolean;
startLocalRecording: (store: IStore) => void;
stopLocalRecording: () => void;
}
const LocalRecordingManager: ILocalRecordingManager = {

View File

@ -26,23 +26,23 @@ interface SelfRecording {
}
interface ILocalRecordingManager {
recordingData: Blob[];
recorder: MediaRecorder|undefined;
stream: MediaStream|undefined;
addAudioTrackToLocalRecording: (track: MediaStreamTrack) => void;
audioContext: AudioContext|undefined;
audioDestination: MediaStreamAudioDestinationNode|undefined;
roomName: string;
mediaType: string;
initializeAudioMixer: () => void;
mixAudioStream: (stream: MediaStream) => void;
addAudioTrackToLocalRecording: (track: MediaStreamTrack) => void;
getFilename: () => string;
saveRecording: (recordingData: Blob[], filename: string) => void;
stopLocalRecording: () => void;
startLocalRecording: (store: IStore, onlySelf: boolean) => void;
initializeAudioMixer: () => void;
isRecordingLocally: () => boolean;
totalSize: number;
mediaType: string;
mixAudioStream: (stream: MediaStream) => void;
recorder: MediaRecorder|undefined;
recordingData: Blob[];
roomName: string;
saveRecording: (recordingData: Blob[], filename: string) => void;
selfRecording: SelfRecording;
startLocalRecording: (store: IStore, onlySelf: boolean) => void;
stopLocalRecording: () => void;
stream: MediaStream|undefined;
totalSize: number;
}
const getMimeType = (): string => {