mirror of
https://github.com/myfatemi04/wheelshare-frontend.git
synced 2025-04-21 11:20:17 -04:00
fetch sent invites and requests on load
This commit is contained in:
parent
66ec0019c1
commit
0f3d477dc3
|
@ -2,18 +2,18 @@ import CancelIcon from '@material-ui/icons/Cancel';
|
|||
import CheckIcon from '@material-ui/icons/Check';
|
||||
import EmojiPeopleIcon from '@material-ui/icons/EmojiPeople';
|
||||
import { useCallback, useContext, useMemo, useState } from 'react';
|
||||
import { createCarpool } from '../api';
|
||||
import { lightgrey } from '../../lib/colors';
|
||||
import { useMe } from '../hooks';
|
||||
import { IEvent } from '../types';
|
||||
import UIButton from '../UI/UIButton';
|
||||
import UILink from '../UI/UILink';
|
||||
import EventContext from './EventContext';
|
||||
import {
|
||||
useCancelCarpoolRequest,
|
||||
useInvitationState,
|
||||
useSendCarpoolRequest,
|
||||
} from '../../state/Notifications/NotificationsHooks';
|
||||
import { createCarpool } from '../api';
|
||||
import { useMe } from '../hooks';
|
||||
import { IEvent } from '../types';
|
||||
import UIButton from '../UI/UIButton';
|
||||
import UILink from '../UI/UILink';
|
||||
import EventContext from './EventContext';
|
||||
|
||||
function CarpoolRow({
|
||||
carpool,
|
||||
|
|
|
@ -201,3 +201,7 @@ export async function sendCarpoolRequest(carpoolId: number) {
|
|||
export async function cancelCarpoolRequest(carpoolId: number) {
|
||||
return await delete$('/carpools/' + carpoolId + '/request');
|
||||
}
|
||||
|
||||
export async function getSentRequestsAndInvites() {
|
||||
return (await get('/users/@me/sent_requests_and_invites')) as IInvitation[];
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { createContext, ReactNode, useCallback, useState } from 'react';
|
||||
import * as immutable from 'immutable';
|
||||
import * as api from '../../components/api';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
export const NotificationsContext = createContext({
|
||||
invitedCarpoolIds: immutable.Set<number>(),
|
||||
|
@ -18,8 +19,7 @@ export default function NotificationsProvider({
|
|||
}: {
|
||||
children: ReactNode;
|
||||
}) {
|
||||
// eslint-disable-next-line
|
||||
const [invitedCarpoolIds, _setInvitedCarpoolIds] = useState(
|
||||
const [invitedCarpoolIds, setInvitedCarpoolIds] = useState(
|
||||
immutable.Set<number>()
|
||||
);
|
||||
|
||||
|
@ -27,6 +27,25 @@ export default function NotificationsProvider({
|
|||
immutable.Set<number>()
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
api.getSentRequestsAndInvites().then((invitations) => {
|
||||
setInvitedCarpoolIds((ids) =>
|
||||
ids.concat(
|
||||
invitations
|
||||
.filter((invite) => !invite.isRequest)
|
||||
.map((invite) => invite.carpool.id)
|
||||
)
|
||||
);
|
||||
setRequestedCarpoolIds((ids) =>
|
||||
ids.concat(
|
||||
invitations
|
||||
.filter((invite) => invite.isRequest)
|
||||
.map((invite) => invite.carpool.id)
|
||||
)
|
||||
);
|
||||
});
|
||||
}, []);
|
||||
|
||||
const sendCarpoolRequest = useCallback((carpoolId: number) => {
|
||||
api
|
||||
.sendCarpoolRequest(carpoolId)
|
||||
|
|
Loading…
Reference in New Issue
Block a user