This repository has been archived by the owner on Mar 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #39 from exortme1ster/feature/teams-
This PR includes several improvements to teams as well as main page
- Loading branch information
Showing
215 changed files
with
8,866 additions
and
2,068 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,34 @@ | ||
import { useMutation, useQueryClient } from 'react-query' | ||
|
||
import http from '../../../http' | ||
import { errorToaster } from '../../../shared/components/Toasters/Error.toaster' | ||
import { successToaster } from '../../../shared/components/Toasters/Success.toaster' | ||
|
||
const { api } = http | ||
|
||
export const useInviteUser = (successHandler) => { | ||
export const useInviteUser = () => { | ||
const queryClient = useQueryClient() | ||
|
||
const inviteUser = async (details) => { | ||
const { email, teamId, userId } = details | ||
const { email, teamid, from_user_id } = details | ||
|
||
console.log(details) | ||
|
||
const response = await api.post('/teams/invite', { | ||
email, | ||
teamid: teamId, | ||
from_user_id: userId, | ||
teamid: teamid, | ||
from_user_id: from_user_id, | ||
}) | ||
} | ||
|
||
return useMutation(inviteUser, { | ||
mutationKey: 'inviteUser', | ||
onSuccess: async () => { | ||
successHandler() | ||
await queryClient.invalidateQueries('checkAuth', { refetchInactive: true }) | ||
onSuccess: () => { | ||
successToaster('User was successfully invited.') | ||
queryClient.invalidateQueries('checkAuth', { refetchInactive: true }) | ||
}, | ||
onError: (error) => { | ||
errorToaster(error) | ||
}, | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import { useMutation, useQueryClient } from 'react-query' | ||
import { useNavigate } from 'react-router-dom' | ||
|
||
import http from '../../../http' | ||
import { errorToaster } from '../../../shared/components/Toasters/Error.toaster' | ||
|
||
const { api } = http | ||
|
||
export const useJoinTeam = () => { | ||
const queryClient = useQueryClient() | ||
const navigate = useNavigate() | ||
|
||
const joinTeam = async (details) => { | ||
const response = await api.put('/teams/join', details) | ||
|
||
return response.data | ||
} | ||
|
||
return useMutation(joinTeam, { | ||
mutationKey: 'joinTeam', | ||
onSuccess: async (data) => { | ||
await queryClient.invalidateQueries('checkAuth', { refetchInactive: true }) | ||
await queryClient.invalidateQueries('getTeamById', { refetchInactive: true }) | ||
navigate(`/team/${data._id}`) | ||
}, | ||
onError: (error) => { | ||
errorToaster(error) | ||
}, | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
import { useMutation, useQueryClient } from 'react-query' | ||
import { useNavigate } from 'react-router-dom' | ||
|
||
import { errorToaster } from '../../../shared/components/Toasters/Error.toaster' | ||
|
||
import { useJoinTeam } from './useJoinTeam' | ||
import { useLeave } from './useLeaveTeam' | ||
|
||
export const useLeaveAndJoin = () => { | ||
const queryClient = useQueryClient() | ||
const navigate = useNavigate() | ||
const joinTeamMutation = useJoinTeam() | ||
const leaveTeamMutation = useLeave() | ||
|
||
const leaveAndJoin = async (details) => { | ||
await leaveTeamMutation.mutateAsync(details.leaveDetails) | ||
|
||
const joinResult = await joinTeamMutation.mutateAsync(details.joinDetails) | ||
|
||
return joinResult | ||
} | ||
|
||
const onSuccess = async (joinDetails) => { | ||
queryClient.invalidateQueries('checkAuth', { refetchInactive: true }) | ||
navigate(`/team/${joinDetails._id}`) | ||
} | ||
|
||
const leaveAndJoinMutation = useMutation(leaveAndJoin, { | ||
mutationKey: 'leaveAndJoin', | ||
onSuccess, | ||
onError: (error) => { | ||
errorToaster(error) | ||
}, | ||
}) | ||
|
||
return { | ||
leaveAndJoin: leaveAndJoinMutation, | ||
isLeaving: leaveTeamMutation.isLoading, | ||
isJoining: joinTeamMutation.isLoading, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { useMutation, useQueryClient } from 'react-query' | ||
import { useNavigate } from 'react-router-dom' | ||
|
||
import http from '../../../http' | ||
import { errorToaster } from '../../../shared/components/Toasters/Error.toaster' | ||
|
||
const { api } = http | ||
|
||
export const useLeave = () => { | ||
const queryClient = useQueryClient() | ||
const navigate = useNavigate() | ||
|
||
const leaveTeam = async (details) => { | ||
const response = await api.put(`/teams/leave`, details) | ||
|
||
return response.data | ||
} | ||
|
||
return useMutation(leaveTeam, { | ||
mutationKey: 'leaveTeam', | ||
onSuccess: () => { | ||
queryClient.invalidateQueries('checkAuth') | ||
navigate(`/teams`) | ||
}, | ||
onError: (error) => { | ||
errorToaster(error) | ||
}, | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
import { useEffect, useState } from 'react' | ||
import { useInfiniteQuery } from 'react-query' | ||
import { useSelector } from 'react-redux' | ||
import qs from 'qs' | ||
import uuid from 'uuidv4' | ||
|
||
import http from '../../../http' | ||
import checkEntriesForValue from '../../../utils/checkEntriesForValue' | ||
import filteredQueryMaker from '../../../utils/filteredQueryMaker' | ||
import { normalizeFilters } from '../../../utils/normalizeFilters' | ||
|
||
const { api } = http | ||
|
||
export const useLoadTeams = () => { | ||
const [filtered, setFiltered] = useState(false) | ||
const filters = useSelector((state) => state.teamsFilters) | ||
|
||
const normalizedFilters = normalizeFilters(filters) | ||
const [id, setId] = useState() | ||
|
||
useEffect(() => { | ||
if (checkEntriesForValue(filters)) { | ||
setFiltered(true) | ||
setId(uuid()) | ||
} else { | ||
setFiltered(false) | ||
} | ||
}, [filters]) | ||
|
||
const getTeams = async ({ pageParam = 1 }) => { | ||
const response = await api.get('/teams', { params: { page: pageParam } }) | ||
|
||
return response.data | ||
} | ||
|
||
const getTeamsFiltered = async ({ pageParam = 1 }) => { | ||
const filtersQuery = filteredQueryMaker.teams( | ||
normalizedFilters.countries, | ||
normalizedFilters.people, | ||
normalizedFilters.name, | ||
normalizedFilters.tag, | ||
) | ||
|
||
let queryString = qs.stringify(filtersQuery) | ||
const response = await api.get('/teams/filtered', { | ||
params: { page: pageParam, filtersQuery: queryString }, | ||
}) | ||
|
||
return response.data | ||
} | ||
|
||
const query = useInfiniteQuery( | ||
[filtered ? 'teamsFiltered' : 'teams', id], | ||
filtered ? getTeamsFiltered : getTeams, | ||
{ | ||
getNextPageParam: (lastPage, allPages) => { | ||
return Math.ceil(lastPage.total / lastPage.limit) !== allPages.length | ||
? allPages.length + 1 | ||
: undefined | ||
}, | ||
refetchOnWindowFocus: false, | ||
}, | ||
) | ||
|
||
return { | ||
...query, | ||
filtered, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import { useMutation, useQueryClient } from 'react-query' | ||
import { useNavigate } from 'react-router-dom' | ||
|
||
import http from '../../../http' | ||
import { errorToaster } from '../../../shared/components/Toasters/Error.toaster' | ||
|
||
const { api } = http | ||
|
||
// refetch data | ||
|
||
export const useRemoveMember = () => { | ||
const queryClient = useQueryClient() | ||
const removeMember = async (details) => { | ||
const response = await api.put(`/teams/remove-member`, details) | ||
|
||
return response.data | ||
} | ||
|
||
return useMutation(removeMember, { | ||
mutationKey: 'removeMember', | ||
onSuccess: async () => { | ||
await queryClient.invalidateQueries('getTeamById') // useQuery key | ||
}, | ||
onError: (error) => { | ||
errorToaster(error) | ||
}, | ||
}) | ||
} |
Oops, something went wrong.