hensei-web/hooks/useFavorites.tsx
Justin Edmund 8164f1f0d4 Break collection pages into hooks
This refactors the collection pages (teams, saved and profiles) into a bunch of hooks that handle various chunks of functionality. This way, the actual "pages" have significantly less logic.
2024-04-21 00:42:12 -07:00

50 lines
1.2 KiB
TypeScript

import clonedeep from 'lodash.clonedeep'
import api from '~utils/api'
import { PageContextObj } from '~types'
export const useFavorites = (
parties: Party[],
setParties: (value: Party[]) => void
) => {
// Methods: Favorites
function toggleFavorite(teamId: string, favorited: boolean) {
if (favorited) unsaveFavorite(teamId)
else saveFavorite(teamId)
}
function saveFavorite(teamId: string) {
api.saveTeam({ id: teamId }).then((response) => {
if (response.status == 201) {
const index = parties.findIndex((p) => p.id === teamId)
const party = parties[index]
party.favorited = true
let clonedParties = clonedeep(parties)
clonedParties[index] = party
setParties(clonedParties)
}
})
}
function unsaveFavorite(teamId: string) {
api.unsaveTeam({ id: teamId }).then((response) => {
if (response.status == 200) {
const index = parties.findIndex((p) => p.id === teamId)
const party = parties[index]
party.favorited = false
let clonedParties = clonedeep(parties)
clonedParties[index] = party
setParties(clonedParties)
}
})
}
return {
toggleFavorite,
}
}