import { StackNavigationOptions } from '@react-navigation/stack'; import React from 'react'; import { TextInputProps, View } from 'react-native'; import RNPickerSelect from 'react-native-picker-select'; import { connect } from 'react-redux'; import { inviteLinksCreate, inviteLinksSetParams } from '../../actions/inviteLinks'; import { themes } from '../../lib/constants'; import Button from '../../containers/Button'; import * as List from '../../containers/List'; import SafeAreaView from '../../containers/SafeAreaView'; import StatusBar from '../../containers/StatusBar'; import { IApplicationState, IBaseScreen } from '../../definitions'; import I18n from '../../i18n'; import { ChatsStackParamList } from '../../stacks/types'; import { withTheme } from '../../theme'; import { events, logEvent } from '../../utils/log'; import styles from './styles'; const OPTIONS = { days: [ { label: '1', value: 1 }, { label: '7', value: 7 }, { label: '15', value: 15 }, { label: '30', value: 30 } ], maxUses: [ { label: '1', value: 1 }, { label: '5', value: 5 }, { label: '10', value: 10 }, { label: '25', value: 25 }, { label: '50', value: 50 }, { label: '100', value: 100 } ] }; interface IInviteUsersEditViewProps extends IBaseScreen { days: number; maxUses: number; } class InviteUsersEditView extends React.Component { static navigationOptions = (): StackNavigationOptions => ({ title: I18n.t('Invite_users') }); private rid: string; constructor(props: IInviteUsersEditViewProps) { super(props); this.rid = props.route.params?.rid; } onValueChangePicker = (key: string, value: number) => { const { dispatch } = this.props; logEvent(events.IU_EDIT_SET_LINK_PARAM); const params = { [key]: value }; dispatch(inviteLinksSetParams(params)); }; createInviteLink = () => { const { dispatch, navigation } = this.props; logEvent(events.IU_EDIT_CREATE_LINK); dispatch(inviteLinksCreate(this.rid)); navigation.pop(); }; renderPicker = (key: 'days' | 'maxUses', first: string) => { const { props } = this; const { theme } = props; const textInputStyle: TextInputProps = { style: { ...styles.pickerText, color: themes[theme].actionTintColor } }; const firstEl = [ { label: I18n.t(first), value: 0 } ]; return ( this.onValueChangePicker(key, value)} items={firstEl.concat(OPTIONS[key])} /> ); }; render() { const { theme } = this.props; return ( this.renderPicker('days', 'Never')} /> this.renderPicker('maxUses', 'No_limit')} />