Enforce limits on create scene as well
parent
4a0b79da4a
commit
4a2170be49
|
@ -4,7 +4,6 @@ import {
|
|||
ActivityIndicator,
|
||||
StyleSheet,
|
||||
Text,
|
||||
TextInput,
|
||||
TouchableOpacity,
|
||||
View,
|
||||
} from 'react-native'
|
||||
|
@ -13,7 +12,13 @@ import {BottomSheetScrollView, BottomSheetTextInput} from '@gorhom/bottom-sheet'
|
|||
import {ErrorMessage} from '../util/ErrorMessage'
|
||||
import {useStores} from '../../../state'
|
||||
import {s, colors, gradients} from '../../lib/styles'
|
||||
import {makeValidHandle, createFullHandle} from '../../lib/strings'
|
||||
import {
|
||||
makeValidHandle,
|
||||
createFullHandle,
|
||||
enforceLen,
|
||||
MAX_DISPLAY_NAME,
|
||||
MAX_DESCRIPTION,
|
||||
} from '../../lib/strings'
|
||||
import {AppBskyActorCreateScene} from '../../../third-party/api/index'
|
||||
|
||||
export const snapPoints = ['60%']
|
||||
|
@ -102,6 +107,7 @@ export function Component({}: {}) {
|
|||
<BottomSheetTextInput
|
||||
style={styles.textInput}
|
||||
placeholder="e.g. alices-friends"
|
||||
autoCorrect={false}
|
||||
value={handle}
|
||||
onChangeText={str => setHandle(makeValidHandle(str))}
|
||||
/>
|
||||
|
@ -112,7 +118,9 @@ export function Component({}: {}) {
|
|||
style={styles.textInput}
|
||||
placeholder="e.g. Alice's Friends"
|
||||
value={displayName}
|
||||
onChangeText={setDisplayName}
|
||||
onChangeText={v =>
|
||||
setDisplayName(enforceLen(v, MAX_DISPLAY_NAME))
|
||||
}
|
||||
/>
|
||||
</View>
|
||||
<View style={styles.group}>
|
||||
|
@ -122,7 +130,7 @@ export function Component({}: {}) {
|
|||
placeholder="e.g. Artists, dog-lovers, and memelords."
|
||||
multiline
|
||||
value={description}
|
||||
onChangeText={setDescription}
|
||||
onChangeText={v => setDescription(enforceLen(v, MAX_DESCRIPTION))}
|
||||
/>
|
||||
</View>
|
||||
{error !== '' && (
|
||||
|
|
|
@ -6,6 +6,7 @@ import {ErrorMessage} from '../util/ErrorMessage'
|
|||
import {useStores} from '../../../state'
|
||||
import {ProfileViewModel} from '../../../state/models/profile-view'
|
||||
import {s, colors, gradients} from '../../lib/styles'
|
||||
import {enforceLen, MAX_DISPLAY_NAME, MAX_DESCRIPTION} from '../../lib/strings'
|
||||
import * as Profile from '../../../third-party/api/src/client/types/app/bsky/actor/profile'
|
||||
|
||||
export const snapPoints = ['80%']
|
||||
|
@ -64,7 +65,7 @@ export function Component({profileView}: {profileView: ProfileViewModel}) {
|
|||
style={styles.textInput}
|
||||
placeholder="e.g. Alice Roberts"
|
||||
value={displayName}
|
||||
onChangeText={setDisplayName}
|
||||
onChangeText={v => setDisplayName(enforceLen(v, MAX_DISPLAY_NAME))}
|
||||
/>
|
||||
</View>
|
||||
<View style={styles.group}>
|
||||
|
@ -74,7 +75,7 @@ export function Component({profileView}: {profileView: ProfileViewModel}) {
|
|||
placeholder="e.g. Artist, dog-lover, and memelord."
|
||||
multiline
|
||||
value={description}
|
||||
onChangeText={setDescription}
|
||||
onChangeText={v => setDescription(enforceLen(v, MAX_DESCRIPTION))}
|
||||
/>
|
||||
</View>
|
||||
<TouchableOpacity style={s.mt10} onPress={onPressSave}>
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
import {AtUri} from '../../third-party/uri'
|
||||
import {Entity} from '../../third-party/api/src/client/types/app/bsky/feed/post'
|
||||
|
||||
export const MAX_DISPLAY_NAME = 64
|
||||
export const MAX_DESCRIPTION = 256
|
||||
|
||||
export function pluralize(n: number, base: string, plural?: string): string {
|
||||
if (n === 1) {
|
||||
return base
|
||||
|
@ -85,3 +88,11 @@ export function createFullHandle(name: string, domain: string): string {
|
|||
domain = domain.replace(/^[\.]+/, '')
|
||||
return `${name}.${domain}`
|
||||
}
|
||||
|
||||
export function enforceLen(str: string, len: number): string {
|
||||
str = str || ''
|
||||
if (str.length > len) {
|
||||
return str.slice(0, len)
|
||||
}
|
||||
return str
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue