diff --git a/globals.d.ts b/globals.d.ts index 3de71264aa..24bc2fcbe1 100644 --- a/globals.d.ts +++ b/globals.d.ts @@ -16,6 +16,7 @@ declare global { config: IConfig; JITSI_MEET_LITE_SDK?: boolean; interfaceConfig?: any; + JitsiMeetJS?: any; } const config: IConfig; diff --git a/react/features/analytics/middleware.ts b/react/features/analytics/middleware.ts index 659fb50274..76c16dc8a5 100644 --- a/react/features/analytics/middleware.ts +++ b/react/features/analytics/middleware.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { IState } from '../app/types'; import { CONFERENCE_JOINED, diff --git a/react/features/authentication/components/web/LoginDialog.tsx b/react/features/authentication/components/web/LoginDialog.tsx index 940fbc626a..7178d8bdf5 100644 --- a/react/features/authentication/components/web/LoginDialog.tsx +++ b/react/features/authentication/components/web/LoginDialog.tsx @@ -1,11 +1,10 @@ /* eslint-disable lines-around-comment */ import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; // @ts-ignore import { connect } from '../../../../../connection'; -import { IState } from '../../../app/types'; +import { IState, IStore } from '../../../app/types'; import { IConfig } from '../../../base/config/configType'; import { toJid } from '../../../base/connection/functions'; // @ts-ignore @@ -55,7 +54,7 @@ interface Props extends WithTranslation { /** * Redux store dispatch method. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * Invoked when username and password are submitted. diff --git a/react/features/av-moderation/middleware.ts b/react/features/av-moderation/middleware.ts index 8928e659ac..81251f7b3f 100644 --- a/react/features/av-moderation/middleware.ts +++ b/react/features/av-moderation/middleware.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { batch } from 'react-redux'; import { APP_WILL_MOUNT, APP_WILL_UNMOUNT } from '../base/app/actionTypes'; @@ -19,6 +18,7 @@ import StateListenerRegistry from '../base/redux/StateListenerRegistry'; import { playSound, registerSound, unregisterSound } from '../base/sounds/actions'; import { hideNotification, showNotification } from '../notifications/actions'; import { NOTIFICATION_TIMEOUT_TYPE } from '../notifications/constants'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { muteLocal } from '../video-menu/actions.any'; diff --git a/react/features/base/audio-only/actions.ts b/react/features/base/audio-only/actions.ts index 0ddfcdc0a9..39db9dcb7c 100644 --- a/react/features/base/audio-only/actions.ts +++ b/react/features/base/audio-only/actions.ts @@ -1,10 +1,8 @@ -/* eslint-disable lines-around-comment */ -import type { Dispatch } from 'redux'; - // @ts-ignore import UIEvents from '../../../../service/UI/UIEvents'; import { createAudioOnlyChangedEvent } from '../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../analytics/functions'; +import { IStore } from '../../app/types'; import { SET_AUDIO_ONLY } from './actionTypes'; import logger from './logger'; @@ -22,7 +20,7 @@ declare let APP: any; * }} */ export function setAudioOnly(audioOnly: boolean) { - return (dispatch: Dispatch, getState: Function) => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']) => { const { enabled: oldValue } = getState()['features/base/audio-only']; if (oldValue !== audioOnly) { @@ -49,7 +47,7 @@ export function setAudioOnly(audioOnly: boolean) { * @returns {Function} */ export function toggleAudioOnly() { - return (dispatch: Dispatch, getState: Function) => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']) => { const { enabled } = getState()['features/base/audio-only']; return dispatch(setAudioOnly(!enabled)); diff --git a/react/features/base/conference/reducer.ts b/react/features/base/conference/reducer.ts index 81d1788416..32d65d9884 100644 --- a/react/features/base/conference/reducer.ts +++ b/react/features/base/conference/reducer.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { LOCKED_LOCALLY, LOCKED_REMOTELY } from '../../room-lock/constants'; import { CONNECTION_WILL_CONNECT, SET_LOCATION_URL } from '../connection/actionTypes'; import { JitsiConferenceErrors } from '../lib-jitsi-meet'; diff --git a/react/features/base/config/actions.ts b/react/features/base/config/actions.ts index bae89883fb..ea3e3671ba 100644 --- a/react/features/base/config/actions.ts +++ b/react/features/base/config/actions.ts @@ -1,7 +1,7 @@ // @ts-ignore import { jitsiLocalStorage } from '@jitsi/js-utils'; -import { Dispatch } from 'redux'; +import { IStore } from '../../app/types'; import { addKnownDomains } from '../known-domains/actions'; import { parseURIString } from '../util/uri'; @@ -99,7 +99,7 @@ export function overwriteConfig(config: Object) { * @returns {Function} */ export function setConfig(config: Object = {}) { - return (dispatch: Dispatch, getState: Function) => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']) => { const { locationURL } = getState()['features/base/connection']; // Now that the loading of the config was successful override the values @@ -135,7 +135,7 @@ export function setConfig(config: Object = {}) { * @returns {Function} */ export function storeConfig(baseURL: string, config: Object) { - return (dispatch: Dispatch) => { + return (dispatch: IStore['dispatch']) => { // Try to store the configuration in localStorage. If the deployment // specified 'getroom' as a function, for example, it does not make // sense to and it will not be stored. diff --git a/react/features/base/connection/actions.native.ts b/react/features/base/connection/actions.native.ts index 9a76a171c1..0011b3d0f3 100644 --- a/react/features/base/connection/actions.native.ts +++ b/react/features/base/connection/actions.native.ts @@ -1,6 +1,5 @@ -/* eslint-disable lines-around-comment */ -import { Dispatch } from 'redux'; - +import { IStore } from '../../app/types'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { conferenceLeft, conferenceWillLeave } from '../conference/actions'; import { getCurrentConference } from '../conference/functions'; @@ -74,7 +73,7 @@ export type ConnectionFailedError = { * @returns {Function} */ export function connect(id?: string, password?: string) { - return (dispatch: Dispatch, getState: Function) => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']) => { const state = getState(); const options = constructOptions(state); const { locationURL } = state['features/base/connection']; @@ -266,7 +265,7 @@ function _connectionWillConnect(connection: Object) { * @returns {Function} */ export function disconnect() { - return (dispatch: Dispatch, getState: Function): Promise => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']): Promise => { const state = getState(); // The conference we have already joined or are joining. diff --git a/react/features/base/connection/reducer.ts b/react/features/base/connection/reducer.ts index 88fdd18d2d..dbf3437ed6 100644 --- a/react/features/base/connection/reducer.ts +++ b/react/features/base/connection/reducer.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { SET_ROOM } from '../conference/actionTypes'; import { JitsiConnectionErrors } from '../lib-jitsi-meet'; import ReducerRegistry from '../redux/ReducerRegistry'; @@ -15,8 +14,9 @@ import { import { ConnectionFailedError } from './actions.native'; export interface IConnectionState { - connecting?: Object; + connecting?: any; connection?: { + disconnect: Function; getJid: () => string; getLogs: () => Object; }; diff --git a/react/features/base/devices/middleware.ts b/react/features/base/devices/middleware.ts index e6e6732699..3e2bf34a7f 100644 --- a/react/features/base/devices/middleware.ts +++ b/react/features/base/devices/middleware.ts @@ -1,15 +1,14 @@ import { AnyAction } from 'redux'; -/* eslint-disable lines-around-comment */ // @ts-ignore import UIEvents from '../../../../service/UI/UIEvents'; import { IStore } from '../../app/types'; import { processExternalDeviceRequest } from '../../device-selection/functions'; import { showNotification, showWarningNotification } from '../../notifications/actions'; import { NOTIFICATION_TIMEOUT_TYPE } from '../../notifications/constants'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { replaceAudioTrackById, replaceVideoTrackById, setDeviceStatusWarning } from '../../prejoin/actions'; -// @ts-ignore import { isPrejoinPageVisible } from '../../prejoin/functions'; import { APP_WILL_MOUNT, APP_WILL_UNMOUNT } from '../app/actionTypes'; import JitsiMeetJS, { JitsiMediaDevicesEvents, JitsiTrackErrors } from '../lib-jitsi-meet'; diff --git a/react/features/base/flags/functions.ts b/react/features/base/flags/functions.ts index c5e16fb1b1..7282f73e75 100644 --- a/react/features/base/flags/functions.ts +++ b/react/features/base/flags/functions.ts @@ -1,5 +1,4 @@ -// @ts-ignore -import { getAppProp } from '../app'; +import { getAppProp } from '../app/functions'; import { IStateful } from '../app/types'; import { toState } from '../redux/functions'; diff --git a/react/features/base/lastn/reducer.ts b/react/features/base/lastn/reducer.ts index d290f29a14..b1471fd342 100644 --- a/react/features/base/lastn/reducer.ts +++ b/react/features/base/lastn/reducer.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { SET_CONFIG } from '../config/actionTypes'; diff --git a/react/features/base/lib-jitsi-meet/actions.ts b/react/features/base/lib-jitsi-meet/actions.ts index 32265215e1..ef35011b17 100644 --- a/react/features/base/lib-jitsi-meet/actions.ts +++ b/react/features/base/lib-jitsi-meet/actions.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ // @ts-ignore import { jitsiLocalStorage } from '@jitsi/js-utils'; diff --git a/react/features/base/logging/middleware.ts b/react/features/base/logging/middleware.ts index 21d283026f..80bb4f6edc 100644 --- a/react/features/base/logging/middleware.ts +++ b/react/features/base/logging/middleware.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ // @ts-ignore import Logger from '@jitsi/logger'; diff --git a/react/features/base/media/actions.ts b/react/features/base/media/actions.ts index 18a08f640a..7c5397b33d 100644 --- a/react/features/base/media/actions.ts +++ b/react/features/base/media/actions.ts @@ -1,5 +1,4 @@ -import { Dispatch } from 'redux'; - +import { IStore } from '../../app/types'; import { showModeratedNotification } from '../../av-moderation/actions'; import { shouldShowModeratedNotification } from '../../av-moderation/functions'; import { isModerationNotificationDisplayed } from '../../notifications/functions'; @@ -106,7 +105,7 @@ export function setScreenshareMuted( mediaType: MediaType = MEDIA_TYPE.SCREENSHARE, authority: number = SCREENSHARE_MUTISM_AUTHORITY.USER, ensureTrack = false) { - return (dispatch: Dispatch, getState: Function) => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']) => { const state = getState(); // check for A/V Moderation when trying to unmute @@ -167,7 +166,7 @@ export function setVideoMuted( mediaType: string = MEDIA_TYPE.VIDEO, authority: number = VIDEO_MUTISM_AUTHORITY.USER, ensureTrack = false) { - return (dispatch: Dispatch, getState: Function) => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']) => { const state = getState(); // check for A/V Moderation when trying to unmute diff --git a/react/features/base/media/middleware.web.ts b/react/features/base/media/middleware.web.ts index 2608cec916..6fa532fd80 100644 --- a/react/features/base/media/middleware.web.ts +++ b/react/features/base/media/middleware.web.ts @@ -1,14 +1,13 @@ -/* eslint-disable lines-around-comment */ import './middleware.any.js'; import { IStore } from '../../app/types'; import { showNotification } from '../../notifications/actions'; import { NOTIFICATION_TIMEOUT_TYPE } from '../../notifications/constants'; import LocalRecordingManager from '../../recording/components/Recording/LocalRecordingManager.web'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import StopRecordingDialog from '../../recording/components/Recording/web/StopRecordingDialog'; -// @ts-ignore -import { openDialog } from '../dialog'; +import { openDialog } from '../dialog/actions'; import MiddlewareRegistry from '../redux/MiddlewareRegistry'; import { SET_VIDEO_MUTED } from './actionTypes'; diff --git a/react/features/base/participants/reducer.ts b/react/features/base/participants/reducer.ts index 2edc240fe4..98c0be1cb1 100644 --- a/react/features/base/participants/reducer.ts +++ b/react/features/base/participants/reducer.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { SCREEN_SHARE_REMOTE_PARTICIPANTS_UPDATED } from '../../video-layout/actionTypes'; @@ -311,6 +310,7 @@ ReducerRegistry.register('features/base/participants', state.sortedRemoteVirtualScreenshareParticipants = new Map(sortedRemoteVirtualScreenshareParticipants); } + // Exclude the screenshare participant from the fake participant count to avoid duplicates. if (fakeParticipant && !isScreenShareParticipant(participant)) { state.fakeParticipants.set(id, participant); @@ -402,6 +402,7 @@ ReducerRegistry.register('features/base/participants', // Keep the remote screen share list sorted alphabetically. sortedSharesList.length && sortedSharesList.sort((a, b) => a[1].localeCompare(b[1])); + // @ts-ignore state.sortedRemoteScreenshares = new Map(sortedSharesList); diff --git a/react/features/base/premeeting/components/web/ConnectionStatus.tsx b/react/features/base/premeeting/components/web/ConnectionStatus.tsx index ac6d9f8276..218232e8a6 100644 --- a/react/features/base/premeeting/components/web/ConnectionStatus.tsx +++ b/react/features/base/premeeting/components/web/ConnectionStatus.tsx @@ -1,5 +1,3 @@ -/* eslint-disable lines-around-comment */ - import { Theme } from '@mui/material'; import React, { useCallback, useState } from 'react'; import { WithTranslation } from 'react-i18next'; diff --git a/react/features/base/react/components/native/IconButton.tsx b/react/features/base/react/components/native/IconButton.tsx index 660b4443ad..9b240c994e 100644 --- a/react/features/base/react/components/native/IconButton.tsx +++ b/react/features/base/react/components/native/IconButton.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import React from 'react'; import { TouchableRipple } from 'react-native-paper'; @@ -50,6 +49,7 @@ const IconButton: React.FC = ({ = ({ contentStyle ] } disabled = { disabled } + // @ts-ignore icon = { icon } labelStyle = { [ diff --git a/react/features/base/ui/components/web/ContextMenu.tsx b/react/features/base/ui/components/web/ContextMenu.tsx index d8fcf92a48..d2abda9a5c 100644 --- a/react/features/base/ui/components/web/ContextMenu.tsx +++ b/react/features/base/ui/components/web/ContextMenu.tsx @@ -1,14 +1,12 @@ -/* eslint-disable lines-around-comment */ - import { Theme } from '@mui/material'; import React, { ReactNode, useEffect, useLayoutEffect, useRef, useState } from 'react'; import { useSelector } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; import { getComputedOuterHeight } from '../../../../participants-pane/functions'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { Drawer, JitsiPortal } from '../../../../toolbox/components/web'; -// @ts-ignore import { showOverflowDrawer } from '../../../../toolbox/functions.web'; import participantsPaneTheme from '../../../components/themes/participantsPaneTheme.json'; import { withPixelLineHeight } from '../../../styles/functions.web'; diff --git a/react/features/base/ui/components/web/ContextMenuItem.tsx b/react/features/base/ui/components/web/ContextMenuItem.tsx index 1fef837612..7a88538f8c 100644 --- a/react/features/base/ui/components/web/ContextMenuItem.tsx +++ b/react/features/base/ui/components/web/ContextMenuItem.tsx @@ -3,7 +3,6 @@ import React, { ReactNode } from 'react'; import { useSelector } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; -// @ts-ignore import { showOverflowDrawer } from '../../../../toolbox/functions.web'; import Icon from '../../../icons/components/Icon'; import { withPixelLineHeight } from '../../../styles/functions.web'; diff --git a/react/features/base/util/helpers.ts b/react/features/base/util/helpers.ts index ba693efa4c..5daf57e41e 100644 --- a/react/features/base/util/helpers.ts +++ b/react/features/base/util/helpers.ts @@ -84,19 +84,14 @@ export function getBaseUrl(w: Window = window) { * NOTE: After React-ifying everything this should be the only global. */ export function getJitsiMeetGlobalNS() { - // @ts-ignore if (!window.JitsiMeetJS) { - // @ts-ignore window.JitsiMeetJS = {}; } - // @ts-ignore if (!window.JitsiMeetJS.app) { - // @ts-ignore window.JitsiMeetJS.app = {}; } - // @ts-ignore return window.JitsiMeetJS.app; } diff --git a/react/features/base/util/openURLInBrowser.native.ts b/react/features/base/util/openURLInBrowser.native.ts index 775322078a..c8a740f09b 100644 --- a/react/features/base/util/openURLInBrowser.native.ts +++ b/react/features/base/util/openURLInBrowser.native.ts @@ -1,6 +1,5 @@ import { Linking } from 'react-native'; -// @ts-ignore import logger from './logger'; /** diff --git a/react/features/breakout-rooms/actions.ts b/react/features/breakout-rooms/actions.ts index 7a9a68ffa5..cf4fc8eb7e 100644 --- a/react/features/breakout-rooms/actions.ts +++ b/react/features/breakout-rooms/actions.ts @@ -8,16 +8,12 @@ import { IStore } from '../app/types'; import { conferenceLeft, conferenceWillLeave, - createConference, - getCurrentConference + createConference // @ts-ignore -} from '../base/conference'; +} from '../base/conference/actions'; import { CONFERENCE_LEAVE_REASONS } from '../base/conference/constants'; -import { - setAudioMuted, - setVideoMuted - // @ts-ignore -} from '../base/media'; +import { getCurrentConference } from '../base/conference/functions'; +import { setAudioMuted, setVideoMuted } from '../base/media/actions'; import { MEDIA_TYPE } from '../base/media/constants'; import { getRemoteParticipants } from '../base/participants/functions'; import { @@ -230,7 +226,7 @@ export function moveToRoom(roomId?: string) { // dispatch(setRoom(_roomId)); dispatch(createConference(_roomId)); dispatch(setAudioMuted(audio.muted)); - dispatch(setVideoMuted(video.muted)); + dispatch(setVideoMuted(Boolean(video.muted))); dispatch(createDesiredLocalTracks()); } else { const localTracks = getLocalTracks(getState()['features/base/tracks']); diff --git a/react/features/breakout-rooms/functions.ts b/react/features/breakout-rooms/functions.ts index 20e6c4288e..6e28b96509 100644 --- a/react/features/breakout-rooms/functions.ts +++ b/react/features/breakout-rooms/functions.ts @@ -1,9 +1,7 @@ import _ from 'lodash'; import { IStateful } from '../base/app/types'; -// eslint-disable-next-line lines-around-comment -// @ts-ignore -import { getCurrentConference } from '../base/conference'; +import { getCurrentConference } from '../base/conference/functions'; import { getParticipantById, getParticipantCount, isLocalParticipantModerator } from '../base/participants/functions'; import { toState } from '../base/redux/functions'; diff --git a/react/features/breakout-rooms/middleware.ts b/react/features/breakout-rooms/middleware.ts index ffe12a3cca..fd40997961 100644 --- a/react/features/breakout-rooms/middleware.ts +++ b/react/features/breakout-rooms/middleware.ts @@ -2,9 +2,7 @@ import { JitsiConferenceEvents } from '../base/lib-jitsi-meet'; import { getParticipantById } from '../base/participants/functions'; import MiddlewareRegistry from '../base/redux/MiddlewareRegistry'; import StateListenerRegistry from '../base/redux/StateListenerRegistry'; -// eslint-disable-next-line lines-around-comment -// @ts-ignore -import { editMessage } from '../chat'; +import { editMessage } from '../chat/actions.any'; import { MESSAGE_TYPE_REMOTE } from '../chat/constants'; import { UPDATE_BREAKOUT_ROOMS } from './actionTypes'; diff --git a/react/features/chat/components/web/ChatInput.tsx b/react/features/chat/components/web/ChatInput.tsx index abf13412cd..7b2f72e7b6 100644 --- a/react/features/chat/components/web/ChatInput.tsx +++ b/react/features/chat/components/web/ChatInput.tsx @@ -1,16 +1,13 @@ -/* eslint-disable lines-around-comment */ import React, { Component, RefObject } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; -import { IState } from '../../../app/types'; +import { IState, IStore } from '../../../app/types'; import { isMobileBrowser } from '../../../base/environment/utils'; import { translate } from '../../../base/i18n/functions'; import { IconPlane, IconSmile } from '../../../base/icons/svg'; import { connect } from '../../../base/redux/functions'; import Button from '../../../base/ui/components/web/Button'; import Input from '../../../base/ui/components/web/Input'; -// @ts-ignore import { areSmileysDisabled } from '../../functions'; // @ts-ignore @@ -29,7 +26,7 @@ interface Props extends WithTranslation { /** * Invoked to send chat messages. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * Callback to invoke on message send. diff --git a/react/features/chat/components/web/DisplayNameForm.tsx b/react/features/chat/components/web/DisplayNameForm.tsx index bb6d5cad56..df550524df 100644 --- a/react/features/chat/components/web/DisplayNameForm.tsx +++ b/react/features/chat/components/web/DisplayNameForm.tsx @@ -1,12 +1,10 @@ import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; +import { IStore } from '../../../app/types'; import { translate } from '../../../base/i18n/functions'; import { connect } from '../../../base/redux/functions'; -// eslint-disable-next-line lines-around-comment -// @ts-ignore -import { updateSettings } from '../../../base/settings'; +import { updateSettings } from '../../../base/settings/actions'; import { Button } from '../../../base/ui/components/web'; import Input from '../../../base/ui/components/web/Input'; @@ -21,7 +19,7 @@ interface Props extends WithTranslation { /** * Invoked to set the local participant display name. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * Whether the polls feature is enabled or not. diff --git a/react/features/chat/components/web/MessageContainer.tsx b/react/features/chat/components/web/MessageContainer.tsx index 0261b1d1f7..f24dd19985 100644 --- a/react/features/chat/components/web/MessageContainer.tsx +++ b/react/features/chat/components/web/MessageContainer.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import throttle from 'lodash/throttle'; import React, { RefObject } from 'react'; import { scrollIntoView } from 'seamless-scroll-polyfill'; @@ -11,14 +10,17 @@ import ChatMessageGroup from './ChatMessageGroup'; import NewMessagesButton from './NewMessagesButton'; interface State { + /** * Whether or not message container has received new messages. */ hasNewMessages: boolean; + /** * Whether or not scroll position is at the bottom of container. */ isScrolledToBottom: boolean; + /** * The id of the last read message. */ @@ -275,6 +277,7 @@ export default class MessageContainer extends AbstractMessageContainer { const audioMuted = useSelector((state: IState) => isLocalTrackMuted(state['features/base/tracks'], MEDIA_TYPE.AUDIO)); const disabled = useSelector(isAudioMuteButtonDisabled); - const enabledFlag = useSelector(state => getFeatureFlag(state, AUDIO_MUTE_BUTTON_ENABLED, true)); + const enabledFlag = useSelector((state: IState) => getFeatureFlag(state, AUDIO_MUTE_BUTTON_ENABLED, true)); const [ longPress, setLongPress ] = useState(false); if (!enabledFlag) { diff --git a/react/features/conference/components/native/carmode/SoundDeviceButton.tsx b/react/features/conference/components/native/carmode/SoundDeviceButton.tsx index 9f74529f0c..38b6a5a7af 100644 --- a/react/features/conference/components/native/carmode/SoundDeviceButton.tsx +++ b/react/features/conference/components/native/carmode/SoundDeviceButton.tsx @@ -2,7 +2,6 @@ import React, { useCallback } from 'react'; import { useDispatch } from 'react-redux'; -// @ts-ignore import { openSheet } from '../../../../base/dialog/actions'; import Button from '../../../../base/ui/components/native/Button'; import { BUTTON_TYPES } from '../../../../base/ui/constants'; diff --git a/react/features/conference/components/native/carmode/TitleBar.tsx b/react/features/conference/components/native/carmode/TitleBar.tsx index ed38072adc..2db7409b5b 100644 --- a/react/features/conference/components/native/carmode/TitleBar.tsx +++ b/react/features/conference/components/native/carmode/TitleBar.tsx @@ -4,11 +4,9 @@ import { StyleProp, Text, View, ViewStyle } from 'react-native'; import { useSelector } from 'react-redux'; import { IState } from '../../../../app/types'; -// @ts-ignore import { getConferenceName } from '../../../../base/conference/functions'; -// @ts-ignore -import { MEETING_NAME_ENABLED, getFeatureFlag } from '../../../../base/flags'; -// @ts-ignore +import { MEETING_NAME_ENABLED } from '../../../../base/flags/constants'; +import { getFeatureFlag } from '../../../../base/flags/functions'; import { JitsiRecordingConstants } from '../../../../base/lib-jitsi-meet'; import { getLocalParticipant } from '../../../../base/participants/functions'; import { connect } from '../../../../base/redux/functions'; diff --git a/react/features/conference/components/web/ToggleTopPanelLabel.tsx b/react/features/conference/components/web/ToggleTopPanelLabel.tsx index 770a6d2f39..66c21ae1c7 100644 --- a/react/features/conference/components/web/ToggleTopPanelLabel.tsx +++ b/react/features/conference/components/web/ToggleTopPanelLabel.tsx @@ -5,8 +5,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { IState } from '../../../app/types'; import { IconMenuDown } from '../../../base/icons/svg/index'; -// @ts-ignore -import { Label } from '../../../base/label'; +import Label from '../../../base/label/components/web/Label'; // @ts-ignore import { Tooltip } from '../../../base/tooltip'; // @ts-ignore diff --git a/react/features/connection-indicator/components/web/ConnectionIndicator.tsx b/react/features/connection-indicator/components/web/ConnectionIndicator.tsx index 8a5d9a1995..db318eb755 100644 --- a/react/features/connection-indicator/components/web/ConnectionIndicator.tsx +++ b/react/features/connection-indicator/components/web/ConnectionIndicator.tsx @@ -6,11 +6,9 @@ import clsx from 'clsx'; import React from 'react'; import { WithTranslation } from 'react-i18next'; import { connect } from 'react-redux'; -import type { Dispatch } from 'redux'; -import { IState } from '../../../app/types'; -// @ts-ignore -import { getSourceNameSignalingFeatureFlag } from '../../../base/config'; +import { IState, IStore } from '../../../app/types'; +import { getSourceNameSignalingFeatureFlag } from '../../../base/config/functions.any'; import { translate } from '../../../base/i18n/functions'; import { MEDIA_TYPE } from '../../../base/media/constants'; import { @@ -24,8 +22,7 @@ import { getSourceNameByParticipantId, getTrackByMediaTypeAndParticipant, getVirtualScreenshareParticipantTrack - // @ts-ignore -} from '../../../base/tracks'; +} from '../../../base/tracks/functions'; import { isParticipantConnectionStatusInactive, isParticipantConnectionStatusInterrupted, @@ -131,7 +128,7 @@ type Props = AbstractProps & WithTranslation & { /** * The Redux dispatch function. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * Whether or not clicking the indicator should display a popover for more diff --git a/react/features/connection-indicator/functions.ts b/react/features/connection-indicator/functions.ts index 3791efcd60..44deec3af6 100644 --- a/react/features/connection-indicator/functions.ts +++ b/react/features/connection-indicator/functions.ts @@ -20,7 +20,7 @@ export function isTrackStreamingStatusActive(videoTrack: ITrack) { * @param {Object} videoTrack - Track reference. * @returns {boolean} - Is streaming status inactive. */ -export function isTrackStreamingStatusInactive(videoTrack: ITrack) { +export function isTrackStreamingStatusInactive(videoTrack?: ITrack) { const streamingStatus = videoTrack?.streamingStatus; return streamingStatus === JitsiTrackStreamingStatus.INACTIVE; @@ -32,7 +32,7 @@ export function isTrackStreamingStatusInactive(videoTrack: ITrack) { * @param {Object} videoTrack - Track reference. * @returns {boolean} - Is streaming status interrupted. */ -export function isTrackStreamingStatusInterrupted(videoTrack: ITrack) { +export function isTrackStreamingStatusInterrupted(videoTrack?: ITrack) { const streamingStatus = videoTrack?.streamingStatus; return streamingStatus === JitsiTrackStreamingStatus.INTERRUPTED; diff --git a/react/features/display-name/components/AbstractDisplayNamePrompt.tsx b/react/features/display-name/components/AbstractDisplayNamePrompt.tsx index e3bcbff876..41f327dd60 100644 --- a/react/features/display-name/components/AbstractDisplayNamePrompt.tsx +++ b/react/features/display-name/components/AbstractDisplayNamePrompt.tsx @@ -1,9 +1,8 @@ import { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; -// @ts-ignore -import { updateSettings } from '../../base/settings'; +import { IStore } from '../../app/types'; +import { updateSettings } from '../../base/settings/actions'; /** * The type of the React {@code Component} props of @@ -14,7 +13,7 @@ export interface Props extends WithTranslation { /** * Invoked to update the local participant's display name. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * Function to be invoked after a successful display name change. diff --git a/react/features/display-name/components/web/DisplayName.tsx b/react/features/display-name/components/web/DisplayName.tsx index a5844e8f17..d006080e1a 100644 --- a/react/features/display-name/components/web/DisplayName.tsx +++ b/react/features/display-name/components/web/DisplayName.tsx @@ -4,16 +4,14 @@ import { withStyles } from '@mui/styles'; import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; import { connect } from 'react-redux'; -import type { Dispatch } from 'redux'; -import { IState } from '../../../app/types'; +import { IState, IStore } from '../../../app/types'; import { translate } from '../../../base/i18n/functions'; import { getParticipantById, getParticipantDisplayName } from '../../../base/participants/functions'; -// @ts-ignore -import { updateSettings } from '../../../base/settings'; +import { updateSettings } from '../../../base/settings/actions'; import { withPixelLineHeight } from '../../../base/styles/functions.web'; // @ts-ignore import { Tooltip } from '../../../base/tooltip'; @@ -50,7 +48,7 @@ interface Props extends WithTranslation { /** * Invoked to update the participant's display name. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * A string to append to the displayName, if provided. diff --git a/react/features/display-name/components/web/StageParticipantNameLabel.tsx b/react/features/display-name/components/web/StageParticipantNameLabel.tsx index e88e8a4cc1..29ca6f9e91 100644 --- a/react/features/display-name/components/web/StageParticipantNameLabel.tsx +++ b/react/features/display-name/components/web/StageParticipantNameLabel.tsx @@ -6,7 +6,6 @@ import { useSelector } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; import { IState } from '../../../app/types'; -// @ts-ignore import { isDisplayNameVisible } from '../../../base/config/functions.any'; import { getLocalParticipant, @@ -17,7 +16,6 @@ import { Participant } from '../../../base/participants/types'; import { withPixelLineHeight } from '../../../base/styles/functions.web'; // @ts-ignore import { getLargeVideoParticipant } from '../../../large-video/functions'; -// @ts-ignore import { isToolboxVisible } from '../../../toolbox/functions.web'; // @ts-ignore import { isLayoutTileView } from '../../../video-layout'; diff --git a/react/features/e2ee/components/E2EESection.tsx b/react/features/e2ee/components/E2EESection.tsx index c0af3abfff..c34dfa255c 100644 --- a/react/features/e2ee/components/E2EESection.tsx +++ b/react/features/e2ee/components/E2EESection.tsx @@ -1,18 +1,14 @@ -/* eslint-disable lines-around-comment */ import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; import { createE2EEEvent } from '../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../analytics/functions'; -import { IState } from '../../app/types'; +import { IState, IStore } from '../../app/types'; import { translate } from '../../base/i18n/functions'; import { connect } from '../../base/redux/functions'; import Switch from '../../base/ui/components/web/Switch'; -// @ts-ignore import { toggleE2EE } from '../actions'; import { MAX_MODE } from '../constants'; -// @ts-ignore import { doesEveryoneSupportE2EE } from '../functions'; interface Props extends WithTranslation { @@ -45,7 +41,7 @@ interface Props extends WithTranslation { /** * The redux {@code dispatch} function. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; } type State = { diff --git a/react/features/face-landmarks/FaceLandmarksDetector.ts b/react/features/face-landmarks/FaceLandmarksDetector.ts index 7e53544b1e..1a44e12667 100644 --- a/react/features/face-landmarks/FaceLandmarksDetector.ts +++ b/react/features/face-landmarks/FaceLandmarksDetector.ts @@ -1,8 +1,6 @@ -/* eslint-disable lines-around-comment */ import 'image-capture'; import './createImageBitmap'; import { IStore } from '../app/types'; -// @ts-ignore import { getLocalVideoTrack } from '../base/tracks/functions'; import { getBaseUrl } from '../base/util/helpers'; @@ -98,6 +96,7 @@ class FaceLandmarksDetector { const baseUrl = `${getBaseUrl()}libs/`; let workerUrl = `${baseUrl}face-landmarks-worker.min.js`; + // @ts-ignore const workerBlob = new Blob([ `importScripts("${workerUrl}");` ], { type: 'application/javascript' }); diff --git a/react/features/face-landmarks/functions.ts b/react/features/face-landmarks/functions.ts index 456ce60b33..30132d13f9 100644 --- a/react/features/face-landmarks/functions.ts +++ b/react/features/face-landmarks/functions.ts @@ -1,7 +1,5 @@ -/* eslint-disable lines-around-comment */ import { IState } from '../app/types'; import { getLocalParticipant } from '../base/participants/functions'; -// @ts-ignore import { extractFqnFromPath } from '../dynamic-branding/functions.any'; import { DETECT_FACE, FACE_BOX_EVENT_TYPE, SEND_IMAGE_INTERVAL_MS } from './constants'; diff --git a/react/features/face-landmarks/middleware.ts b/react/features/face-landmarks/middleware.ts index ed921db159..7fdcc6c5dd 100644 --- a/react/features/face-landmarks/middleware.ts +++ b/react/features/face-landmarks/middleware.ts @@ -1,10 +1,8 @@ -/* eslint-disable lines-around-comment */ import { IStore } from '../app/types'; import { CONFERENCE_JOINED, CONFERENCE_WILL_LEAVE } from '../base/conference/actionTypes'; -// @ts-ignore import { getCurrentConference } from '../base/conference/functions'; import { JitsiConferenceEvents } from '../base/lib-jitsi-meet'; import { getLocalParticipant, getParticipantCount } from '../base/participants/functions'; diff --git a/react/features/filmstrip/components/web/Filmstrip.tsx b/react/features/filmstrip/components/web/Filmstrip.tsx index d25c4526fd..cbfd81b934 100644 --- a/react/features/filmstrip/components/web/Filmstrip.tsx +++ b/react/features/filmstrip/components/web/Filmstrip.tsx @@ -5,24 +5,20 @@ import _ from 'lodash'; import React, { PureComponent } from 'react'; import { WithTranslation } from 'react-i18next'; import { FixedSizeGrid, FixedSizeList } from 'react-window'; -import type { Dispatch } from 'redux'; import { ACTION_SHORTCUT_TRIGGERED, createShortcutEvent, createToolbarEvent } from '../../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../../analytics/functions'; -import { IState } from '../../../app/types'; -// @ts-ignore -import { getSourceNameSignalingFeatureFlag, getToolbarButtons } from '../../../base/config'; +import { IState, IStore } from '../../../app/types'; +import { getSourceNameSignalingFeatureFlag, getToolbarButtons } from '../../../base/config/functions.web'; import { isMobileBrowser } from '../../../base/environment/utils'; import { translate } from '../../../base/i18n/functions'; import Icon from '../../../base/icons/components/Icon'; import { IconMenuDown, IconMenuUp } from '../../../base/icons/svg'; import { Participant } from '../../../base/participants/types'; import { connect } from '../../../base/redux/functions'; -// @ts-ignore import { shouldHideSelfView } from '../../../base/settings/functions.any'; // @ts-ignore import { showToolbox } from '../../../toolbox/actions.web'; -// @ts-ignore import { isButtonEnabled, isToolboxVisible } from '../../../toolbox/functions.web'; // @ts-ignore import { getCurrentLayout } from '../../../video-layout'; @@ -232,7 +228,7 @@ interface Props extends WithTranslation { /** * The redux {@code dispatch} function. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * The type of filmstrip to be displayed. diff --git a/react/features/filmstrip/components/web/Thumbnail.tsx b/react/features/filmstrip/components/web/Thumbnail.tsx index c8f6548ee8..07ecb0e48a 100644 --- a/react/features/filmstrip/components/web/Thumbnail.tsx +++ b/react/features/filmstrip/components/web/Thumbnail.tsx @@ -11,8 +11,10 @@ import { sendAnalytics } from '../../../analytics/functions'; import { IState } from '../../../app/types'; // @ts-ignore import { Avatar } from '../../../base/avatar'; -// @ts-ignore -import { getMultipleVideoSupportFeatureFlag, getSourceNameSignalingFeatureFlag } from '../../../base/config'; +import { + getMultipleVideoSupportFeatureFlag, + getSourceNameSignalingFeatureFlag +} from '../../../base/config/functions.web'; import { isMobileBrowser } from '../../../base/environment/utils'; import { JitsiTrackEvents } from '../../../base/lib-jitsi-meet'; // @ts-ignore @@ -29,21 +31,16 @@ import { } from '../../../base/participants/functions'; import { Participant } from '../../../base/participants/types'; import { ASPECT_RATIO_NARROW } from '../../../base/responsive-ui/constants'; -// @ts-ignore -import { isTestModeEnabled } from '../../../base/testing'; +import { isTestModeEnabled } from '../../../base/testing/functions'; +import { trackStreamingStatusChanged, updateLastTrackVideoMediaEvent } from '../../../base/tracks/actions'; import { getLocalAudioTrack, getLocalVideoTrack, getTrackByMediaTypeAndParticipant, - getVirtualScreenshareParticipantTrack, - trackStreamingStatusChanged, - updateLastTrackVideoMediaEvent - // @ts-ignore -} from '../../../base/tracks'; + getVirtualScreenshareParticipantTrack +} from '../../../base/tracks/functions'; import { getVideoObjectPosition } from '../../../face-landmarks/functions'; -// @ts-ignore import { hideGif, showGif } from '../../../gifs/actions'; -// @ts-ignore import { getGifDisplayMode, getGifForParticipant } from '../../../gifs/functions'; // @ts-ignore import { PresenceLabel } from '../../../presence-status'; @@ -1178,7 +1175,7 @@ function _mapStateToProps(state: IState, ownProps: any): Object { const { participantID, filmstripType = FILMSTRIP_TYPE.MAIN } = ownProps; const participant = getParticipantByIdOrUndefined(state, participantID); - const id = participant?.id; + const id = participant?.id ?? ''; const isLocal = participant?.local ?? true; const multipleVideoSupportEnabled = getMultipleVideoSupportFeatureFlag(state); const sourceNameSignalingEnabled = getSourceNameSignalingFeatureFlag(state); diff --git a/react/features/filmstrip/components/web/ThumbnailBottomIndicators.tsx b/react/features/filmstrip/components/web/ThumbnailBottomIndicators.tsx index 16fdaf9c13..0931654134 100644 --- a/react/features/filmstrip/components/web/ThumbnailBottomIndicators.tsx +++ b/react/features/filmstrip/components/web/ThumbnailBottomIndicators.tsx @@ -9,7 +9,6 @@ import { getMultipleVideoSupportFeatureFlag, isDisplayNameVisible, isNameReadOnly - // @ts-ignore } from '../../../base/config/functions.any'; import { isScreenShareParticipantById } from '../../../base/participants/functions'; // @ts-ignore diff --git a/react/features/filmstrip/components/web/ThumbnailTopIndicators.tsx b/react/features/filmstrip/components/web/ThumbnailTopIndicators.tsx index d8aef05814..6358243e29 100644 --- a/react/features/filmstrip/components/web/ThumbnailTopIndicators.tsx +++ b/react/features/filmstrip/components/web/ThumbnailTopIndicators.tsx @@ -5,8 +5,7 @@ import { useSelector } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; import { IState } from '../../../app/types'; -// @ts-ignore -import { getMultipleVideoSupportFeatureFlag } from '../../../base/config'; +import { getMultipleVideoSupportFeatureFlag } from '../../../base/config/functions.any'; import { isMobileBrowser } from '../../../base/environment/utils'; import { isScreenShareParticipantById } from '../../../base/participants/functions'; // @ts-ignore diff --git a/react/features/filmstrip/components/web/VideoMenuTriggerButton.tsx b/react/features/filmstrip/components/web/VideoMenuTriggerButton.tsx index b0d570beef..317adbf3d0 100644 --- a/react/features/filmstrip/components/web/VideoMenuTriggerButton.tsx +++ b/react/features/filmstrip/components/web/VideoMenuTriggerButton.tsx @@ -45,7 +45,7 @@ type Props = { const VideoMenuTriggerButton = ({ hidePopover, local, - participantId, + participantId = '', popoverVisible, showPopover, thumbnailType, diff --git a/react/features/gifs/components/web/GifsMenu.tsx b/react/features/gifs/components/web/GifsMenu.tsx index a8a543b544..51e03fd6b4 100644 --- a/react/features/gifs/components/web/GifsMenu.tsx +++ b/react/features/gifs/components/web/GifsMenu.tsx @@ -11,7 +11,6 @@ import { createGifSentEvent } from '../../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../../analytics/functions'; import { IState } from '../../../app/types'; import Input from '../../../base/ui/components/web/Input'; -// @ts-ignore import { sendMessage } from '../../../chat/actions.any'; import { SCROLL_SIZE } from '../../../filmstrip/constants'; import { toggleReactionsMenuVisibility } from '../../../reactions/actions.web'; @@ -19,11 +18,8 @@ import { toggleReactionsMenuVisibility } from '../../../reactions/actions.web'; import { setOverflowMenuVisible } from '../../../toolbox/actions.web'; // @ts-ignore import { Drawer, JitsiPortal } from '../../../toolbox/components/web'; -// @ts-ignore import { showOverflowDrawer } from '../../../toolbox/functions.web'; -// @ts-ignore import { setGifDrawerVisibility } from '../../actions'; -// @ts-ignore import { formatGifUrlMessage, getGifAPIKey, getGifUrl } from '../../functions'; const OVERFLOW_DRAWER_PADDING = 16; diff --git a/react/features/invite/components/add-people-dialog/web/AddPeopleDialog.tsx b/react/features/invite/components/add-people-dialog/web/AddPeopleDialog.tsx index 94a9cb8f2f..86a76f4a72 100644 --- a/react/features/invite/components/add-people-dialog/web/AddPeopleDialog.tsx +++ b/react/features/invite/components/add-people-dialog/web/AddPeopleDialog.tsx @@ -10,11 +10,9 @@ import { translate } from '../../../../base/i18n/functions'; import { JitsiRecordingConstants } from '../../../../base/lib-jitsi-meet'; import { connect } from '../../../../base/redux/functions'; import Dialog from '../../../../base/ui/components/web/Dialog'; -// @ts-ignore import { isDynamicBrandingDataLoaded } from '../../../../dynamic-branding/functions.any'; // @ts-ignore import EmbedMeetingTrigger from '../../../../embed-meeting/components/EmbedMeetingTrigger'; -// @ts-ignore import { isVpaasMeeting } from '../../../../jaas/functions'; // @ts-ignore import { getActiveSession } from '../../../../recording'; diff --git a/react/features/invite/components/add-people-dialog/web/DialInLimit.tsx b/react/features/invite/components/add-people-dialog/web/DialInLimit.tsx index d26a4b346d..4975ba82e5 100644 --- a/react/features/invite/components/add-people-dialog/web/DialInLimit.tsx +++ b/react/features/invite/components/add-people-dialog/web/DialInLimit.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { Theme } from '@mui/material'; import React from 'react'; import { WithTranslation } from 'react-i18next'; diff --git a/react/features/large-video/components/ScreenSharePlaceholder.web.tsx b/react/features/large-video/components/ScreenSharePlaceholder.web.tsx index 95e63fe869..9511ea48a6 100644 --- a/react/features/large-video/components/ScreenSharePlaceholder.web.tsx +++ b/react/features/large-video/components/ScreenSharePlaceholder.web.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { Theme } from '@mui/material'; import React, { useCallback } from 'react'; import { WithTranslation } from 'react-i18next'; @@ -6,6 +5,7 @@ import { useStore } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; import { translate } from '../../base/i18n/functions'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { setSeeWhatIsBeingShared } from '../actions.web'; diff --git a/react/features/lobby/components/web/LobbySection.tsx b/react/features/lobby/components/web/LobbySection.tsx index 7cd034b3be..6d6eb8eca1 100644 --- a/react/features/lobby/components/web/LobbySection.tsx +++ b/react/features/lobby/components/web/LobbySection.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import React, { PureComponent } from 'react'; import { WithTranslation } from 'react-i18next'; @@ -7,8 +6,8 @@ import { translate } from '../../../base/i18n/functions'; import { isLocalParticipantModerator } from '../../../base/participants/functions'; import { connect } from '../../../base/redux/functions'; import Switch from '../../../base/ui/components/web/Switch'; -// @ts-ignore import { isInBreakoutRoom } from '../../../breakout-rooms/functions'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { toggleLobbyMode } from '../../actions'; diff --git a/react/features/lobby/reducer.ts b/react/features/lobby/reducer.ts index 009ffb154e..66a851ae28 100644 --- a/react/features/lobby/reducer.ts +++ b/react/features/lobby/reducer.ts @@ -1,5 +1,4 @@ -// @ts-ignore -import { CONFERENCE_JOINED, CONFERENCE_LEFT, SET_PASSWORD } from '../base/conference'; +import { CONFERENCE_JOINED, CONFERENCE_LEFT, SET_PASSWORD } from '../base/conference/actionTypes'; import { Participant } from '../base/participants/types'; import ReducerRegistry from '../base/redux/ReducerRegistry'; diff --git a/react/features/noise-suppression/actions.ts b/react/features/noise-suppression/actions.ts index 9f5653d639..151c45a593 100644 --- a/react/features/noise-suppression/actions.ts +++ b/react/features/noise-suppression/actions.ts @@ -1,10 +1,6 @@ -/* eslint-disable lines-around-comment */ -import { Dispatch } from 'redux'; - -// @ts-ignore -import { getLocalJitsiAudioTrack } from '../base/tracks'; -// @ts-ignore -import { showErrorNotification } from '../notifications'; +import { IStore } from '../app/types'; +import { getLocalJitsiAudioTrack } from '../base/tracks/functions'; +import { showErrorNotification } from '../notifications/actions'; import { NOTIFICATION_TIMEOUT_TYPE } from '../notifications/constants'; import { NoiseSuppressionEffect } from '../stream-effects/noise-suppression/NoiseSuppressionEffect'; @@ -34,7 +30,7 @@ export function setNoiseSuppressionEnabledState(enabled: boolean): any { * @returns {Function} */ export function toggleNoiseSuppression(): any { - return (dispatch: Dispatch, getState: Function) => { + return (dispatch: IStore['dispatch'], getState: IStore['getState']) => { if (isNoiseSuppressionEnabled(getState())) { dispatch(setNoiseSuppressionEnabled(false)); } else { @@ -51,7 +47,7 @@ export function toggleNoiseSuppression(): any { * @returns {Function} */ export function setNoiseSuppressionEnabled(enabled: boolean): any { - return async (dispatch: Dispatch, getState: Function) => { + return async (dispatch: IStore['dispatch'], getState: IStore['getState']) => { const state = getState(); const localAudio = getLocalJitsiAudioTrack(state); @@ -82,6 +78,7 @@ export function setNoiseSuppressionEnabled(enabled: boolean): any { error ); + // @ts-ignore dispatch(showErrorNotification({ titleKey: 'notify.noiseSuppressionFailedTitle' }, NOTIFICATION_TIMEOUT_TYPE.MEDIUM)); diff --git a/react/features/noise-suppression/functions.ts b/react/features/noise-suppression/functions.ts index 8b9f3af04c..b13fa97310 100644 --- a/react/features/noise-suppression/functions.ts +++ b/react/features/noise-suppression/functions.ts @@ -1,10 +1,7 @@ -/* eslint-disable lines-around-comment */ import { IState } from '../app/types'; -// @ts-ignore -import { showWarningNotification } from '../notifications'; +import { showWarningNotification } from '../notifications/actions'; import { NOTIFICATION_TIMEOUT_TYPE } from '../notifications/constants'; -// @ts-ignore -import { isScreenAudioShared } from '../screen-share'; +import { isScreenAudioShared } from '../screen-share/functions'; /** * Is noise suppression currently enabled. diff --git a/react/features/notifications/components/web/NotificationsContainer.tsx b/react/features/notifications/components/web/NotificationsContainer.tsx index fbb71e1533..8ad47d6e50 100644 --- a/react/features/notifications/components/web/NotificationsContainer.tsx +++ b/react/features/notifications/components/web/NotificationsContainer.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { FlagGroupContext } from '@atlaskit/flag/flag-group'; import { AtlasKitThemeProvider } from '@atlaskit/theme'; import { Theme } from '@mui/material'; @@ -11,9 +10,7 @@ import { CSSTransition, TransitionGroup } from 'react-transition-group'; import { IState } from '../../../app/types'; import { translate } from '../../../base/i18n/functions'; import { connect } from '../../../base/redux/functions'; -// @ts-ignore import { hideNotification } from '../../actions'; -// @ts-ignore import { areThereNotifications } from '../../functions'; // @ts-ignore diff --git a/react/features/participants-pane/components/breakout-rooms/components/native/AddBreakoutRoomButton.tsx b/react/features/participants-pane/components/breakout-rooms/components/native/AddBreakoutRoomButton.tsx index 76ab4b77c6..0d97a50f50 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/native/AddBreakoutRoomButton.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/native/AddBreakoutRoomButton.tsx @@ -1,10 +1,8 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useDispatch } from 'react-redux'; import Button from '../../../../../base/ui/components/native/Button'; import { BUTTON_TYPES } from '../../../../../base/ui/constants'; -// @ts-ignore import { createBreakoutRoom } from '../../../../../breakout-rooms/actions'; // @ts-ignore diff --git a/react/features/participants-pane/components/breakout-rooms/components/native/AutoAssignButton.tsx b/react/features/participants-pane/components/breakout-rooms/components/native/AutoAssignButton.tsx index 3d2b246c3e..e946e2b42a 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/native/AutoAssignButton.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/native/AutoAssignButton.tsx @@ -1,10 +1,8 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useDispatch } from 'react-redux'; import Button from '../../../../../base/ui/components/native/Button'; import { BUTTON_TYPES } from '../../../../../base/ui/constants'; -// @ts-ignore import { autoAssignToBreakoutRooms } from '../../../../../breakout-rooms/actions'; // @ts-ignore diff --git a/react/features/participants-pane/components/breakout-rooms/components/native/LeaveBreakoutRoomButton.tsx b/react/features/participants-pane/components/breakout-rooms/components/native/LeaveBreakoutRoomButton.tsx index c6376ce58d..2cd4de8076 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/native/LeaveBreakoutRoomButton.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/native/LeaveBreakoutRoomButton.tsx @@ -6,7 +6,6 @@ import { createBreakoutRoomsEvent } from '../../../../../analytics/AnalyticsEven import { sendAnalytics } from '../../../../../analytics/functions'; import Button from '../../../../../base/ui/components/native/Button'; import { BUTTON_TYPES } from '../../../../../base/ui/constants'; -// @ts-ignore import { moveToRoom } from '../../../../../breakout-rooms/actions'; // @ts-ignore diff --git a/react/features/participants-pane/components/breakout-rooms/components/web/AddBreakoutRoomButton.tsx b/react/features/participants-pane/components/breakout-rooms/components/web/AddBreakoutRoomButton.tsx index a98bc328e0..a840fe0be6 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/web/AddBreakoutRoomButton.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/web/AddBreakoutRoomButton.tsx @@ -1,11 +1,9 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; import Button from '../../../../../base/ui/components/web/Button'; import { BUTTON_TYPES } from '../../../../../base/ui/constants'; -// @ts-ignore import { createBreakoutRoom } from '../../../../../breakout-rooms/actions'; export const AddBreakoutRoomButton = () => { diff --git a/react/features/participants-pane/components/breakout-rooms/components/web/AutoAssignButton.tsx b/react/features/participants-pane/components/breakout-rooms/components/web/AutoAssignButton.tsx index 25c58f65f7..a8f8687764 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/web/AutoAssignButton.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/web/AutoAssignButton.tsx @@ -1,11 +1,9 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; import Button from '../../../../../base/ui/components/web/Button'; import { BUTTON_TYPES } from '../../../../../base/ui/constants'; -// @ts-ignore import { autoAssignToBreakoutRooms } from '../../../../../breakout-rooms/actions'; export const AutoAssignButton = () => { diff --git a/react/features/participants-pane/components/breakout-rooms/components/web/CollapsibleRoom.tsx b/react/features/participants-pane/components/breakout-rooms/components/web/CollapsibleRoom.tsx index 611104265e..734d8b4c34 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/web/CollapsibleRoom.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/web/CollapsibleRoom.tsx @@ -1,5 +1,3 @@ -/* eslint-disable lines-around-comment */ - import { Theme } from '@mui/material'; import React, { ReactElement, useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -12,7 +10,6 @@ import Icon from '../../../../../base/icons/components/Icon'; import { IconArrowDown, IconArrowUp } from '../../../../../base/icons/svg'; import { isLocalParticipantModerator } from '../../../../../base/participants/functions'; import { withPixelLineHeight } from '../../../../../base/styles/functions.web'; -// @ts-ignore import { showOverflowDrawer } from '../../../../../toolbox/functions.web'; import { ACTION_TRIGGER } from '../../../../constants'; import { participantMatchesSearch } from '../../../../functions'; diff --git a/react/features/participants-pane/components/breakout-rooms/components/web/JoinQuickActionButton.tsx b/react/features/participants-pane/components/breakout-rooms/components/web/JoinQuickActionButton.tsx index 803c777eb6..e8ca1ab655 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/web/JoinQuickActionButton.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/web/JoinQuickActionButton.tsx @@ -1,5 +1,3 @@ -/* eslint-disable lines-around-comment */ - import { Theme } from '@mui/material'; import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; @@ -9,7 +7,6 @@ import { makeStyles } from 'tss-react/mui'; import { createBreakoutRoomsEvent } from '../../../../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../../../../analytics/functions'; import Button from '../../../../../base/ui/components/web/Button'; -// @ts-ignore import { moveToRoom } from '../../../../../breakout-rooms/actions'; type Props = { diff --git a/react/features/participants-pane/components/breakout-rooms/components/web/LeaveButton.tsx b/react/features/participants-pane/components/breakout-rooms/components/web/LeaveButton.tsx index d29de321f7..217bc0e4e8 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/web/LeaveButton.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/web/LeaveButton.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; @@ -7,7 +6,6 @@ import { createBreakoutRoomsEvent } from '../../../../../analytics/AnalyticsEven import { sendAnalytics } from '../../../../../analytics/functions'; import Button from '../../../../../base/ui/components/web/Button'; import { BUTTON_TYPES } from '../../../../../base/ui/constants'; -// @ts-ignore import { moveToRoom } from '../../../../../breakout-rooms/actions'; export const LeaveButton = () => { diff --git a/react/features/participants-pane/components/breakout-rooms/components/web/RoomParticipantContextMenu.tsx b/react/features/participants-pane/components/breakout-rooms/components/web/RoomParticipantContextMenu.tsx index 78c24aa2de..c99fd60446 100644 --- a/react/features/participants-pane/components/breakout-rooms/components/web/RoomParticipantContextMenu.tsx +++ b/react/features/participants-pane/components/breakout-rooms/components/web/RoomParticipantContextMenu.tsx @@ -10,9 +10,7 @@ import { Avatar } from '../../../../../base/avatar'; import { isLocalParticipantModerator } from '../../../../../base/participants/functions'; import ContextMenu from '../../../../../base/ui/components/web/ContextMenu'; import ContextMenuItemGroup from '../../../../../base/ui/components/web/ContextMenuItemGroup'; -// @ts-ignore import { getBreakoutRooms } from '../../../../../breakout-rooms/functions'; -// @ts-ignore import { showOverflowDrawer } from '../../../../../toolbox/functions.web'; // @ts-ignore import SendToRoomButton from '../../../../../video-menu/components/web/SendToRoomButton'; diff --git a/react/features/participants-pane/components/native/ParticipantsPaneFooter.tsx b/react/features/participants-pane/components/native/ParticipantsPaneFooter.tsx index 5829e4e8bd..eb8a33559f 100644 --- a/react/features/participants-pane/components/native/ParticipantsPaneFooter.tsx +++ b/react/features/participants-pane/components/native/ParticipantsPaneFooter.tsx @@ -3,8 +3,7 @@ import React, { useCallback } from 'react'; import { View } from 'react-native'; import { useDispatch, useSelector } from 'react-redux'; -// @ts-ignore -import { openDialog, openSheet } from '../../../base/dialog'; +import { openDialog, openSheet } from '../../../base/dialog/actions'; import { IconHorizontalPoints } from '../../../base/icons/svg'; import IconButton from '../../../base/react/components/native/IconButton'; import Button from '../../../base/ui/components/native/Button'; @@ -12,7 +11,6 @@ import { BUTTON_TYPES } from '../../../base/ui/constants'; import MuteEveryoneDialog // @ts-ignore from '../../../video-menu/components/native/MuteEveryoneDialog'; -// @ts-ignore import { isMoreActionsVisible, isMuteAllVisible } from '../../functions'; // @ts-ignore diff --git a/react/features/participants-pane/components/native/RoomParticipantMenu.tsx b/react/features/participants-pane/components/native/RoomParticipantMenu.tsx index 85565a48ef..d186a723d3 100644 --- a/react/features/participants-pane/components/native/RoomParticipantMenu.tsx +++ b/react/features/participants-pane/components/native/RoomParticipantMenu.tsx @@ -12,7 +12,6 @@ import { BottomSheet, hideSheet } from '../../../base/dialog'; import { bottomSheetStyles } from '../../../base/dialog/components/native/styles'; import { translate } from '../../../base/i18n/functions'; import { connect } from '../../../base/redux/functions'; -// @ts-ignore import { getBreakoutRooms } from '../../../breakout-rooms/functions'; // @ts-ignore import SendToBreakoutRoom from '../../../video-menu/components/native/SendToBreakoutRoom'; diff --git a/react/features/participants-pane/components/web/FooterContextMenu.tsx b/react/features/participants-pane/components/web/FooterContextMenu.tsx index de2de03a6b..ba7fb503d2 100644 --- a/react/features/participants-pane/components/web/FooterContextMenu.tsx +++ b/react/features/participants-pane/components/web/FooterContextMenu.tsx @@ -10,15 +10,12 @@ import { requestDisableVideoModeration, requestEnableAudioModeration, requestEnableVideoModeration - // @ts-ignore } from '../../../av-moderation/actions'; import { isEnabled as isAvModerationEnabled, isSupported as isAvModerationSupported - // @ts-ignore } from '../../../av-moderation/functions'; -// @ts-ignore -import { openDialog } from '../../../base/dialog'; +import { openDialog } from '../../../base/dialog/actions'; import { IconCheck, IconHorizontalPoints, @@ -31,7 +28,6 @@ import { } from '../../../base/participants/functions'; import ContextMenu from '../../../base/ui/components/web/ContextMenu'; import ContextMenuItemGroup from '../../../base/ui/components/web/ContextMenuItemGroup'; -// @ts-ignore import { isInBreakoutRoom } from '../../../breakout-rooms/functions'; import { openSettingsDialog, diff --git a/react/features/participants-pane/components/web/InviteButton.tsx b/react/features/participants-pane/components/web/InviteButton.tsx index bdec6dd5ce..9cdf0eebd5 100644 --- a/react/features/participants-pane/components/web/InviteButton.tsx +++ b/react/features/participants-pane/components/web/InviteButton.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; @@ -8,6 +7,7 @@ import { sendAnalytics } from '../../../analytics/functions'; import { IconInviteMore } from '../../../base/icons/svg'; import Button from '../../../base/ui/components/web/Button'; import { BUTTON_TYPES } from '../../../base/ui/constants'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { beginAddPeople } from '../../../invite'; diff --git a/react/features/participants-pane/components/web/LobbyParticipants.tsx b/react/features/participants-pane/components/web/LobbyParticipants.tsx index 808a3a9872..c588f90ddd 100644 --- a/react/features/participants-pane/components/web/LobbyParticipants.tsx +++ b/react/features/participants-pane/components/web/LobbyParticipants.tsx @@ -16,8 +16,7 @@ import { admitMultiple } from '../../../lobby/actions.web'; import { getKnockingParticipants, getLobbyEnabled } from '../../../lobby/functions'; // @ts-ignore import { Drawer, JitsiPortal } from '../../../toolbox/components/web'; -// @ts-ignore -import { showOverflowDrawer } from '../../../toolbox/functions'; +import { showOverflowDrawer } from '../../../toolbox/functions.web'; // @ts-ignore import { useLobbyActions, useParticipantDrawer } from '../../hooks'; diff --git a/react/features/participants-pane/components/web/MeetingParticipants.tsx b/react/features/participants-pane/components/web/MeetingParticipants.tsx index 83940d8925..7cbd48bf2c 100644 --- a/react/features/participants-pane/components/web/MeetingParticipants.tsx +++ b/react/features/participants-pane/components/web/MeetingParticipants.tsx @@ -7,10 +7,8 @@ import { useDispatch, useSelector } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; import { IState } from '../../../app/types'; -// @ts-ignore import { rejectParticipantAudio } from '../../../av-moderation/actions'; import participantsPaneTheme from '../../../base/components/themes/participantsPaneTheme.json'; -// @ts-ignore import { isToolbarButtonEnabled } from '../../../base/config/functions.web'; import { MEDIA_TYPE } from '../../../base/media/constants'; import { getParticipantById, isScreenShareParticipant } from '../../../base/participants/functions'; @@ -19,13 +17,10 @@ import { withPixelLineHeight } from '../../../base/styles/functions.web'; import Input from '../../../base/ui/components/web/Input'; import useContextMenu from '../../../base/ui/hooks/useContextMenu'; import { normalizeAccents } from '../../../base/util/strings.web'; -// @ts-ignore import { getBreakoutRooms, getCurrentRoomId, isInBreakoutRoom } from '../../../breakout-rooms/functions'; -// @ts-ignore -import { showOverflowDrawer } from '../../../toolbox/functions'; +import { showOverflowDrawer } from '../../../toolbox/functions.web'; // @ts-ignore import { muteRemote } from '../../../video-menu/actions.any'; -// @ts-ignore import { getSortedParticipantIds, shouldRenderInviteButton } from '../../functions'; // @ts-ignore import { useParticipantDrawer } from '../../hooks'; diff --git a/react/features/participants-pane/components/web/ParticipantItem.tsx b/react/features/participants-pane/components/web/ParticipantItem.tsx index 9296230d50..51a3b7ffc3 100644 --- a/react/features/participants-pane/components/web/ParticipantItem.tsx +++ b/react/features/participants-pane/components/web/ParticipantItem.tsx @@ -1,5 +1,3 @@ -/* eslint-disable lines-around-comment */ - import { Theme } from '@mui/material'; import React, { ReactElement, useCallback } from 'react'; import { WithTranslation } from 'react-i18next'; diff --git a/react/features/participants-pane/components/web/ParticipantQuickAction.tsx b/react/features/participants-pane/components/web/ParticipantQuickAction.tsx index b3375db4b3..5135aef0f2 100644 --- a/react/features/participants-pane/components/web/ParticipantQuickAction.tsx +++ b/react/features/participants-pane/components/web/ParticipantQuickAction.tsx @@ -1,15 +1,11 @@ -/* eslint-disable lines-around-comment */ - import { Theme } from '@mui/material'; import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; -// @ts-ignore import { approveParticipant } from '../../../av-moderation/actions'; import Button from '../../../base/ui/components/web/Button'; -// @ts-ignore import { QUICK_ACTION_BUTTON } from '../../constants'; type Props = { diff --git a/react/features/participants-pane/components/web/ParticipantsPane.tsx b/react/features/participants-pane/components/web/ParticipantsPane.tsx index 49ebfcb7c2..135eec0d98 100644 --- a/react/features/participants-pane/components/web/ParticipantsPane.tsx +++ b/react/features/participants-pane/components/web/ParticipantsPane.tsx @@ -6,17 +6,14 @@ import { WithTranslation } from 'react-i18next'; import { IState } from '../../../app/types'; import participantsPaneTheme from '../../../base/components/themes/participantsPaneTheme.json'; -// @ts-ignore -import { openDialog } from '../../../base/dialog'; +import { openDialog } from '../../../base/dialog/actions'; import { translate } from '../../../base/i18n/functions'; import { IconClose, IconHorizontalPoints } from '../../../base/icons/svg'; -// @ts-ignore import { isLocalParticipantModerator } from '../../../base/participants/functions'; import { connect } from '../../../base/redux/functions'; import Button from '../../../base/ui/components/web/Button'; import ClickableIcon from '../../../base/ui/components/web/ClickableIcon'; import { BUTTON_TYPES } from '../../../base/ui/constants'; -// @ts-ignore import { isAddBreakoutRoomButtonVisible } from '../../../breakout-rooms/functions'; // @ts-ignore import { MuteEveryoneDialog } from '../../../video-menu/components/'; @@ -27,7 +24,6 @@ import { getParticipantsPaneOpen, isMoreActionsVisible, isMuteAllVisible - // @ts-ignore } from '../../functions'; import { AddBreakoutRoomButton } from '../breakout-rooms/components/web/AddBreakoutRoomButton'; // @ts-ignore diff --git a/react/features/participants-pane/functions.ts b/react/features/participants-pane/functions.ts index 35f7e32246..523bd49651 100644 --- a/react/features/participants-pane/functions.ts +++ b/react/features/participants-pane/functions.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { IState } from '../app/types'; import { isEnabledFromState, @@ -7,8 +6,8 @@ import { isSupported } from '../av-moderation/functions'; import { IStateful } from '../base/app/types'; -// @ts-ignore -import { INVITE_ENABLED, getFeatureFlag } from '../base/flags'; +import { INVITE_ENABLED } from '../base/flags/constants'; +import { getFeatureFlag } from '../base/flags/functions'; import { MEDIA_TYPE, type MediaType } from '../base/media/constants'; import { getDominantSpeakerParticipant, @@ -20,6 +19,7 @@ import { } from '../base/participants/functions'; import { Participant } from '../base/participants/types'; import { toState } from '../base/redux/functions'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { normalizeAccents } from '../base/util/strings'; import { isInBreakoutRoom } from '../breakout-rooms/functions'; diff --git a/react/features/polls/components/AbstractPollAnswer.tsx b/react/features/polls/components/AbstractPollAnswer.tsx index f48dfd4a13..4c3e05e35f 100644 --- a/react/features/polls/components/AbstractPollAnswer.tsx +++ b/react/features/polls/components/AbstractPollAnswer.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import React, { ComponentType, useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch, useSelector } from 'react-redux'; @@ -8,7 +7,6 @@ import { sendAnalytics } from '../../analytics/functions'; import { IState } from '../../app/types'; import { getLocalParticipant, getParticipantById } from '../../base/participants/functions'; import { useBoundSelector } from '../../base/util/hooks'; -// @ts-ignore import { registerVote, setVoteChanging } from '../actions'; import { COMMAND_ANSWER_POLL } from '../constants'; import { Poll } from '../types'; diff --git a/react/features/polls/components/native/PollAnswer.tsx b/react/features/polls/components/native/PollAnswer.tsx index 7eaf22cb8a..74dd1c9d65 100644 --- a/react/features/polls/components/native/PollAnswer.tsx +++ b/react/features/polls/components/native/PollAnswer.tsx @@ -7,7 +7,6 @@ import { getLocalParticipant } from '../../../base/participants/functions'; import Button from '../../../base/ui/components/native/Button'; import Switch from '../../../base/ui/components/native/Switch'; import { BUTTON_TYPES } from '../../../base/ui/constants'; -// @ts-ignore import { isSubmitAnswerDisabled } from '../../functions'; import AbstractPollAnswer, { AbstractProps } from '../AbstractPollAnswer'; diff --git a/react/features/polls/components/web/PollAnswer.tsx b/react/features/polls/components/web/PollAnswer.tsx index eb77e677cf..653ee7a601 100644 --- a/react/features/polls/components/web/PollAnswer.tsx +++ b/react/features/polls/components/web/PollAnswer.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { Theme } from '@mui/material'; import React from 'react'; import { makeStyles } from 'tss-react/mui'; @@ -7,7 +6,6 @@ import { makeStyles } from 'tss-react/mui'; import Button from '../../../base/ui/components/web/Button'; import Checkbox from '../../../base/ui/components/web/Checkbox'; import { BUTTON_TYPES } from '../../../base/ui/constants'; -// @ts-ignore import { isSubmitAnswerDisabled } from '../../functions'; import AbstractPollAnswer, { AbstractProps } from '../AbstractPollAnswer'; diff --git a/react/features/prejoin/components/Prejoin.native.tsx b/react/features/prejoin/components/Prejoin.native.tsx index 22655a7bc9..00b182c49b 100644 --- a/react/features/prejoin/components/Prejoin.native.tsx +++ b/react/features/prejoin/components/Prejoin.native.tsx @@ -17,9 +17,7 @@ import { useDispatch, useSelector } from 'react-redux'; // @ts-ignore import { appNavigate } from '../../app/actions.native'; import { IState } from '../../app/types'; -// @ts-ignore import { setAudioOnly } from '../../base/audio-only/actions'; -// @ts-ignore import { getConferenceName } from '../../base/conference/functions'; // @ts-ignore import { connect } from '../../base/connection/actions.native'; @@ -30,8 +28,7 @@ import { getLocalParticipant } from '../../base/participants/functions'; // @ts-ignore import { getFieldValue } from '../../base/react'; import { ASPECT_RATIO_NARROW } from '../../base/responsive-ui/constants'; -// @ts-ignore -import { updateSettings } from '../../base/settings'; +import { updateSettings } from '../../base/settings/actions'; import BaseTheme from '../../base/ui/components/BaseTheme.native'; import Button from '../../base/ui/components/native/Button'; import { BUTTON_TYPES } from '../../base/ui/constants'; @@ -48,7 +45,6 @@ import { screen } from '../../mobile/navigation/routes'; import AudioMuteButton from '../../toolbox/components/AudioMuteButton'; // @ts-ignore import VideoMuteButton from '../../toolbox/components/VideoMuteButton'; -// @ts-ignore import { isDisplayNameRequired } from '../functions'; import { PrejoinProps } from '../types'; diff --git a/react/features/prejoin/components/preview/DeviceStatus.tsx b/react/features/prejoin/components/preview/DeviceStatus.tsx index 98c6380f89..0aea4d1e0b 100644 --- a/react/features/prejoin/components/preview/DeviceStatus.tsx +++ b/react/features/prejoin/components/preview/DeviceStatus.tsx @@ -11,8 +11,6 @@ import { connect } from '../../../base/redux/functions'; import { getDeviceStatusText, getDeviceStatusType - - // @ts-ignore } from '../../functions'; export interface Props extends WithTranslation { diff --git a/react/features/reactions/components/web/ReactionsMenu.tsx b/react/features/reactions/components/web/ReactionsMenu.tsx index c4139dd3ff..883d9f7f17 100644 --- a/react/features/reactions/components/web/ReactionsMenu.tsx +++ b/react/features/reactions/components/web/ReactionsMenu.tsx @@ -16,7 +16,6 @@ import { getLocalParticipant, hasRaisedHand } from '../../../base/participants/f import GifsMenu from '../../../gifs/components/web/GifsMenu'; // @ts-ignore import GifsMenuButton from '../../../gifs/components/web/GifsMenuButton'; -// @ts-ignore import { isGifEnabled, isGifsMenuOpen } from '../../../gifs/functions'; // @ts-ignore import { dockToolbox } from '../../../toolbox/actions.web'; diff --git a/react/features/reactions/functions.any.ts b/react/features/reactions/functions.any.ts index a333d2a9b0..7c9f6e2bf3 100644 --- a/react/features/reactions/functions.any.ts +++ b/react/features/reactions/functions.any.ts @@ -1,11 +1,9 @@ -/* eslint-disable lines-around-comment */ import { v4 as uuidv4 } from 'uuid'; import { IState } from '../app/types'; -// @ts-ignore -import { REACTIONS_ENABLED, getFeatureFlag } from '../base/flags'; +import { REACTIONS_ENABLED } from '../base/flags/constants'; +import { getFeatureFlag } from '../base/flags/functions'; import { getLocalParticipant } from '../base/participants/functions'; -// @ts-ignore import { extractFqnFromPath } from '../dynamic-branding/functions.any'; import { REACTIONS, ReactionEmojiProps, ReactionThreshold, SOUNDS_THRESHOLDS } from './constants'; diff --git a/react/features/reactions/middleware.ts b/react/features/reactions/middleware.ts index bcf74d7037..9f7ee2e1c5 100644 --- a/react/features/reactions/middleware.ts +++ b/react/features/reactions/middleware.ts @@ -1,16 +1,13 @@ -/* eslint-disable lines-around-comment */ import { batch } from 'react-redux'; import { createReactionSoundsDisabledEvent } from '../analytics/AnalyticsEvents'; import { sendAnalytics } from '../analytics/functions'; import { IStore } from '../app/types'; import { APP_WILL_MOUNT, APP_WILL_UNMOUNT } from '../base/app/actionTypes'; -import { - CONFERENCE_JOIN_IN_PROGRESS, - SET_START_REACTIONS_MUTED, - setStartReactionsMuted - // @ts-ignore -} from '../base/conference'; +import { CONFERENCE_JOIN_IN_PROGRESS, SET_START_REACTIONS_MUTED } from '../base/conference/actionTypes'; +// eslint-disable-next-line lines-around-comment +// @ts-ignore +import { setStartReactionsMuted } from '../base/conference/actions'; import { getParticipantById, getParticipantCount, @@ -18,14 +15,11 @@ import { } from '../base/participants/functions'; import MiddlewareRegistry from '../base/redux/MiddlewareRegistry'; import { SETTINGS_UPDATED } from '../base/settings/actionTypes'; -// @ts-ignore import { updateSettings } from '../base/settings/actions'; -// @ts-ignore -import { playSound, registerSound, unregisterSound } from '../base/sounds'; -// @ts-ignore +import { playSound, registerSound, unregisterSound } from '../base/sounds/actions'; import { getDisabledSounds } from '../base/sounds/functions.any'; -// @ts-ignore -import { NOTIFICATION_TIMEOUT_TYPE, showNotification } from '../notifications'; +import { showNotification } from '../notifications/actions'; +import { NOTIFICATION_TIMEOUT_TYPE } from '../notifications/constants'; import { ADD_REACTION_BUFFER, diff --git a/react/features/recent-list/reducer.ts b/react/features/recent-list/reducer.ts index 199b31761a..423e973313 100644 --- a/react/features/recent-list/reducer.ts +++ b/react/features/recent-list/reducer.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { getURLWithoutParamsNormalized } from '../base/connection/utils'; import PersistenceRegistry from '../base/redux/PersistenceRegistry'; import ReducerRegistry from '../base/redux/ReducerRegistry'; @@ -8,6 +7,7 @@ import { _STORE_CURRENT_CONFERENCE, _UPDATE_CONFERENCE_DURATION } from './actionTypes'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { isRecentListEnabled } from './functions'; diff --git a/react/features/recording/components/Recording/AbstractStartRecordingDialogContent.tsx b/react/features/recording/components/Recording/AbstractStartRecordingDialogContent.tsx index db804db7d1..4485256259 100644 --- a/react/features/recording/components/Recording/AbstractStartRecordingDialogContent.tsx +++ b/react/features/recording/components/Recording/AbstractStartRecordingDialogContent.tsx @@ -16,7 +16,6 @@ import { import { StyleType } from '../../../base/styles'; // @ts-ignore import { authorizeDropbox, updateDropboxToken } from '../../../dropbox'; -// @ts-ignore import { isVpaasMeeting } from '../../../jaas/functions'; import { RECORDING_TYPES } from '../../constants'; // @ts-ignore diff --git a/react/features/recording/components/Recording/LocalRecordingManager.web.ts b/react/features/recording/components/Recording/LocalRecordingManager.web.ts index 7d5e595d32..94153842fe 100644 --- a/react/features/recording/components/Recording/LocalRecordingManager.web.ts +++ b/react/features/recording/components/Recording/LocalRecordingManager.web.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import i18next from 'i18next'; import { v4 as uuidV4 } from 'uuid'; import fixWebmDuration from 'webm-duration-fix'; @@ -8,6 +7,7 @@ import { getRoomName } from '../../../base/conference/functions'; import { MEDIA_TYPE } from '../../../base/media/constants'; import { getLocalTrack, getTrackState } from '../../../base/tracks/functions'; import { inIframe } from '../../../base/util/iframeUtils'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { stopLocalVideoRecording } from '../../actions.any'; @@ -223,6 +223,7 @@ const LocalRecordingManager: ILocalRecordingManager = { const currentTitle = document.title; document.title = i18next.t('localRecording.selectTabTitle'); + // @ts-ignore gdmStream = await navigator.mediaDevices.getDisplayMedia({ // @ts-ignore diff --git a/react/features/recording/components/Recording/web/HighlightButton.tsx b/react/features/recording/components/Recording/web/HighlightButton.tsx index 314f47d4be..d240568b08 100644 --- a/react/features/recording/components/Recording/web/HighlightButton.tsx +++ b/react/features/recording/components/Recording/web/HighlightButton.tsx @@ -5,8 +5,7 @@ import React from 'react'; // @ts-ignore import { StartRecordingDialog } from '../..'; -// @ts-ignore -import { openDialog } from '../../../../base/dialog'; +import { openDialog } from '../../../../base/dialog/actions'; import { translate } from '../../../../base/i18n/functions'; import { IconHighlight } from '../../../../base/icons/svg'; import { MEET_FEATURES } from '../../../../base/jwt/constants'; diff --git a/react/features/recording/components/web/RecordingLabel.tsx b/react/features/recording/components/web/RecordingLabel.tsx index 03586e2f40..613e0c8f01 100644 --- a/react/features/recording/components/web/RecordingLabel.tsx +++ b/react/features/recording/components/web/RecordingLabel.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { Theme } from '@mui/material'; import { withStyles } from '@mui/styles'; import React from 'react'; @@ -9,6 +8,7 @@ import { JitsiRecordingConstants } from '../../../base/lib-jitsi-meet'; import { connect } from '../../../base/redux/functions'; import AbstractRecordingLabel, { _mapStateToProps + // @ts-ignore } from '../AbstractRecordingLabel'; @@ -57,6 +57,7 @@ class RecordingLabel extends AbstractRecordingLabel {
diff --git a/react/features/rtcstats/RTCStats.ts b/react/features/rtcstats/RTCStats.ts index 460126fe74..eabbd2bed2 100644 --- a/react/features/rtcstats/RTCStats.ts +++ b/react/features/rtcstats/RTCStats.ts @@ -1,7 +1,6 @@ -/* eslint-disable import/order */ // @ts-ignore import rtcstatsInit from '@jitsi/rtcstats/rtcstats'; - +// eslint-disable-next-line lines-around-comment // @ts-ignore import traceInit from '@jitsi/rtcstats/trace-ws'; diff --git a/react/features/rtcstats/functions.ts b/react/features/rtcstats/functions.ts index 061fde2193..7233ec34c2 100644 --- a/react/features/rtcstats/functions.ts +++ b/react/features/rtcstats/functions.ts @@ -1,24 +1,15 @@ -/* eslint-disable import/order */ // @ts-ignore import { jitsiLocalStorage } from '@jitsi/js-utils'; import { getAmplitudeIdentity } from '../analytics/functions'; -import { - getAnalyticsRoomName, - getConferenceOptions - - // @ts-ignore -} from '../base/conference'; - -// @ts-ignore -import { getLocalParticipant } from '../base/participants'; - +import { IStore } from '../app/types'; +import { IStateful } from '../base/app/types'; +import { getAnalyticsRoomName, getConferenceOptions } from '../base/conference/functions'; +import { getLocalParticipant } from '../base/participants/functions'; import { toState } from '../base/redux/functions'; import RTCStats from './RTCStats'; import logger from './logger'; -import { IStateful } from '../base/app/types'; -import { IStore } from '../app/types'; /** * Checks whether rtcstats is enabled or not. diff --git a/react/features/rtcstats/logger.ts b/react/features/rtcstats/logger.ts index 7b39f85dd1..6cc9fd5014 100644 --- a/react/features/rtcstats/logger.ts +++ b/react/features/rtcstats/logger.ts @@ -1,4 +1,3 @@ -// @ts-ignore import { getLogger } from '../base/logging/functions'; export default getLogger('features/rtcstats'); diff --git a/react/features/rtcstats/middleware.ts b/react/features/rtcstats/middleware.ts index 3d46fb7e3e..739b5c3f04 100644 --- a/react/features/rtcstats/middleware.ts +++ b/react/features/rtcstats/middleware.ts @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { AnyAction } from 'redux'; import { IStore } from '../app/types'; @@ -8,14 +7,12 @@ import { CONFERENCE_UNIQUE_ID_SET, CONFERENCE_WILL_LEAVE, E2E_RTT_CHANGED - // @ts-ignore -} from '../base/conference'; +} from '../base/conference/actionTypes'; import { LIB_WILL_INIT } from '../base/lib-jitsi-meet/actionTypes'; import { DOMINANT_SPEAKER_CHANGED } from '../base/participants/actionTypes'; import MiddlewareRegistry from '../base/redux/MiddlewareRegistry'; import { TRACK_ADDED, TRACK_UPDATED } from '../base/tracks/actionTypes'; import { getCurrentRoomId, isInBreakoutRoom } from '../breakout-rooms/functions'; -// @ts-ignore import { extractFqnFromPath } from '../dynamic-branding/functions.any'; import { ADD_FACE_EXPRESSION, FACE_LANDMARK_DETECTION_STOPPED } from '../face-landmarks/actionTypes'; diff --git a/react/features/salesforce/components/web/SalesforceLinkDialog.tsx b/react/features/salesforce/components/web/SalesforceLinkDialog.tsx index dc109f44fb..288e2db130 100644 --- a/react/features/salesforce/components/web/SalesforceLinkDialog.tsx +++ b/react/features/salesforce/components/web/SalesforceLinkDialog.tsx @@ -7,7 +7,8 @@ import { useDispatch } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; // @ts-ignore -import { Dialog, hideDialog } from '../../../base/dialog'; +import { Dialog } from '../../../base/dialog'; +import { hideDialog } from '../../../base/dialog/actions'; import Icon from '../../../base/icons/components/Icon'; import { IconSearch } from '../../../base/icons/svg'; // @ts-ignore diff --git a/react/features/screen-share/components/ShareAudioDialog.tsx b/react/features/screen-share/components/ShareAudioDialog.tsx index 20b2f25477..ff4ded9081 100644 --- a/react/features/screen-share/components/ShareAudioDialog.tsx +++ b/react/features/screen-share/components/ShareAudioDialog.tsx @@ -1,8 +1,7 @@ import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; -import { IState } from '../../app/types'; +import { IState, IStore } from '../../app/types'; import { translate } from '../../base/i18n/functions'; import { connect } from '../../base/redux/functions'; import { updateSettings } from '../../base/settings/actions'; @@ -24,7 +23,7 @@ export interface Props extends WithTranslation { /** * The redux {@code dispatch} function. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; } /** diff --git a/react/features/security/components/security-dialog/web/PasswordForm.tsx b/react/features/security/components/security-dialog/web/PasswordForm.tsx index 4642de7c57..7b965f1c5a 100644 --- a/react/features/security/components/security-dialog/web/PasswordForm.tsx +++ b/react/features/security/components/security-dialog/web/PasswordForm.tsx @@ -3,9 +3,7 @@ import { WithTranslation } from 'react-i18next'; import { translate } from '../../../../base/i18n/functions'; import Input from '../../../../base/ui/components/web/Input'; -// eslint-disable-next-line lines-around-comment -// @ts-ignore -import { LOCKED_LOCALLY } from '../../../../room-lock'; +import { LOCKED_LOCALLY } from '../../../../room-lock/constants'; /** * The type of the React {@code Component} props of {@link PasswordForm}. diff --git a/react/features/settings/components/native/SettingsView.tsx b/react/features/settings/components/native/SettingsView.tsx index fa44c1d55f..984b36e79e 100644 --- a/react/features/settings/components/native/SettingsView.tsx +++ b/react/features/settings/components/native/SettingsView.tsx @@ -26,8 +26,7 @@ import { translate } from '../../../base/i18n/functions'; import JitsiScreen from '../../../base/modal/components/JitsiScreen'; import { getLocalParticipant } from '../../../base/participants/functions'; import { connect } from '../../../base/redux/functions'; -// @ts-ignore -import { updateSettings } from '../../../base/settings'; +import { updateSettings } from '../../../base/settings/actions'; import BaseThemeNative from '../../../base/ui/components/BaseTheme.native'; import Switch from '../../../base/ui/components/native/Switch'; // @ts-ignore diff --git a/react/features/settings/components/web/MoreTab.tsx b/react/features/settings/components/web/MoreTab.tsx index dd96869683..3ba7043c55 100644 --- a/react/features/settings/components/web/MoreTab.tsx +++ b/react/features/settings/components/web/MoreTab.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import React from 'react'; import { WithTranslation } from 'react-i18next'; diff --git a/react/features/settings/components/web/SettingsDialog.tsx b/react/features/settings/components/web/SettingsDialog.tsx index 2050659be6..1d51e3309b 100644 --- a/react/features/settings/components/web/SettingsDialog.tsx +++ b/react/features/settings/components/web/SettingsDialog.tsx @@ -4,8 +4,7 @@ import { withStyles } from '@mui/styles'; import React, { Component } from 'react'; import { IState } from '../../../app/types'; -// @ts-ignore -import { getAvailableDevices } from '../../../base/devices'; +import { getAvailableDevices } from '../../../base/devices/actions'; // @ts-ignore import { DialogWithTabs, hideDialog } from '../../../base/dialog'; import { connect } from '../../../base/redux/functions'; diff --git a/react/features/shared-video/components/AbstractSharedVideoDialog.tsx b/react/features/shared-video/components/AbstractSharedVideoDialog.tsx index 77ef6d4d82..cda2953d30 100644 --- a/react/features/shared-video/components/AbstractSharedVideoDialog.tsx +++ b/react/features/shared-video/components/AbstractSharedVideoDialog.tsx @@ -1,7 +1,8 @@ import { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; +import { IStore } from '../../app/types'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { extractYoutubeIdOrURL } from '../functions'; @@ -14,7 +15,7 @@ export interface Props extends WithTranslation { /** * Invoked to update the shared video link. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; /** * Function to be invoked after typing a valid video. diff --git a/react/features/speaker-stats/components/web/SpeakerStats.tsx b/react/features/speaker-stats/components/web/SpeakerStats.tsx index 4944aabb4d..a8f02ea636 100644 --- a/react/features/speaker-stats/components/web/SpeakerStats.tsx +++ b/react/features/speaker-stats/components/web/SpeakerStats.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { Theme } from '@mui/material'; import React, { useCallback, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; @@ -7,6 +6,7 @@ import { makeStyles } from 'tss-react/mui'; import { IState } from '../../../app/types'; import Dialog from '../../../base/ui/components/web/Dialog'; import { escapeRegexp } from '../../../base/util/helpers'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { initSearch, resetSearchCriteria, toggleFaceExpressions } from '../../actions'; import { diff --git a/react/features/toolbox/components/native/HangupMenu.tsx b/react/features/toolbox/components/native/HangupMenu.tsx index ef2e8d9384..73199e0055 100644 --- a/react/features/toolbox/components/native/HangupMenu.tsx +++ b/react/features/toolbox/components/native/HangupMenu.tsx @@ -7,21 +7,19 @@ import { createBreakoutRoomsEvent, createToolbarEvent } from '../../../analytics import { sendAnalytics } from '../../../analytics/functions'; // @ts-ignore import { appNavigate } from '../../../app/actions'; +import { IState } from '../../../app/types'; // @ts-ignore import { ColorSchemeRegistry } from '../../../base/color-scheme'; // @ts-ignore import { endConference } from '../../../base/conference'; -// @ts-ignore -import { hideSheet } from '../../../base/dialog'; +import { hideSheet } from '../../../base/dialog/actions'; // @ts-ignore import BottomSheet from '../../../base/dialog/components/native/BottomSheet'; -// @ts-ignore -import { PARTICIPANT_ROLE, getLocalParticipant } from '../../../base/participants'; +import { PARTICIPANT_ROLE } from '../../../base/participants/constants'; +import { getLocalParticipant } from '../../../base/participants/functions'; import Button from '../../../base/ui/components/native/Button'; import { BUTTON_TYPES } from '../../../base/ui/constants'; -// @ts-ignore import { moveToRoom } from '../../../breakout-rooms/actions'; -// @ts-ignore import { isInBreakoutRoom } from '../../../breakout-rooms/functions'; /** @@ -33,7 +31,7 @@ function HangupMenu() { const dispatch = useDispatch(); const _styles = useSelector(state => ColorSchemeRegistry.get(state, 'Toolbox')); const inBreakoutRoom = useSelector(isInBreakoutRoom); - const isModerator = useSelector(state => getLocalParticipant(state).role === PARTICIPANT_ROLE.MODERATOR); + const isModerator = useSelector((state: IState) => getLocalParticipant(state)?.role === PARTICIPANT_ROLE.MODERATOR); const { DESTRUCTIVE, SECONDARY } = BUTTON_TYPES; const handleEndConference = useCallback(() => { diff --git a/react/features/toolbox/components/native/HangupMenuButton.tsx b/react/features/toolbox/components/native/HangupMenuButton.tsx index 80bbf3357b..43aebb0738 100644 --- a/react/features/toolbox/components/native/HangupMenuButton.tsx +++ b/react/features/toolbox/components/native/HangupMenuButton.tsx @@ -1,9 +1,7 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useDispatch } from 'react-redux'; -// @ts-ignore -import { openSheet } from '../../../base/dialog'; +import { openSheet } from '../../../base/dialog/actions'; import { IconHangup } from '../../../base/icons/svg'; import IconButton from '../../../base/react/components/native/IconButton'; import { BUTTON_TYPES } from '../../../base/ui/constants'; diff --git a/react/features/toolbox/components/native/OpenCarmodeButton.tsx b/react/features/toolbox/components/native/OpenCarmodeButton.tsx index 0887027f0e..0aa2a00cb4 100644 --- a/react/features/toolbox/components/native/OpenCarmodeButton.tsx +++ b/react/features/toolbox/components/native/OpenCarmodeButton.tsx @@ -1,6 +1,7 @@ /* eslint-disable lines-around-comment */ -// @ts-ignore -import { CAR_MODE_ENABLED, getFeatureFlag } from '../../../base/flags'; +import { IState } from '../../../app/types'; +import { CAR_MODE_ENABLED } from '../../../base/flags/constants'; +import { getFeatureFlag } from '../../../base/flags/functions'; import { translate } from '../../../base/i18n/functions'; import { IconCar } from '../../../base/icons/svg'; import { connect } from '../../../base/redux/functions'; @@ -34,12 +35,12 @@ class OpenCarmodeButton extends AbstractButton { /** * Maps part of the Redux state to the props of this component. * - * @param {Object} state - The Redux state. + * @param {IState} state - The Redux state. * @param {AbstractButtonProps} ownProps - The properties explicitly passed to the component instance. * @private * @returns {Object} */ -function _mapStateToProps(state: Object, ownProps: AbstractButtonProps): Object { +function _mapStateToProps(state: IState, ownProps: AbstractButtonProps): Object { const enabled = getFeatureFlag(state, CAR_MODE_ENABLED, true); const { visible = enabled } = ownProps; diff --git a/react/features/toolbox/components/web/EndConferenceButton.tsx b/react/features/toolbox/components/web/EndConferenceButton.tsx index 6fe45043fc..a4c1ed3d14 100644 --- a/react/features/toolbox/components/web/EndConferenceButton.tsx +++ b/react/features/toolbox/components/web/EndConferenceButton.tsx @@ -1,15 +1,12 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch, useSelector } from 'react-redux'; // @ts-ignore import { endConference } from '../../../base/conference'; -// @ts-ignore -import { isLocalParticipantModerator } from '../../../base/participants'; +import { isLocalParticipantModerator } from '../../../base/participants/functions'; import Button from '../../../base/ui/components/web/Button'; import { BUTTON_TYPES } from '../../../base/ui/constants'; -// @ts-ignore import { isInBreakoutRoom } from '../../../breakout-rooms/functions'; /** diff --git a/react/features/toolbox/components/web/HangupMenuButton.tsx b/react/features/toolbox/components/web/HangupMenuButton.tsx index 90c7487b05..f868770b19 100644 --- a/react/features/toolbox/components/web/HangupMenuButton.tsx +++ b/react/features/toolbox/components/web/HangupMenuButton.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import InlineDialog from '@atlaskit/inline-dialog'; import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; diff --git a/react/features/toolbox/components/web/HangupToggleButton.tsx b/react/features/toolbox/components/web/HangupToggleButton.tsx index c425fcc09d..648f6c3421 100644 --- a/react/features/toolbox/components/web/HangupToggleButton.tsx +++ b/react/features/toolbox/components/web/HangupToggleButton.tsx @@ -1,8 +1,7 @@ /* eslint-disable lines-around-comment */ // @ts-ignore import { translate } from '../../../base/i18n'; -// @ts-ignore -import { IconClose, IconHangup } from '../../../base/icons'; +import { IconClose, IconHangup } from '../../../base/icons/svg'; // @ts-ignore import { AbstractButton, type AbstractButtonProps } from '../../../base/toolbox/components'; diff --git a/react/features/toolbox/components/web/LeaveConferenceButton.tsx b/react/features/toolbox/components/web/LeaveConferenceButton.tsx index 2b3701c9a2..14756d266e 100644 --- a/react/features/toolbox/components/web/LeaveConferenceButton.tsx +++ b/react/features/toolbox/components/web/LeaveConferenceButton.tsx @@ -1,10 +1,10 @@ -/* eslint-disable lines-around-comment */ import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; import { createToolbarEvent } from '../../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../../analytics/functions'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { leaveConference } from '../../../base/conference/actions'; import Button from '../../../base/ui/components/web/Button'; diff --git a/react/features/toolbox/components/web/Toolbox.tsx b/react/features/toolbox/components/web/Toolbox.tsx index f365340b39..f3ab8b066d 100644 --- a/react/features/toolbox/components/web/Toolbox.tsx +++ b/react/features/toolbox/components/web/Toolbox.tsx @@ -9,12 +9,12 @@ import keyboardShortcut from '../../../../../modules/keyboardshortcut/keyboardsh import { ACTION_SHORTCUT_TRIGGERED, createShortcutEvent, createToolbarEvent } from '../../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../../analytics/functions'; import { IState } from '../../../app/types'; -// @ts-ignore -import { getMultipleVideoSendingSupportFeatureFlag, getToolbarButtons } from '../../../base/config'; -// @ts-ignore -import { isToolbarButtonEnabled } from '../../../base/config/functions.web'; -// @ts-ignore -import { openDialog, toggleDialog } from '../../../base/dialog'; +import { + getMultipleVideoSendingSupportFeatureFlag, + getToolbarButtons, + isToolbarButtonEnabled +} from '../../../base/config/functions.web'; +import { openDialog, toggleDialog } from '../../../base/dialog/actions'; import { isIosMobileBrowser, isMobileBrowser } from '../../../base/environment/utils'; import { translate } from '../../../base/i18n/functions'; import JitsiMeetJS from '../../../base/lib-jitsi-meet'; @@ -26,12 +26,10 @@ import { hasRaisedHand } from '../../../base/participants/functions'; import { connect } from '../../../base/redux/functions'; -// @ts-ignore -import { getLocalVideoTrack } from '../../../base/tracks'; +import { getLocalVideoTrack } from '../../../base/tracks/functions'; import ContextMenu from '../../../base/ui/components/web/ContextMenu'; import ContextMenuItemGroup from '../../../base/ui/components/web/ContextMenuItemGroup'; -// @ts-ignore -import { toggleChat } from '../../../chat'; +import { toggleChat } from '../../../chat/actions.web'; // @ts-ignore import { ChatButton } from '../../../chat/components'; // @ts-ignore @@ -40,13 +38,10 @@ import { EmbedMeetingButton } from '../../../embed-meeting'; import { SharedDocumentButton } from '../../../etherpad'; // @ts-ignore import { FeedbackButton } from '../../../feedback'; -// @ts-ignore import { setGifMenuVisibility } from '../../../gifs/actions'; -// @ts-ignore import { isGifEnabled } from '../../../gifs/functions'; // @ts-ignore import { InviteButton } from '../../../invite/components/add-people-dialog'; -// @ts-ignore import { isVpaasMeeting } from '../../../jaas/functions'; // @ts-ignore import { KeyboardShortcutsButton } from '../../../keyboard-shortcuts'; @@ -58,7 +53,6 @@ import { } from '../../../participants-pane/actions'; // @ts-ignore import { ParticipantsPaneButton } from '../../../participants-pane/components/web'; -// @ts-ignore import { getParticipantsPaneOpen } from '../../../participants-pane/functions'; import { addReactionToBuffer } from '../../../reactions/actions.any'; import { toggleReactionsMenuVisibility } from '../../../reactions/actions.web'; diff --git a/react/features/video-menu/components/web/FakeParticipantContextMenu.tsx b/react/features/video-menu/components/web/FakeParticipantContextMenu.tsx index 3cd85cb091..0503482f3f 100644 --- a/react/features/video-menu/components/web/FakeParticipantContextMenu.tsx +++ b/react/features/video-menu/components/web/FakeParticipantContextMenu.tsx @@ -15,9 +15,7 @@ import ContextMenu from '../../../base/ui/components/web/ContextMenu'; import ContextMenuItemGroup from '../../../base/ui/components/web/ContextMenuItemGroup'; // @ts-ignore import { stopSharedVideo } from '../../../shared-video/actions.any'; -// @ts-ignore import { showOverflowDrawer } from '../../../toolbox/functions.web'; -// @ts-ignore import { setWhiteboardOpen } from '../../../whiteboard/actions'; import { WHITEBOARD_ID } from '../../../whiteboard/constants'; diff --git a/react/features/video-menu/components/web/LocalVideoMenuTriggerButton.tsx b/react/features/video-menu/components/web/LocalVideoMenuTriggerButton.tsx index c52ce112f0..ace98bca2a 100644 --- a/react/features/video-menu/components/web/LocalVideoMenuTriggerButton.tsx +++ b/react/features/video-menu/components/web/LocalVideoMenuTriggerButton.tsx @@ -2,23 +2,18 @@ import { withStyles } from '@mui/styles'; import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import { batch } from 'react-redux'; +import { batch, connect } from 'react-redux'; import { IState } from '../../../app/types'; import { isMobileBrowser } from '../../../base/environment/utils'; -// @ts-ignore -import { translate } from '../../../base/i18n'; +import { translate } from '../../../base/i18n/functions'; import { IconHorizontalPoints } from '../../../base/icons/svg'; import { getLocalParticipant } from '../../../base/participants/functions'; // @ts-ignore import { Popover } from '../../../base/popover'; -import { connect } from '../../../base/redux/functions'; -// @ts-ignore import { setParticipantContextMenuOpen } from '../../../base/responsive-ui/actions'; -// @ts-ignore -import { getHideSelfView } from '../../../base/settings'; -// @ts-ignore -import { getLocalVideoTrack } from '../../../base/tracks'; +import { getHideSelfView } from '../../../base/settings/functions.web'; +import { getLocalVideoTrack } from '../../../base/tracks/functions'; import Button from '../../../base/ui/components/web/Button'; import ContextMenu from '../../../base/ui/components/web/ContextMenu'; import ContextMenuItemGroup from '../../../base/ui/components/web/ContextMenuItemGroup'; @@ -303,8 +298,8 @@ function _mapStateToProps(state: IState, ownProps: Partial) { _showLocalVideoFlipButton: !disableLocalVideoFlip && videoTrack?.videoType !== 'desktop', _showHideSelfViewButton: showHideSelfViewButton, _overflowDrawer: overflowDrawer, - _localParticipantId: localParticipant?.id, - _showConnectionInfo: showConnectionInfo, + _localParticipantId: localParticipant?.id ?? '', + _showConnectionInfo: Boolean(showConnectionInfo), _showPinToStage: isStageFilmstripAvailable(state) }; } diff --git a/react/features/video-menu/components/web/ParticipantContextMenu.tsx b/react/features/video-menu/components/web/ParticipantContextMenu.tsx index 9743f9f11f..858dd2638e 100644 --- a/react/features/video-menu/components/web/ParticipantContextMenu.tsx +++ b/react/features/video-menu/components/web/ParticipantContextMenu.tsx @@ -7,7 +7,6 @@ import { useDispatch, useSelector } from 'react-redux'; import { makeStyles } from 'tss-react/mui'; import { IState } from '../../../app/types'; -// @ts-ignore import { isSupported as isAvModerationSupported } from '../../../av-moderation/functions'; // @ts-ignore import { Avatar } from '../../../base/avatar'; @@ -16,11 +15,9 @@ import { MEDIA_TYPE } from '../../../base/media/constants'; import { PARTICIPANT_ROLE } from '../../../base/participants/constants'; import { getLocalParticipant } from '../../../base/participants/functions'; import { Participant } from '../../../base/participants/types'; -// @ts-ignore -import { isParticipantAudioMuted } from '../../../base/tracks'; +import { isParticipantAudioMuted } from '../../../base/tracks/functions'; import ContextMenu from '../../../base/ui/components/web/ContextMenu'; import ContextMenuItemGroup from '../../../base/ui/components/web/ContextMenuItemGroup'; -// @ts-ignore import { getBreakoutRooms, getCurrentRoomId, isInBreakoutRoom } from '../../../breakout-rooms/functions'; // @ts-ignore import { setVolume } from '../../../filmstrip/actions.web'; @@ -29,7 +26,6 @@ import { isStageFilmstripAvailable } from '../../../filmstrip/functions.web'; import { isForceMuted } from '../../../participants-pane/functions'; // @ts-ignore import { requestRemoteControl, stopController } from '../../../remote-control'; -// @ts-ignore import { showOverflowDrawer } from '../../../toolbox/functions.web'; // @ts-ignore @@ -146,7 +142,7 @@ const ParticipantContextMenu = ({ isForceMuted(participant, MEDIA_TYPE.AUDIO, state)); const _isVideoForceMuted = useSelector(state => isForceMuted(participant, MEDIA_TYPE.VIDEO, state)); - const _isAudioMuted = useSelector(state => isParticipantAudioMuted(participant, state)); + const _isAudioMuted = useSelector((state: IState) => isParticipantAudioMuted(participant, state)); const _overflowDrawer: boolean = useSelector(showOverflowDrawer); const { remoteVideoMenu = {}, disableRemoteMute, startSilent } = useSelector((state: IState) => state['features/base/config']); diff --git a/react/features/video-menu/components/web/RemoteVideoMenuTriggerButton.tsx b/react/features/video-menu/components/web/RemoteVideoMenuTriggerButton.tsx index 9ea0b278b3..88c6e71bcd 100644 --- a/react/features/video-menu/components/web/RemoteVideoMenuTriggerButton.tsx +++ b/react/features/video-menu/components/web/RemoteVideoMenuTriggerButton.tsx @@ -2,19 +2,16 @@ import { withStyles } from '@mui/styles'; import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import { batch } from 'react-redux'; +import { batch, connect } from 'react-redux'; import { IState } from '../../../app/types'; import { isMobileBrowser } from '../../../base/environment/utils'; -// @ts-ignore -import { translate } from '../../../base/i18n'; +import { translate } from '../../../base/i18n/functions'; import { IconHorizontalPoints } from '../../../base/icons/svg'; import { getLocalParticipant, getParticipantById } from '../../../base/participants/functions'; import { Participant } from '../../../base/participants/types'; // @ts-ignore import { Popover } from '../../../base/popover'; -import { connect } from '../../../base/redux/functions'; -// @ts-ignore import { setParticipantContextMenuOpen } from '../../../base/responsive-ui/actions'; import Button from '../../../base/ui/components/web/Button'; import ConnectionIndicatorContent from @@ -318,14 +315,14 @@ function _mapStateToProps(state: IState, ownProps: Partial) { } return { - _disabled: remoteVideoMenu?.disabled, + _disabled: Boolean(remoteVideoMenu?.disabled), _localVideoOwner: Boolean(ownerId === localParticipantId), _menuPosition, _overflowDrawer: overflowDrawer, _participant: participant ?? { id: '' }, _participantDisplayName: _participantDisplayName ?? '', _remoteControlState, - _showConnectionInfo: showConnectionInfo + _showConnectionInfo: Boolean(showConnectionInfo) }; } diff --git a/react/features/video-menu/components/web/VolumeSlider.tsx b/react/features/video-menu/components/web/VolumeSlider.tsx index 8b789922f0..ef9935eedb 100644 --- a/react/features/video-menu/components/web/VolumeSlider.tsx +++ b/react/features/video-menu/components/web/VolumeSlider.tsx @@ -1,4 +1,3 @@ -/* eslint-disable lines-around-comment */ import { Theme } from '@mui/material'; import { withStyles } from '@mui/styles'; import clsx from 'clsx'; diff --git a/react/features/video-quality/components/VideoQualitySlider.web.tsx b/react/features/video-quality/components/VideoQualitySlider.web.tsx index 82a703bdf4..5ceb2aee33 100644 --- a/react/features/video-quality/components/VideoQualitySlider.web.tsx +++ b/react/features/video-quality/components/VideoQualitySlider.web.tsx @@ -1,25 +1,22 @@ -/* eslint-disable lines-around-comment */ import { Theme } from '@mui/material'; import { withStyles } from '@mui/styles'; import clsx from 'clsx'; import React, { Component } from 'react'; import { WithTranslation } from 'react-i18next'; -import type { Dispatch } from 'redux'; import { createToolbarEvent } from '../../analytics/AnalyticsEvents'; import { sendAnalytics } from '../../analytics/functions'; -import { IState } from '../../app/types'; -// @ts-ignore -import { setAudioOnly } from '../../base/audio-only'; +import { IState, IStore } from '../../app/types'; +import { setAudioOnly } from '../../base/audio-only/actions'; import { translate } from '../../base/i18n/functions'; -// @ts-ignore -import { getLastNForQualityLevel, setLastN } from '../../base/lastn'; +import { setLastN } from '../../base/lastn/actions'; +import { getLastNForQualityLevel } from '../../base/lastn/functions'; import { connect } from '../../base/redux/functions'; import { withPixelLineHeight } from '../../base/styles/functions.web'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import { setPreferredVideoQuality } from '../actions'; import { DEFAULT_LAST_N, VIDEO_QUALITY_LEVELS } from '../constants'; -// @ts-ignore import logger from '../logger'; import Slider from './Slider'; @@ -60,7 +57,7 @@ interface Props extends WithTranslation { /** * The channelLastN value configured for the conference. */ - _channelLastN: Number; + _channelLastN: number; /** * Whether or not the conference is in peer to peer mode. @@ -71,7 +68,7 @@ interface Props extends WithTranslation { * The currently configured maximum quality resolution to be sent and * received from the remote participants. */ - _sendrecvVideoQuality: Number; + _sendrecvVideoQuality: number; /** * An object containing the CSS classes. @@ -81,7 +78,7 @@ interface Props extends WithTranslation { /** * Invoked to request toggling of audio only mode. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; } /** @@ -311,8 +308,10 @@ class VideoQualitySlider extends Component { const { // @ts-ignore audioOnly, + // @ts-ignore onSelect, + // @ts-ignore videoQuality } = this._sliderOptions[event.target.value as keyof typeof this._sliderOptions]; diff --git a/react/features/virtual-background/components/UploadImageButton.tsx b/react/features/virtual-background/components/UploadImageButton.tsx index e49d0381ac..e4d0e55329 100644 --- a/react/features/virtual-background/components/UploadImageButton.tsx +++ b/react/features/virtual-background/components/UploadImageButton.tsx @@ -1,5 +1,3 @@ -/* eslint-disable lines-around-comment */ - import { Theme } from '@mui/material'; import React, { useCallback, useRef } from 'react'; import { WithTranslation } from 'react-i18next'; @@ -10,9 +8,7 @@ import { translate } from '../../base/i18n/functions'; import Icon from '../../base/icons/components/Icon'; import { IconPlusCircle } from '../../base/icons/svg'; import { type Image, VIRTUAL_BACKGROUND_TYPE } from '../constants'; -// @ts-ignore import { resizeImage } from '../functions'; -// @ts-ignore import logger from '../logger'; interface Props extends WithTranslation { diff --git a/react/features/virtual-background/components/VirtualBackgroundPreview.tsx b/react/features/virtual-background/components/VirtualBackgroundPreview.tsx index 198fb86c2b..15d38e6f8c 100644 --- a/react/features/virtual-background/components/VirtualBackgroundPreview.tsx +++ b/react/features/virtual-background/components/VirtualBackgroundPreview.tsx @@ -1,28 +1,22 @@ -/* eslint-disable lines-around-comment */ import Spinner from '@atlaskit/spinner'; import { Theme } from '@mui/material'; import { withStyles } from '@mui/styles'; import React, { PureComponent } from 'react'; import { WithTranslation } from 'react-i18next'; +import { connect } from 'react-redux'; import { IState } from '../../app/types'; -// @ts-ignore -import { hideDialog } from '../../base/dialog'; -// @ts-ignore -import { translate } from '../../base/i18n'; +import { hideDialog } from '../../base/dialog/actions'; +import { translate } from '../../base/i18n/functions'; +// eslint-disable-next-line lines-around-comment // @ts-ignore import Video from '../../base/media/components/Video'; -import { connect, equals } from '../../base/redux/functions'; -// @ts-ignore -import { getCurrentCameraDeviceId } from '../../base/settings'; -// @ts-ignore +import { equals } from '../../base/redux/functions'; +import { getCurrentCameraDeviceId } from '../../base/settings/functions.web'; import { createLocalTracksF } from '../../base/tracks/functions'; -// @ts-ignore import { showWarningNotification } from '../../notifications/actions'; import { NOTIFICATION_TIMEOUT_TYPE } from '../../notifications/constants'; -// @ts-ignore import { toggleBackgroundEffect } from '../actions'; -// @ts-ignore import logger from '../logger'; const videoClassName = 'video-preview-video'; @@ -227,6 +221,7 @@ class VirtualBackgroundPreview extends PureComponent { return (
{ * @private * @returns {{Props}} */ -function _mapStateToProps(state: IState): Object { +function _mapStateToProps(state: IState) { return { _currentCameraDeviceId: getCurrentCameraDeviceId(state) }; diff --git a/react/features/whiteboard/components/web/Whiteboard.tsx b/react/features/whiteboard/components/web/Whiteboard.tsx index 5cce472ca7..3f849c3d15 100644 --- a/react/features/whiteboard/components/web/Whiteboard.tsx +++ b/react/features/whiteboard/components/web/Whiteboard.tsx @@ -1,28 +1,26 @@ -/* eslint-disable import/order */ /* eslint-disable lines-around-comment */ - import { ExcalidrawApp } from '@jitsi/excalidraw'; +import clsx from 'clsx'; import React, { useCallback, useEffect, useRef } from 'react'; import { useSelector } from 'react-redux'; -import clsx from 'clsx'; // @ts-ignore import Filmstrip from '../../../../../modules/UI/videolayout/Filmstrip'; +import { IState } from '../../../app/types'; +import { getLocalParticipant } from '../../../base/participants/functions'; // @ts-ignore import { getVerticalViewMaxWidth } from '../../../filmstrip/functions.web'; // @ts-ignore import { getToolboxHeight } from '../../../toolbox/functions.web'; +// @ts-ignore +import { shouldDisplayTileView } from '../../../video-layout/functions.any'; +import { WHITEBOARD_UI_OPTIONS } from '../../constants'; import { getCollabDetails, getCollabServerUrl, isWhiteboardOpen, isWhiteboardVisible } from '../../functions'; -// @ts-ignore -import { shouldDisplayTileView } from '../../../video-layout/functions.any'; -import { getLocalParticipant } from '../../../base/participants/functions'; -import { WHITEBOARD_UI_OPTIONS } from '../../constants'; -import { IState } from '../../../app/types'; /** * Space taken by meeting elements like the subject and the watermark. diff --git a/react/features/whiteboard/components/web/WhiteboardButton.tsx b/react/features/whiteboard/components/web/WhiteboardButton.tsx index 57bf726a12..7f04f0a679 100644 --- a/react/features/whiteboard/components/web/WhiteboardButton.tsx +++ b/react/features/whiteboard/components/web/WhiteboardButton.tsx @@ -1,17 +1,10 @@ -/* eslint-disable import/order */ -import type { Dispatch } from 'redux'; -import { IState } from '../../../app/types'; - -// @ts-ignore -import { translate } from '../../../base/i18n'; +/* eslint-disable lines-around-comment */ +import { IState, IStore } from '../../../app/types'; +import { translate } from '../../../base/i18n/functions'; import { IconHideWhiteboard, IconShowWhiteboard } from '../../../base/icons/svg'; - -// @ts-ignore -import { connect } from '../../../base/redux'; - +import { connect } from '../../../base/redux/functions'; // @ts-ignore import { AbstractButton, type AbstractButtonProps } from '../../../base/toolbox/components'; - // @ts-ignore import { setOverflowMenuVisible } from '../../../toolbox/actions.web'; import { setWhiteboardOpen } from '../../actions'; @@ -28,7 +21,7 @@ type Props = AbstractButtonProps & { /** * The redux {@code dispatch} function. */ - dispatch: Dispatch; + dispatch: IStore['dispatch']; }; /** diff --git a/react/features/whiteboard/functions.ts b/react/features/whiteboard/functions.ts index 697e26c68f..07de0484a8 100644 --- a/react/features/whiteboard/functions.ts +++ b/react/features/whiteboard/functions.ts @@ -1,14 +1,10 @@ -/* eslint-disable import/order */ import md5 from 'js-md5'; -// @ts-ignore -import { getPinnedParticipant } from '../../features/base/participants'; +import { getPinnedParticipant } from '../../features/base/participants/functions'; import { IState } from '../app/types'; import { getCurrentConference } from '../base/conference/functions'; import { getRemoteParticipants, isLocalParticipantModerator } from '../base/participants/functions'; import { appendURLParam } from '../base/util/uri'; - -// @ts-ignore import { getCurrentRoomId, isInBreakoutRoom } from '../breakout-rooms/functions'; import { WHITEBOARD_ID } from './constants'; diff --git a/react/features/whiteboard/middleware.ts b/react/features/whiteboard/middleware.ts index abf0fd58b5..58b4fe0dd3 100644 --- a/react/features/whiteboard/middleware.ts +++ b/react/features/whiteboard/middleware.ts @@ -1,26 +1,22 @@ -/* eslint-disable import/order */ +/* eslint-disable lines-around-comment */ import { generateCollaborationLinkData } from '@jitsi/excalidraw'; + import { IStore } from '../app/types'; - -import { participantJoined, participantLeft, pinParticipant } from '../base/participants/actions'; - -// @ts-ignore import { getCurrentConference } from '../base/conference/functions'; - -// @ts-ignore -import { MiddlewareRegistry, StateListenerRegistry } from '../base/redux'; -import { RESET_WHITEBOARD, SET_WHITEBOARD_OPEN } from './actionTypes'; -import { getCollabDetails, getCollabServerUrl, isWhiteboardPresent } from './functions'; -import { WHITEBOARD_ID, WHITEBOARD_PARTICIPANT_NAME } from './constants'; -import { resetWhiteboard, setWhiteboardOpen, setupWhiteboard } from './actions'; - +import { JitsiConferenceEvents } from '../base/lib-jitsi-meet'; +import { participantJoined, participantLeft, pinParticipant } from '../base/participants/actions'; +import { FakeParticipant } from '../base/participants/types'; +import MiddlewareRegistry from '../base/redux/MiddlewareRegistry'; +import StateListenerRegistry from '../base/redux/StateListenerRegistry'; // @ts-ignore import { addStageParticipant } from '../filmstrip/actions.web'; - // @ts-ignore import { isStageFilmstripAvailable } from '../filmstrip/functions'; -import { JitsiConferenceEvents } from '../base/lib-jitsi-meet'; -import { FakeParticipant } from '../base/participants/types'; + +import { RESET_WHITEBOARD, SET_WHITEBOARD_OPEN } from './actionTypes'; +import { resetWhiteboard, setWhiteboardOpen, setupWhiteboard } from './actions'; +import { WHITEBOARD_ID, WHITEBOARD_PARTICIPANT_NAME } from './constants'; +import { getCollabDetails, getCollabServerUrl, isWhiteboardPresent } from './functions'; const focusWhiteboard = (store: IStore) => { const { dispatch, getState } = store;