Skip to content

Commit

Permalink
🚀 Removed Search by Pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
ouckah committed Apr 16, 2024
1 parent cb75a64 commit a5a64e6
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 463 deletions.
72 changes: 44 additions & 28 deletions client/src/pages/Search.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,57 +30,73 @@ function Search() {

const [searchParams, setSearchParams] = useSearchParams() // eslint-disable-line no-unused-vars

const fetchCompanyByName = async (companyName) => {
try {
const company = await fetchWithAuth({
url: `${HOST}/api/company/getBy?name=${companyName}`,
method: 'GET',
})

await fetchCompanies({ _id: company._id })
} catch (err) {
throw new Error(err)
}
}

const fetchCompanies = async (company) => {
try {
const encodedQuery = encodeURIComponent(company)
const profileData = await fetchWithAuth({
url: `${HOST}/api/pipeline/search/company/${encodedQuery}`,
url: `${HOST}/api/company/employees/${company._id}`,
method: 'GET',
})

const companyData = await fetchWithAuth({
url: `${HOST}/api/company/get/${encodedQuery}`,
url: `${HOST}/api/company/get/${company._id}`,
method: 'GET',
})

// Assuming fetchWithAuth throws for non-OK responses, including 404
setErrorMessage('') // If the fetch was successful, there's no 404, so we assume some results were found
setProfiles([...profileData]) // Update the profiles state with the fetched data

// only calculate the company rating if there are employees that rated it
const companyRating =
companyData.ratedEmployees.length !== 0
? Math.floor(
companyData.rating /
companyData.ratedEmployees.length /
20
)
: null
setCompany({
id: companyData.name,
name: companyData.displayName,
logo: companyData.logo,
info: companyData.description,
rating: companyRating,
}) // fetch company data to display in card
storeCompanyData(companyData)
} catch (err) {
throw new Error(err)
}
}

const handleSearch = useCallback(async (query) => {
const storeCompanyData = (companyData) => {
// only calculate the company rating if there are employees that rated it
const companyRating =
companyData.ratedEmployees.length !== 0
? Math.floor(
companyData.rating /
companyData.ratedEmployees.length /
20
)
: null
setCompany({
id: companyData.name,
name: companyData.displayName,
logo: companyData.logo,
info: companyData.description,
rating: companyRating,
}) // fetch company data to display in card
}

const handleSearch = useCallback(async (company) => {
// loading state to load query
setLoading(true)

try {
setLoading(true)

// set the URL query params
setQuery(query.name)
const params = { company: query.name }
setQuery(company.name)
const params = { company: company.name }
setSearchParams(params)

await fetchCompanies(query.name)
await fetchCompanies(company)
} catch (error) {
console.error(error.message)

Expand All @@ -105,21 +121,21 @@ function Search() {

useEffect(() => {
const fetchSearchParamCompanies = async () => {
const company = searchParams.get('company')
const companyName = searchParams.get('company')

// edge case: no search params given
if (!company) {
if (!companyName) {
resetSearch()
return
}

// if params preset, refetch companies and set query to company in URL
if (company !== query) {
if (companyName !== query) {
setLoading(true)

try {
await fetchCompanies(company)
setQuery(company)
await fetchCompanyByName(companyName)
setQuery(companyName)
} catch (error) {
console.error(error.message)

Expand Down
Loading

0 comments on commit a5a64e6

Please sign in to comment.