placementt-core 1.20.197 → 1.20.199
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/features/placements/studentPlacements/useStudentPlacements.d.ts +0 -1
- package/lib/features/placements/studentPlacements/useStudentPlacements.js +1 -9
- package/lib/features/placements/studentPlacements/useStudentPlacements.js.map +1 -1
- package/lib/reduxHooks.d.ts +10 -0
- package/lib/reduxHooks.js +21 -16
- package/lib/reduxHooks.js.map +1 -1
- package/package.json +1 -1
- package/src/features/placements/studentPlacements/useStudentPlacements.tsx +1 -10
- package/src/reduxHooks.ts +25 -20
|
@@ -5,21 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.useStudentPlacements = void 0;
|
|
7
7
|
const firestore_1 = require("firebase/firestore");
|
|
8
|
-
const react_1 = require("react");
|
|
9
8
|
const firebaseQuery_1 = __importDefault(require("../../../firebase/firebaseQuery"));
|
|
10
9
|
const readDatabase_1 = require("../../../firebase/readDatabase");
|
|
11
10
|
const util_1 = require("../../../firebase/util");
|
|
12
11
|
const hooks_1 = require("../../../hooks");
|
|
13
12
|
function useStudentPlacements({ user, uid, queryConstraint }) {
|
|
14
13
|
const firebaseQuery = new firebaseQuery_1.default();
|
|
15
|
-
const [activePlacement, setActivePlacement] = (0, react_1.useState)();
|
|
16
14
|
const { placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, reset } = (0, hooks_1.useStudentPlacementList)({ ...{ user: user, uid: uid || (user === null || user === void 0 ? void 0 : user.id), queryConstraint } });
|
|
17
|
-
(0, react_1.useEffect)(() => {
|
|
18
|
-
firebaseQuery.getDocsWhere(["placements"], [(0, firestore_1.where)("active", "==", true), (0, firestore_1.where)("uid", "==", user === null || user === void 0 ? void 0 : user.id)]).then((docs) => {
|
|
19
|
-
const d = { ...docs };
|
|
20
|
-
setActivePlacement(d[Object.keys(d)[0]] || undefined);
|
|
21
|
-
});
|
|
22
|
-
}, [user === null || user === void 0 ? void 0 : user.id]);
|
|
23
15
|
const getUserPlacements = async () => {
|
|
24
16
|
return await (0, readDatabase_1.getPlacementsWhere)({ w: (0, firestore_1.where)("uid", "==", user === null || user === void 0 ? void 0 : user.id) });
|
|
25
17
|
};
|
|
@@ -29,7 +21,7 @@ function useStudentPlacements({ user, uid, queryConstraint }) {
|
|
|
29
21
|
const getPlacementsEnd = async (end) => {
|
|
30
22
|
return await firebaseQuery.getDocsWhere("placements", [(0, firestore_1.where)("uid", "==", user === null || user === void 0 ? void 0 : user.id), (0, firestore_1.where)("endDate", ">=", (0, util_1.convertDate)(end, "dbstring")), (0, firestore_1.where)("endDate", "<=", (0, util_1.convertDate)(end, "dbstring"))]);
|
|
31
23
|
};
|
|
32
|
-
return ({ ...{ placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, resetPlacements: reset, getUserPlacements, getPlacementsStart, getPlacementsEnd
|
|
24
|
+
return ({ ...{ placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, resetPlacements: reset, getUserPlacements, getPlacementsStart, getPlacementsEnd } });
|
|
33
25
|
}
|
|
34
26
|
exports.useStudentPlacements = useStudentPlacements;
|
|
35
27
|
//# sourceMappingURL=useStudentPlacements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStudentPlacements.js","sourceRoot":"","sources":["../../../../src/features/placements/studentPlacements/useStudentPlacements.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"useStudentPlacements.js","sourceRoot":"","sources":["../../../../src/features/placements/studentPlacements/useStudentPlacements.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA4D;AAC5D,oFAA4D;AAC5D,iEAAoE;AACpE,iDAAqD;AACrD,0CAAyD;AAGzD,SAAgB,oBAAoB,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,eAAe,EAAsE;IAAM,MAAM,aAAa,GAAG,IAAI,uBAAa,EAAE,CAAA;IACjL,MAAM,EAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAC,GAAG,IAAA,+BAAuB,EAAC,EAAC,GAAG,EAAC,IAAI,EAAE,IAAgB,EAAE,GAAG,EAAE,GAAG,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAA,EAAE,eAAe,EAAC,EAAC,CAAC,CAAA;IAE3L,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;QACjC,OAAO,MAAM,IAAA,iCAAkB,EAAC,EAAC,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAC,EAAC,CAAC,CAAA;IACtE,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAAW,EAAE,GAAS,EAAE,EAAE;QACxD,OAAO,MAAM,aAAa,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAA,iBAAK,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAC,EAAE,IAAA,iBAAK,EAAC,WAAW,EAAE,IAAI,EAAE,IAAA,kBAAW,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,IAAA,iBAAK,EAAC,WAAW,EAAE,IAAI,EAAE,IAAA,kBAAW,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAyC,CAAC;IACpP,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAS,EAAE,EAAE;QACzC,OAAO,MAAM,aAAa,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAA,iBAAK,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAC,EAAE,IAAA,iBAAK,EAAC,SAAS,EAAE,IAAI,EAAE,IAAA,kBAAW,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,IAAA,iBAAK,EAAC,SAAS,EAAE,IAAI,EAAE,IAAA,kBAAW,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAyC,CAAC;IAC9O,CAAC,CAAA;IAED,OAAO,CAAC,EAAC,GAAG,EAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAC,EAAC,CAAC,CAAC;AAClL,CAAC;AAhBD,oDAgBC"}
|
package/lib/reduxHooks.d.ts
CHANGED
|
@@ -109,6 +109,11 @@ export declare function useStudent({ user }: {
|
|
|
109
109
|
update: (placementId: string, attributes: Partial<StudentPlacementData>) => Promise<void>;
|
|
110
110
|
delete: (id: string) => Promise<void>;
|
|
111
111
|
activePlacement: StudentPlacementData | undefined;
|
|
112
|
+
dispatchActivePlacement: () => void;
|
|
113
|
+
dispatchUpcomingPlacement: () => void;
|
|
114
|
+
fetchUpcomingPlacements: () => void;
|
|
115
|
+
fetchCompletedPlacements: () => void;
|
|
116
|
+
fetchContacts: () => void;
|
|
112
117
|
updateActivePlacement: (formData: StudentPlacementData) => {
|
|
113
118
|
payload: any;
|
|
114
119
|
type: "activePlacement/setActivePlacement";
|
|
@@ -243,6 +248,11 @@ export declare function useInstituteStudent({ user }: {
|
|
|
243
248
|
update: (placementId: string, attributes: Partial<StudentPlacementData>) => Promise<void>;
|
|
244
249
|
delete: (id: string) => Promise<void>;
|
|
245
250
|
activePlacement: StudentPlacementData | undefined;
|
|
251
|
+
dispatchActivePlacement: () => void;
|
|
252
|
+
dispatchUpcomingPlacement: () => void;
|
|
253
|
+
fetchUpcomingPlacements: () => void;
|
|
254
|
+
fetchCompletedPlacements: () => void;
|
|
255
|
+
fetchContacts: () => void;
|
|
246
256
|
updateActivePlacement: (formData: StudentPlacementData) => {
|
|
247
257
|
payload: any;
|
|
248
258
|
type: "activePlacement/setActivePlacement";
|
package/lib/reduxHooks.js
CHANGED
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.useProvider = exports.useInstituteStudent = exports.useInstituteStaff = exports.useStudent = exports.useAppDispatch = exports.useAppSelector = void 0;
|
|
7
7
|
const firestore_1 = require("firebase/firestore");
|
|
8
|
-
const react_1 = require("react");
|
|
9
8
|
const react_redux_1 = require("react-redux");
|
|
10
9
|
const contactsSlice_1 = require("./features/contacts/contactsSlice");
|
|
11
10
|
const jobsSlice_1 = require("./features/jobs/jobsSlice");
|
|
@@ -27,28 +26,29 @@ function useStudent({ user }) {
|
|
|
27
26
|
const firebaseQuery = new firebaseQuery_1.default();
|
|
28
27
|
const dispatch = (0, exports.useAppDispatch)();
|
|
29
28
|
const today = new Date();
|
|
30
|
-
const
|
|
31
|
-
const completedPlacementsConstraints = [(0, firestore_1.where)("uid", "==", user.id), (0, firestore_1.where)("completed", "==", true), (0, firestore_1.orderBy)("startDate")];
|
|
32
|
-
const contactsConstraints = [(0, firestore_1.where)("uid", "==", user.id)];
|
|
33
|
-
(0, react_1.useEffect)(() => {
|
|
34
|
-
firebaseQuery.collectionSnapshot(upcomingStudentPlacementsSlice_1.setUpcomingStudentPlacements, "placements", upcomingPlacementsConstraints, dispatch);
|
|
35
|
-
firebaseQuery.collectionSnapshot(completedStudentPlacementsSlice_1.setCompletedStudentPlacements, "placements", completedPlacementsConstraints, dispatch);
|
|
36
|
-
firebaseQuery.collectionSnapshot(contactsSlice_1.setContacts, "contacts", contactsConstraints, dispatch);
|
|
37
|
-
}, [dispatch, user.id]);
|
|
38
|
-
(0, react_1.useEffect)(() => {
|
|
39
|
-
if (!user.id)
|
|
40
|
-
return;
|
|
29
|
+
const dispatchActivePlacement = () => {
|
|
41
30
|
dispatch((0, activePlacement_1.fetchActivePlacement)({ userId: user.id }));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
};
|
|
32
|
+
const fetchUpcomingPlacements = () => {
|
|
33
|
+
const constraints = [(0, firestore_1.where)("uid", "==", user.id), (0, firestore_1.where)("inProgress", "==", true), (0, firestore_1.orderBy)("startDate")];
|
|
34
|
+
firebaseQuery.collectionSnapshot(upcomingStudentPlacementsSlice_1.setUpcomingStudentPlacements, "placements", constraints, dispatch);
|
|
35
|
+
};
|
|
36
|
+
const fetchCompletedPlacements = () => {
|
|
37
|
+
const constraints = [(0, firestore_1.where)("uid", "==", user.id), (0, firestore_1.where)("completed", "==", true), (0, firestore_1.orderBy)("startDate")];
|
|
38
|
+
firebaseQuery.collectionSnapshot(completedStudentPlacementsSlice_1.setCompletedStudentPlacements, "placements", constraints, dispatch);
|
|
39
|
+
};
|
|
40
|
+
const fetchContacts = () => {
|
|
41
|
+
const constraints = [(0, firestore_1.where)("uid", "==", user.id)];
|
|
42
|
+
firebaseQuery.collectionSnapshot(contactsSlice_1.setContacts, "contacts", constraints, dispatch);
|
|
43
|
+
};
|
|
44
|
+
const dispatchUpcomingPlacement = () => {
|
|
45
45
|
if (!upcomingPlacements || !Object.entries(upcomingPlacements).length) {
|
|
46
46
|
dispatch((0, upcomingStudentPlacementsSlice_1.setUpcoming)(undefined));
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
const upcomingPlacement = Object.entries(upcomingPlacements).find(([, v]) => new Date(v.startDate).getTime() > today.getTime());
|
|
50
50
|
upcomingPlacement ? dispatch((0, upcomingStudentPlacementsSlice_1.setUpcoming)(upcomingPlacement[1])) : dispatch((0, upcomingStudentPlacementsSlice_1.setUpcoming)(undefined));
|
|
51
|
-
}
|
|
51
|
+
};
|
|
52
52
|
const getItemById = async (path, id) => {
|
|
53
53
|
return await firebaseQuery.getDocData([path, id]);
|
|
54
54
|
};
|
|
@@ -83,6 +83,11 @@ function useStudent({ user }) {
|
|
|
83
83
|
update: async (placementId, attributes) => await handleUpdatePlacement(placementId, attributes),
|
|
84
84
|
delete: async (id) => await handleDeletePlacement(id),
|
|
85
85
|
activePlacement,
|
|
86
|
+
dispatchActivePlacement,
|
|
87
|
+
dispatchUpcomingPlacement,
|
|
88
|
+
fetchUpcomingPlacements,
|
|
89
|
+
fetchCompletedPlacements,
|
|
90
|
+
fetchContacts,
|
|
86
91
|
updateActivePlacement: (formData) => dispatch((0, activePlacement_1.setActivePlacement)(formData)),
|
|
87
92
|
upcoming,
|
|
88
93
|
updateUpcomingPlacement: (formData) => dispatch((0, upcomingStudentPlacementsSlice_1.setUpcoming)(formData)),
|
package/lib/reduxHooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduxHooks.js","sourceRoot":"","sources":["../src/reduxHooks.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"reduxHooks.js","sourceRoot":"","sources":["../src/reduxHooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { QueryConstraint, where } from "firebase/firestore";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
2
|
import FirebaseQuery from "../../../firebase/firebaseQuery";
|
|
4
3
|
import { getPlacementsWhere } from "../../../firebase/readDatabase";
|
|
5
4
|
import { convertDate } from "../../../firebase/util";
|
|
@@ -7,16 +6,8 @@ import { useStudentPlacementList } from "../../../hooks";
|
|
|
7
6
|
import { StudentPlacementData, UserData } from "../../../typeDefinitions";
|
|
8
7
|
|
|
9
8
|
export function useStudentPlacements({user, uid, queryConstraint}: {user: UserData, uid?: string, queryConstraint?: QueryConstraint[]}){ const firebaseQuery = new FirebaseQuery()
|
|
10
|
-
const [activePlacement, setActivePlacement] = useState<StudentPlacementData>();
|
|
11
9
|
const {placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, reset} = useStudentPlacementList({...{user: user as UserData, uid: uid || user?.id, queryConstraint}})
|
|
12
10
|
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
firebaseQuery.getDocsWhere(["placements"], [where("active", "==", true), where("uid", "==", user?.id)]).then((docs) => {
|
|
15
|
-
const d = {...docs as {[key:string]: StudentPlacementData}}
|
|
16
|
-
setActivePlacement(d[Object.keys(d)[0]] || undefined);
|
|
17
|
-
});
|
|
18
|
-
}, [user?.id]);
|
|
19
|
-
|
|
20
11
|
const getUserPlacements = async () => {
|
|
21
12
|
return await getPlacementsWhere({w: where("uid", "==", user?.id)})
|
|
22
13
|
}
|
|
@@ -29,5 +20,5 @@ export function useStudentPlacements({user, uid, queryConstraint}: {user: UserDa
|
|
|
29
20
|
return await firebaseQuery.getDocsWhere("placements", [where("uid", "==", user?.id), where("endDate", ">=", convertDate(end, "dbstring")), where("endDate", "<=", convertDate(end, "dbstring"))]) as {[key:string]: StudentPlacementData};
|
|
30
21
|
}
|
|
31
22
|
|
|
32
|
-
return ({...{placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, resetPlacements: reset, getUserPlacements, getPlacementsStart, getPlacementsEnd
|
|
23
|
+
return ({...{placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, resetPlacements: reset, getUserPlacements, getPlacementsStart, getPlacementsEnd}});
|
|
33
24
|
}
|
package/src/reduxHooks.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useEffect } from "react"
|
|
1
|
+
import { orderBy, where } from "firebase/firestore"
|
|
3
2
|
import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"
|
|
4
3
|
import { AppDispatch, RootState } from "./config"
|
|
5
4
|
import { addContact, deleteContact, setContacts, updateContact } from "./features/contacts/contactsSlice"
|
|
@@ -28,33 +27,34 @@ export function useStudent({user} : {user: UserData}) {
|
|
|
28
27
|
|
|
29
28
|
const today = new Date();
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
30
|
+
|
|
31
|
+
const dispatchActivePlacement = () => {
|
|
32
|
+
dispatch(fetchActivePlacement({userId: user.id}))
|
|
33
|
+
}
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
firebaseQuery.collectionSnapshot(
|
|
38
|
-
|
|
39
|
-
}, [dispatch, user.id]);
|
|
35
|
+
const fetchUpcomingPlacements = () => {
|
|
36
|
+
const constraints = [where("uid", "==", user.id), where("inProgress", "==", true), orderBy("startDate")]
|
|
37
|
+
firebaseQuery.collectionSnapshot(setUpcomingStudentPlacements, "placements", constraints, dispatch);
|
|
38
|
+
}
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
40
|
+
const fetchCompletedPlacements = () => {
|
|
41
|
+
const constraints = [where("uid", "==", user.id), where("completed", "==", true), orderBy("startDate")]
|
|
42
|
+
firebaseQuery.collectionSnapshot(setCompletedStudentPlacements, "placements", constraints, dispatch);
|
|
43
|
+
}
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const fetchContacts = () => {
|
|
46
|
+
const constraints = [where("uid", "==", user.id)]
|
|
47
|
+
firebaseQuery.collectionSnapshot(setContacts, "contacts", constraints, dispatch);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const dispatchUpcomingPlacement = () => {
|
|
49
51
|
if (!upcomingPlacements || !Object.entries(upcomingPlacements).length) {
|
|
50
52
|
dispatch(setUpcoming(undefined));
|
|
51
53
|
return;
|
|
52
54
|
}
|
|
53
55
|
const upcomingPlacement = Object.entries(upcomingPlacements).find(([, v]) => new Date(v.startDate).getTime() > today.getTime())
|
|
54
56
|
upcomingPlacement ? dispatch(setUpcoming(upcomingPlacement[1])) : dispatch(setUpcoming(undefined))
|
|
55
|
-
|
|
56
|
-
}, [dispatch, upcomingPlacements, completedPlacements]);
|
|
57
|
-
|
|
57
|
+
}
|
|
58
58
|
|
|
59
59
|
const getItemById = async (path: "contacts"|"placements", id: string) => {
|
|
60
60
|
return await firebaseQuery.getDocData([path, id])
|
|
@@ -89,6 +89,11 @@ export function useStudent({user} : {user: UserData}) {
|
|
|
89
89
|
update: async (placementId: string, attributes: Partial<StudentPlacementData>) => await handleUpdatePlacement(placementId, attributes),
|
|
90
90
|
delete: async (id: string) => await handleDeletePlacement(id),
|
|
91
91
|
activePlacement,
|
|
92
|
+
dispatchActivePlacement,
|
|
93
|
+
dispatchUpcomingPlacement,
|
|
94
|
+
fetchUpcomingPlacements,
|
|
95
|
+
fetchCompletedPlacements,
|
|
96
|
+
fetchContacts,
|
|
92
97
|
updateActivePlacement: (formData: StudentPlacementData) => dispatch(setActivePlacement(formData)),
|
|
93
98
|
upcoming,
|
|
94
99
|
updateUpcomingPlacement: (formData: StudentPlacementData) => dispatch(setUpcoming(formData)),
|