From 5396f8a568e2a17242656d7fa6fc592c082c0c65 Mon Sep 17 00:00:00 2001 From: talksik Date: Mon, 30 May 2022 07:19:26 -0500 Subject: [PATCH] user row but autocomplete stop working --- .../src/components/NewConversationDialog.tsx | 26 ++++++++++-- .../src/subcomponents/UserDetailRow.tsx | 40 +++++++++++++++++++ .../desktop/src/subcomponents/UserRow.tsx | 0 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 packages/desktop/src/subcomponents/UserDetailRow.tsx delete mode 100644 packages/desktop/src/subcomponents/UserRow.tsx diff --git a/packages/desktop/src/components/NewConversationDialog.tsx b/packages/desktop/src/components/NewConversationDialog.tsx index c5f59f1..45d5117 100644 --- a/packages/desktop/src/components/NewConversationDialog.tsx +++ b/packages/desktop/src/components/NewConversationDialog.tsx @@ -1,6 +1,7 @@ import React, { HTMLAttributes, useCallback, useState } from 'react'; import { Autocomplete, + AutocompleteChangeReason, AutocompleteRenderOptionState, Button, Container, @@ -23,6 +24,7 @@ import { useDebounce } from 'react-use'; import { searchUsers } from '../firebase/firestore'; import { User } from '@nirvana/core/src/models/user.model'; import useAuth from '../providers/AuthProvider'; +import UserDetailRow from '../subcomponents/UserDetailRow'; export default function NewConversationDialog({ open, @@ -40,9 +42,24 @@ export default function NewConversationDialog({ const [selectedUsers, setSelectedUsers] = useState([]); - const handleSelectUser = useCallback((event, newValue: User[]) => { - setSelectedUsers(newValue); - }, []); + const handleChangeSelections = useCallback( + (e: React.SyntheticEvent, value: User[], reason: AutocompleteChangeReason) => { + const newUsers: User[] = []; + + value.forEach((val) => { + if (typeof val !== 'string') return; + + newUsers.push(val); + }); + + console.log(value); + + console.log(newUsers); + + setSelectedUsers(newUsers); + }, + [], + ); const [, cancel] = useDebounce( async () => { @@ -83,7 +100,7 @@ export default function NewConversationDialog({ const renderOption = useCallback( (props: HTMLAttributes, option: User, state: AutocompleteRenderOptionState) => ( - {option.email} + ), [], @@ -127,6 +144,7 @@ export default function NewConversationDialog({ renderOption={renderOption} getOptionLabel={(option) => (typeof option === 'string' ? option : option.displayName)} value={selectedUsers} + onChange={handleChangeSelections} filterSelectedOptions filterOptions={(options) => options} inputValue={searchVal} diff --git a/packages/desktop/src/subcomponents/UserDetailRow.tsx b/packages/desktop/src/subcomponents/UserDetailRow.tsx new file mode 100644 index 0000000..91ae743 --- /dev/null +++ b/packages/desktop/src/subcomponents/UserDetailRow.tsx @@ -0,0 +1,40 @@ +import React from 'react'; + +import { Avatar, Box, Stack, Typography } from '@mui/material'; +import { User } from '@nirvana/core/src/models/user.model'; + +export default function UserDetailRow({ + user, + rightContent, +}: { + user: User; + rightContent?: React.ReactNode; +}) { + return ( + + + + + + {user.displayName} + + {user.email} + + + + {rightContent} + + + ); +} diff --git a/packages/desktop/src/subcomponents/UserRow.tsx b/packages/desktop/src/subcomponents/UserRow.tsx deleted file mode 100644 index e69de29..0000000