restrict searching until federated name set

This commit is contained in:
Roland Osborne 2024-05-03 22:38:41 -07:00
parent b3ad138fa3
commit 948009558c
5 changed files with 22 additions and 7 deletions

View File

@ -138,6 +138,7 @@ function ContactStackScreen({ addChannel }) {
const [contact, setContact] = useState(null);
const [editable, setEditable] = useState(false);
const [search, setSearch] = useState(null);
const [handle, setHandle] = useState();
const [server, setServer] = useState();
@ -147,6 +148,12 @@ function ContactStackScreen({ addChannel }) {
navigation.navigate('contact')
}
const openRegistry = (navigation) => {
if (profile.state.identity?.node) {
setEditable(true);
}
else {
setEditable(false);
}
setServer(profile.state.server);
setHandle(null);
setSearch(false);
@ -166,7 +173,7 @@ function ContactStackScreen({ addChannel }) {
</ContactStack.Screen>
<ContactStack.Screen name="registry" options={{ ...stackParams, cardStyle: {backgroundColor: Colors.screenBase}, headerTitle: (props) => (
<RegistryHeader search={search} setSearch={setSearch} handle={handle} setHandle={setHandle} server={server} setServer={setServer} />
<RegistryHeader search={search} editable={editable} setSearch={setSearch} handle={handle} setHandle={setHandle} server={server} setServer={setServer} />
)}}>
{(props) => <RegistryBody search={search} handle={handle} server={server} openContact={(contact) => openContact(props.navigation, contact)} />}
</ContactStack.Screen>

View File

@ -45,7 +45,7 @@ export function useCards() {
cardId: cardId,
name: name,
handle: handle,
username: `${handle}/${node}`,
username: node ? `${handle}/${node}` : handle,
node: node,
guid: guid,
location: location,

View File

@ -25,7 +25,8 @@ export function useAddMember(item, members) {
useEffect(() => {
const { cardId, revision, profile } = item;
const { name, handle, node } = profile;
updateState({ cardId, name, handle: `${handle}/${node}`,
const username = node ? `${handle}/${node}` : handle;
updateState({ cardId, name, handle: username,
logo: profile.imageSet ? card.actions.getCardImageUrl(cardId) : 'avatar' });
}, [card.state]);

View File

@ -7,12 +7,12 @@ import { ProfileContext } from 'context/ProfileContext';
import Colors from 'constants/Colors';
import Ionicons from 'react-native-vector-icons/AntDesign';
export function RegistryHeader({ search, setSearch, handle, setHandle, server, setServer }) {
export function RegistryHeader({ search, setSearch, handle, setHandle, server, setServer, editable }) {
return (
<View style={styles.title}>
<View style={styles.inputwrapper}>
<TextInput style={styles.inputfield} value={server} onChangeText={setServer}
<TextInput style={styles.inputfield} value={server} onChangeText={setServer} editable={editable}
autoCorrect={false} autoCapitalize="none" placeholderTextColor={Colors.disabled} placeholder="Server" />
</View>
{ !search && (
@ -60,9 +60,16 @@ export function Registry({ closeRegistry, openContact }) {
const [search, setSearch] = useState(false);
const [handle, setHandle] = useState();
const [server, setServer] = useState();
const [editable, setEditable] = useState(false);
const profile = useContext(ProfileContext);
useEffect(() => {
if (profile.state.identity?.node) {
setEditable(true);
}
else {
setEditable(false);
}
setSearch(false);
setHandle(null);
setServer(profile.state.server);
@ -71,7 +78,7 @@ export function Registry({ closeRegistry, openContact }) {
return (
<View>
<View style={styles.header}>
<RegistryHeader search={search} setSearch={setSearch} handle={handle} setHandle={setHandle} server={server} setServer={setServer} />
<RegistryHeader search={search} editable={editable} setSearch={setSearch} handle={handle} setHandle={setHandle} server={server} setServer={setServer} />
</View>
<RegistryBody search={search} handle={handle} server={server} openContact={openContact} />
</View>

View File

@ -47,7 +47,7 @@ export function useRegistry(search, handle, server) {
const { guid, name, handle, node, location, description, imageSet } = item;
const server = node ? node : profile.state.server;
const logo = imageSet ? getListingImageUrl(server, guid) : 'avatar';
const username = `${handle}/${node}`;
const username = node ? `${handle}/${node}` : handle;
return { guid, name, handle, username, node: server, location, description, guid, imageSet, logo };
};