Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3719 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3719 stevensc 1
import React, { useEffect, useState } from 'react';
2
import { Box } from '@mui/material';
3
 
4
import { useDebounce } from '@hooks';
5
import { useAlert, useApi } from '@shared/hooks';
6
import { searchUsers } from '@shared/services';
7
 
8
import { List, ListItem, SearchBar, Spinner } from '@shared/components';
9
 
3736 stevensc 10
export const SearchUserModal = ({ onSelect = () => {}, renderAction }) => {
3719 stevensc 11
  const [search, setSearch] = useState('');
12
  const debouncedSearch = useDebounce(search, 500);
13
 
14
  const { showError } = useAlert();
15
 
16
  const { data, loading, execute } = useApi(searchUsers, {
17
    onError: (error) => showError(error.message)
18
  });
19
 
3736 stevensc 20
  console.log({ renderAction });
21
 
3719 stevensc 22
  useEffect(() => {
23
    execute(debouncedSearch);
24
  }, [debouncedSearch]);
25
 
26
  return (
27
    <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
28
      <SearchBar
29
        label='Busca un usuario'
30
        placeholder='Escribe el nombre del usuario'
31
        onChange={setSearch}
32
        value={search}
33
      />
34
      {loading ? (
35
        <Spinner />
36
      ) : (
37
        <List
38
          items={data?.current?.items ?? []}
39
          keyExtractor={(item) => item.uuid}
40
          renderItem={(item) => (
3736 stevensc 41
            <ListItem
42
              title={item.name}
43
              image={item.image}
44
              onClick={() => onSelect(item)}
45
              renderAction={renderAction ? () => renderAction(item) : undefined}
46
            />
3719 stevensc 47
          )}
48
          emptyMessage='No se encontraron usuarios'
49
        />
50
      )}
51
    </Box>
52
  );
53
};