From 1fdce52948e4265710dbad126dfb6e16a86f0c1a Mon Sep 17 00:00:00 2001 From: Ilya Petrosyan Date: Fri, 10 Jun 2022 17:30:22 +0300 Subject: [PATCH 1/2] Show error , when user trying connect with wrong confId --- .../src/Core/Store/conference/reducer.ts | 4 ++++ ConferenceDemo/src/Screens/Main/index.tsx | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ConferenceDemo/src/Core/Store/conference/reducer.ts b/ConferenceDemo/src/Core/Store/conference/reducer.ts index ef5a310..002d383 100644 --- a/ConferenceDemo/src/Core/Store/conference/reducer.ts +++ b/ConferenceDemo/src/Core/Store/conference/reducer.ts @@ -7,6 +7,7 @@ import { IParticipant, IReduxAction, } from '../../../Utils/types'; +import {globalActions} from '../global/actionTypes'; import {conferenceActions} from './actionTypes'; export interface IConferenceReducer { @@ -35,6 +36,9 @@ const conferenceReducer = ( ): IConferenceReducer => { const {type, payload} = action; switch (type) { + case globalActions.CLEAR_ERRORS: { + return {...state, error: ''}; + } case conferenceActions.TOGGLE_MUTE: { return {...state, isMuted: !state.isMuted}; } diff --git a/ConferenceDemo/src/Screens/Main/index.tsx b/ConferenceDemo/src/Screens/Main/index.tsx index ecd7ba0..0178124 100644 --- a/ConferenceDemo/src/Screens/Main/index.tsx +++ b/ConferenceDemo/src/Screens/Main/index.tsx @@ -5,7 +5,7 @@ import React, {useEffect, useState} from 'react'; import {View, StatusBar} from 'react-native'; import {SafeAreaView} from 'react-native-safe-area-context'; -import {useDispatch} from 'react-redux'; +import {useDispatch, useSelector} from 'react-redux'; import CustomInput from '../../Components/CustomInput'; import CustomButton from '../../Components/CustomButton'; @@ -19,11 +19,16 @@ import { changeCallState, toggleSendVideo, } from '../../Core/Store/conference/actions'; +import {clearErrors} from '../../Core/Store/global/actions'; +import {RootReducer} from '../../Core/Store'; import styles from './styles'; const MainScreen = ({navigation}: IScreenProps<'Main'>) => { const dispatch = useDispatch(); + const error = useSelector( + (store: RootReducer) => store.conferenceReducer.error, + ); const { isIOS, isAndroid, @@ -35,7 +40,8 @@ const MainScreen = ({navigation}: IScreenProps<'Main'>) => { const [validationText, setValidationText] = useState(''); useEffect(() => { - setValidationText(''); + validationText && setValidationText(''); + error && dispatch(clearErrors()); }, [conference]); const startConference = async (withVideo?: boolean) => { @@ -55,7 +61,7 @@ const MainScreen = ({navigation}: IScreenProps<'Main'>) => { resultVideo = await checkAndroidCameraPermission(); !resultVideo && dispatch(toggleSendVideo()); } - } catch (error) { + } catch (_) { console.warn('Something was wrong with android permissions...'); } } @@ -76,7 +82,7 @@ const MainScreen = ({navigation}: IScreenProps<'Main'>) => { value={conference} placeholder={'Type conference name here'} setValue={setConference} - validationText={validationText} + validationText={validationText || error} /> Date: Fri, 10 Jun 2022 18:05:43 +0300 Subject: [PATCH 2/2] Push error with empty conference room to state --- ConferenceDemo/src/Screens/Main/index.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ConferenceDemo/src/Screens/Main/index.tsx b/ConferenceDemo/src/Screens/Main/index.tsx index 0178124..c376135 100644 --- a/ConferenceDemo/src/Screens/Main/index.tsx +++ b/ConferenceDemo/src/Screens/Main/index.tsx @@ -18,6 +18,7 @@ import {useUtils} from '../../Utils/useUtils'; import { changeCallState, toggleSendVideo, + setError, } from '../../Core/Store/conference/actions'; import {clearErrors} from '../../Core/Store/global/actions'; import {RootReducer} from '../../Core/Store'; @@ -37,16 +38,14 @@ const MainScreen = ({navigation}: IScreenProps<'Main'>) => { } = useUtils(); const [conference, setConference] = useState(''); - const [validationText, setValidationText] = useState(''); useEffect(() => { - validationText && setValidationText(''); error && dispatch(clearErrors()); }, [conference]); const startConference = async (withVideo?: boolean) => { if (!conference) { - setValidationText('Name cannot be empty'); + dispatch(setError('Room cannot be empty')); return; } if (withVideo) { @@ -82,7 +81,7 @@ const MainScreen = ({navigation}: IScreenProps<'Main'>) => { value={conference} placeholder={'Type conference name here'} setValue={setConference} - validationText={validationText || error} + validationText={error} />