placementt-core 1.20.217 → 11.0.803

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.
Files changed (86) hide show
  1. package/.eslintrc.js +40 -40
  2. package/.gitattributes +2 -2
  3. package/lib/constants.js +10 -1
  4. package/lib/constants.js.map +1 -1
  5. package/lib/features/config.d.ts +133 -133
  6. package/lib/features/config.js +35 -35
  7. package/lib/features/contacts/contacts.d.ts +75 -75
  8. package/lib/features/contacts/contacts.js +105 -105
  9. package/lib/features/downtime/useDowntime.d.ts +11 -11
  10. package/lib/features/downtime/useDowntime.js +22 -22
  11. package/lib/features/placements/studentPlacements/studentPlacementsSlice.d.ts +63 -63
  12. package/lib/features/placements/studentPlacements/studentPlacementsSlice.js +81 -81
  13. package/lib/features/providerPlacements/providerPlacementsSlice.d.ts +19 -19
  14. package/lib/features/providerPlacements/providerPlacementsSlice.js +24 -24
  15. package/lib/features/studentPlacements/studentPlacementsSlice.d.ts +62 -62
  16. package/lib/features/studentPlacements/studentPlacementsSlice.js +87 -87
  17. package/lib/features/studentPlacements/useStudentPlacements.d.ts +6 -6
  18. package/lib/features/studentPlacements/useStudentPlacements.js +18 -18
  19. package/lib/features/userSlice.d.ts +26 -26
  20. package/lib/features/userSlice.js +23 -23
  21. package/lib/features/users/useUserFunctions.d.ts +25 -25
  22. package/lib/features/users/useUserFunctions.js +124 -124
  23. package/lib/features/users/userSlice.d.ts +46 -46
  24. package/lib/features/users/userSlice.js +48 -48
  25. package/lib/firebase/firebase.d.ts +1 -1
  26. package/lib/firebase/firebase.js +6 -2
  27. package/lib/firebase/firebase.js.map +1 -1
  28. package/lib/firebase/readDatabase.js +3 -1
  29. package/lib/firebase/readDatabase.js.map +1 -1
  30. package/lib/hooks.d.ts +33 -5
  31. package/lib/hooks.js +143 -107
  32. package/lib/hooks.js.map +1 -1
  33. package/lib/images/GatsbyBenchmarks.d.ts +1 -2
  34. package/lib/reduxHooks.d.ts +1 -66
  35. package/lib/reduxHooks.js +9 -69
  36. package/lib/reduxHooks.js.map +1 -1
  37. package/lib/tasksAndTips.d.ts +2 -2
  38. package/lib/tasksAndTips.js +37 -6
  39. package/lib/tasksAndTips.js.map +1 -1
  40. package/lib/typeDefinitions.d.ts +50 -5
  41. package/lib/util.d.ts +1 -1
  42. package/lib/util.js +12 -1
  43. package/lib/util.js.map +1 -1
  44. package/package.json +52 -56
  45. package/src/DatabaseDefinitions.ts +18 -18
  46. package/src/apiCalls.ts +128 -128
  47. package/src/config.ts +50 -50
  48. package/src/constants.ts +796 -787
  49. package/src/databaseTypes.ts +42 -42
  50. package/src/features/analytics/useAnalytics.tsx +63 -63
  51. package/src/features/contacts/contactsSlice.ts +147 -147
  52. package/src/features/contacts/useContacts.tsx +73 -73
  53. package/src/features/dropdown/useDropdown.tsx +52 -52
  54. package/src/features/global/downtime/useDowntime.tsx +23 -23
  55. package/src/features/global/users/useUserFunctions.tsx +132 -132
  56. package/src/features/jobs/jobsSlice.ts +71 -71
  57. package/src/features/placements/studentPlacements/activePlacement.ts +68 -68
  58. package/src/features/placements/studentPlacements/completedStudentPlacementsSlice.ts +97 -97
  59. package/src/features/placements/studentPlacements/upcomingStudentPlacementsSlice.ts +108 -108
  60. package/src/features/placements/studentPlacements/useStudentPlacements.tsx +9 -9
  61. package/src/features/placements/types.ts +10 -10
  62. package/src/features/referrals/useReferrals.tsx +56 -56
  63. package/src/features/updates/useUpdates.tsx +38 -38
  64. package/src/firebase/firebase.tsx +149 -145
  65. package/src/firebase/firebaseConfig.tsx +45 -45
  66. package/src/firebase/firebaseQuery.tsx +151 -151
  67. package/src/firebase/persistence.ts +84 -84
  68. package/src/firebase/readDatabase.tsx +236 -235
  69. package/src/firebase/util.tsx +352 -352
  70. package/src/firebase/writeDatabase.tsx +77 -77
  71. package/src/hooks.tsx +4353 -4323
  72. package/src/images/GatsbyBenchmarks.tsx +711 -711
  73. package/src/images/LogFuturePlacement.jsx +64 -64
  74. package/src/images/LogPreviousPlacement.jsx +228 -228
  75. package/src/images/gatsby_benchmarks.svg +466 -466
  76. package/src/images/log_future_placement.svg +114 -114
  77. package/src/images/log_previous_placement.svg +199 -199
  78. package/src/index.ts +34 -34
  79. package/src/readDatabase.tsx +3 -3
  80. package/src/reduxHooks.ts +232 -297
  81. package/src/tasksAndTips.ts +1209 -1177
  82. package/src/tutorialTips.ts +58 -58
  83. package/src/typeDefinitions.ts +1003 -958
  84. package/src/util.ts +160 -150
  85. package/tsconfig.dev.json +5 -5
  86. package/tsconfig.json +21 -22
@@ -1,69 +1,69 @@
1
- import {createSlice, createAsyncThunk} from "@reduxjs/toolkit";
2
- import FirebaseQuery from "../../../firebase/firebaseQuery";
3
- import { StudentPlacementData } from "../../../typeDefinitions"
4
- import { orderBy, where } from "firebase/firestore";
5
-
6
- type InitialActivePlacementSlice = {
7
- status: string
8
- values: StudentPlacementData | undefined
9
- }
10
-
11
- const initialState: InitialActivePlacementSlice = {
12
- status: "",
13
- values: undefined,
14
- }
15
-
16
- export const fetchActivePlacement = createAsyncThunk(
17
- "studentPlacements/fetchActivePlacement",
18
- async ({userId}: {userId: string}) => {
19
- const firebaseQuery = new FirebaseQuery();
20
- try {
21
- const docs = await firebaseQuery.getDocsWhere(["placements"], [where("active", "==", true), where("uid", "==", userId), where("completed", "==", false), orderBy("endDate")]);
22
- const d = { ...docs as { [key: string]: StudentPlacementData } };
23
- return d[Object.keys(d)[0]] || undefined;
24
-
25
- } catch (error) {
26
- console.log(error)
27
- return undefined
28
- }
29
- }
30
- )
31
-
32
- export const activePlacementSlice = createSlice({
33
- name: "activePlacement",
34
- initialState,
35
-
36
- reducers: {
37
- setActivePlacement: (state, action) => {
38
- state.values = action.payload
39
- },
40
-
41
- editActivePlacement: (state, action) => {
42
- state.values = {...state.values, ...action.payload}
43
- }
44
-
45
- },
46
-
47
- extraReducers(builder) {
48
- builder
49
- .addCase(fetchActivePlacement.fulfilled, (state, action) => {
50
- state.values = action.payload
51
- state.status = "success"
52
- })
53
-
54
- .addCase(fetchActivePlacement.pending, (state) => {
55
- state.status = "loading"
56
- })
57
-
58
- .addCase(fetchActivePlacement.rejected, (state) => {
59
- state.status = "error"
60
- })
61
-
62
- },
63
-
64
- })
65
-
66
-
67
- export const {setActivePlacement, editActivePlacement} = activePlacementSlice.actions
68
-
1
+ import {createSlice, createAsyncThunk} from "@reduxjs/toolkit";
2
+ import FirebaseQuery from "../../../firebase/firebaseQuery";
3
+ import { StudentPlacementData } from "../../../typeDefinitions"
4
+ import { orderBy, where } from "firebase/firestore";
5
+
6
+ type InitialActivePlacementSlice = {
7
+ status: string
8
+ values: StudentPlacementData | undefined
9
+ }
10
+
11
+ const initialState: InitialActivePlacementSlice = {
12
+ status: "",
13
+ values: undefined,
14
+ }
15
+
16
+ export const fetchActivePlacement = createAsyncThunk(
17
+ "studentPlacements/fetchActivePlacement",
18
+ async ({userId}: {userId: string}) => {
19
+ const firebaseQuery = new FirebaseQuery();
20
+ try {
21
+ const docs = await firebaseQuery.getDocsWhere(["placements"], [where("active", "==", true), where("uid", "==", userId), where("completed", "==", false), orderBy("endDate")]);
22
+ const d = { ...docs as { [key: string]: StudentPlacementData } };
23
+ return d[Object.keys(d)[0]] || undefined;
24
+
25
+ } catch (error) {
26
+ console.log(error)
27
+ return undefined
28
+ }
29
+ }
30
+ )
31
+
32
+ export const activePlacementSlice = createSlice({
33
+ name: "activePlacement",
34
+ initialState,
35
+
36
+ reducers: {
37
+ setActivePlacement: (state, action) => {
38
+ state.values = action.payload
39
+ },
40
+
41
+ editActivePlacement: (state, action) => {
42
+ state.values = {...state.values, ...action.payload}
43
+ }
44
+
45
+ },
46
+
47
+ extraReducers(builder) {
48
+ builder
49
+ .addCase(fetchActivePlacement.fulfilled, (state, action) => {
50
+ state.values = action.payload
51
+ state.status = "success"
52
+ })
53
+
54
+ .addCase(fetchActivePlacement.pending, (state) => {
55
+ state.status = "loading"
56
+ })
57
+
58
+ .addCase(fetchActivePlacement.rejected, (state) => {
59
+ state.status = "error"
60
+ })
61
+
62
+ },
63
+
64
+ })
65
+
66
+
67
+ export const {setActivePlacement, editActivePlacement} = activePlacementSlice.actions
68
+
69
69
  export default activePlacementSlice.reducer;
@@ -1,98 +1,98 @@
1
- import {createSlice, createAsyncThunk} from "@reduxjs/toolkit";
2
- import FirebaseQuery from "../../../firebase/firebaseQuery";
3
- import { PlacementState } from "../types";
4
- import { StudentPlacementData } from "../../../typeDefinitions";
5
-
6
- const initialState: PlacementState = {
7
- status: "",
8
- lastPlacement: undefined,
9
- values: {}
10
- }
11
-
12
-
13
- export const updateCompletedStudentPlacement = createAsyncThunk(
14
- "completedStudentPlacements/updateStudentPlacement",
15
- async ({ placementId, attributes }:{placementId: string, attributes: Partial<StudentPlacementData>}, {rejectWithValue}) => {
16
- const firebaseQuery = new FirebaseQuery();
17
- try {
18
- await firebaseQuery.update(["placements", placementId], attributes);
19
- return {attributes, placementId}
20
-
21
- } catch(error) {
22
- return rejectWithValue(error);
23
- }
24
- }
25
- );
26
-
27
- export const deleteCompletedStudentPlacement = createAsyncThunk(
28
- "completedStudentPlacements/deleteStudentPlacement",
29
- async ({placementId}:{placementId: string}, { rejectWithValue}) => {
30
- const firebaseQuery = new FirebaseQuery();
31
- try {
32
- await firebaseQuery.delete(["placements", placementId]);
33
- return placementId
34
- } catch(error) {
35
- return rejectWithValue(error);
36
- }
37
- }
38
- );
39
-
40
-
41
-
42
- export const completedStudentPlacementsSlice = createSlice({
43
- name: "completedStudentPlacements",
44
- initialState,
45
-
46
- reducers: {
47
- setCompletedStudentPlacements: (state, action) => {
48
- state.values = action.payload
49
- },
50
-
51
- setCompletedStatus: (state, action) => {
52
- state.status = action.payload
53
- },
54
-
55
- addCompletedStudentPlacements: (state, action) => {
56
- state.values = {...state.values, ...action.payload}
57
- },
58
-
59
- setCompletedIsDraft: (state, action) => {
60
- const {placementId, draft} = action.payload
61
- state.values[placementId].draft = draft
62
- },
63
-
64
- addCompletedStudentPlacement: (state, action) => {
65
- const {placement, placementId} = action.payload
66
- const newPlacements = {...state.values};
67
- newPlacements[placementId] = placement;
68
- state.values = Object.fromEntries(Object.entries(newPlacements).sort(([, a], [, b]) => b.startDate > a.endDate ? 1 : -1));
69
- },
70
-
71
- setLastCompletedPlacement: (state, action) => {
72
- state.lastPlacement = action.payload
73
- }
74
- },
75
-
76
-
77
- extraReducers(builder){
78
- builder
79
- .addCase(updateCompletedStudentPlacement.fulfilled, (state, action) => {
80
- const {attributes, placementId} = action.payload
81
- if (!placementId) return
82
- state.values[placementId] = {...state.values[placementId], ...attributes};
83
- })
84
-
85
-
86
- .addCase(deleteCompletedStudentPlacement.fulfilled, (state, action) => {
87
- const placementIdToDelete = action.payload;
88
- const newPlacements = { ...state, values: { ...state.values } };
89
- delete newPlacements.values[placementIdToDelete];
90
- return newPlacements;
91
- })
92
- }
93
- })
94
-
95
-
96
- export const {addCompletedStudentPlacements, addCompletedStudentPlacement, setCompletedStudentPlacements, setLastCompletedPlacement, setCompletedStatus, setCompletedIsDraft} = completedStudentPlacementsSlice.actions
97
-
1
+ import {createSlice, createAsyncThunk} from "@reduxjs/toolkit";
2
+ import FirebaseQuery from "../../../firebase/firebaseQuery";
3
+ import { PlacementState } from "../types";
4
+ import { StudentPlacementData } from "../../../typeDefinitions";
5
+
6
+ const initialState: PlacementState = {
7
+ status: "",
8
+ lastPlacement: undefined,
9
+ values: {}
10
+ }
11
+
12
+
13
+ export const updateCompletedStudentPlacement = createAsyncThunk(
14
+ "completedStudentPlacements/updateStudentPlacement",
15
+ async ({ placementId, attributes }:{placementId: string, attributes: Partial<StudentPlacementData>}, {rejectWithValue}) => {
16
+ const firebaseQuery = new FirebaseQuery();
17
+ try {
18
+ await firebaseQuery.update(["placements", placementId], attributes);
19
+ return {attributes, placementId}
20
+
21
+ } catch(error) {
22
+ return rejectWithValue(error);
23
+ }
24
+ }
25
+ );
26
+
27
+ export const deleteCompletedStudentPlacement = createAsyncThunk(
28
+ "completedStudentPlacements/deleteStudentPlacement",
29
+ async ({placementId}:{placementId: string}, { rejectWithValue}) => {
30
+ const firebaseQuery = new FirebaseQuery();
31
+ try {
32
+ await firebaseQuery.delete(["placements", placementId]);
33
+ return placementId
34
+ } catch(error) {
35
+ return rejectWithValue(error);
36
+ }
37
+ }
38
+ );
39
+
40
+
41
+
42
+ export const completedStudentPlacementsSlice = createSlice({
43
+ name: "completedStudentPlacements",
44
+ initialState,
45
+
46
+ reducers: {
47
+ setCompletedStudentPlacements: (state, action) => {
48
+ state.values = action.payload
49
+ },
50
+
51
+ setCompletedStatus: (state, action) => {
52
+ state.status = action.payload
53
+ },
54
+
55
+ addCompletedStudentPlacements: (state, action) => {
56
+ state.values = {...state.values, ...action.payload}
57
+ },
58
+
59
+ setCompletedIsDraft: (state, action) => {
60
+ const {placementId, draft} = action.payload
61
+ state.values[placementId].draft = draft
62
+ },
63
+
64
+ addCompletedStudentPlacement: (state, action) => {
65
+ const {placement, placementId} = action.payload
66
+ const newPlacements = {...state.values};
67
+ newPlacements[placementId] = placement;
68
+ state.values = Object.fromEntries(Object.entries(newPlacements).sort(([, a], [, b]) => b.startDate > a.endDate ? 1 : -1));
69
+ },
70
+
71
+ setLastCompletedPlacement: (state, action) => {
72
+ state.lastPlacement = action.payload
73
+ }
74
+ },
75
+
76
+
77
+ extraReducers(builder){
78
+ builder
79
+ .addCase(updateCompletedStudentPlacement.fulfilled, (state, action) => {
80
+ const {attributes, placementId} = action.payload
81
+ if (!placementId) return
82
+ state.values[placementId] = {...state.values[placementId], ...attributes};
83
+ })
84
+
85
+
86
+ .addCase(deleteCompletedStudentPlacement.fulfilled, (state, action) => {
87
+ const placementIdToDelete = action.payload;
88
+ const newPlacements = { ...state, values: { ...state.values } };
89
+ delete newPlacements.values[placementIdToDelete];
90
+ return newPlacements;
91
+ })
92
+ }
93
+ })
94
+
95
+
96
+ export const {addCompletedStudentPlacements, addCompletedStudentPlacement, setCompletedStudentPlacements, setLastCompletedPlacement, setCompletedStatus, setCompletedIsDraft} = completedStudentPlacementsSlice.actions
97
+
98
98
  export default completedStudentPlacementsSlice.reducer;
@@ -1,109 +1,109 @@
1
- import {createSlice, createAsyncThunk} from "@reduxjs/toolkit";
2
- import FirebaseQuery from "../../../firebase/firebaseQuery";
3
- import { PlacementState } from "../types";
4
- import { StudentPlacementData } from "../../../typeDefinitions";
5
-
6
-
7
- export interface UpcomingPlacementState extends PlacementState {
8
- upcoming?: StudentPlacementData;
9
- }
10
-
11
- const initialState: UpcomingPlacementState = {
12
- status: "",
13
- lastPlacement: undefined,
14
- upcoming: undefined,
15
- values: {}
16
- }
17
-
18
-
19
- export const updateUpcomingStudentPlacement = createAsyncThunk(
20
- "upcomingStudentPlacements/updateStudentPlacement",
21
- async ({ placementId, attributes }:{placementId: string, attributes: Partial<StudentPlacementData>}, {rejectWithValue}) => {
22
- const firebaseQuery = new FirebaseQuery();
23
- try {
24
- await firebaseQuery.update(["placements", placementId], attributes);
25
- return {attributes, placementId}
26
-
27
- } catch(error) {
28
- return rejectWithValue(error);
29
- }
30
- }
31
- );
32
-
33
- export const deleteUpcomingStudentPlacement = createAsyncThunk(
34
- "upcomingStudentPlacements/deleteStudentPlacement",
35
- async ({placementId}:{placementId: string}, { rejectWithValue}) => {
36
- const firebaseQuery = new FirebaseQuery();
37
- try {
38
- await firebaseQuery.delete(["placements", placementId]);
39
- return placementId
40
-
41
- } catch(error) {
42
- return rejectWithValue(error);
43
- }
44
- }
45
- );
46
-
47
-
48
-
49
- export const upcomingStudentsPlacementsSlice = createSlice({
50
- name: "upcomingStudentsPlacements",
51
- initialState,
52
-
53
- reducers: {
54
- setUpcomingStudentPlacements: (state, action) => {
55
- state.values = action.payload
56
- },
57
-
58
- setUpcomingStatus: (state, action) => {
59
- state.status = action.payload
60
- },
61
-
62
- setUpcoming: (state, action) => {
63
- state.upcoming = action.payload
64
- },
65
-
66
- setUpcomingIsDraft: (state, action) => {
67
- const {placementId, draft} = action.payload
68
- state.values[placementId].draft = draft
69
- },
70
-
71
- addUpcomingStudentPlacements: (state, action) => {
72
- state.values = {...state.values, ...action.payload}
73
- },
74
-
75
- addUpcomingStudentPlacement: (state, action) => {
76
- const {placement, placementId} = action.payload
77
- const newPlacements = {...state.values};
78
- newPlacements[placementId] = placement;
79
- state.values = Object.fromEntries(Object.entries(newPlacements).sort(([, a], [, b]) => b.startDate > a.endDate ? 1 : -1));
80
- },
81
-
82
- setLastUpcomingPlacement: (state, action) => {
83
- state.lastPlacement = action.payload
84
- }
85
- },
86
-
87
-
88
- extraReducers(builder){
89
- builder
90
- .addCase(updateUpcomingStudentPlacement.fulfilled, (state, action) => {
91
- const {attributes, placementId} = action.payload
92
- if (!placementId) return
93
- state.values[placementId] = {...state.values[placementId], ...attributes};
94
- })
95
-
96
-
97
- .addCase(deleteUpcomingStudentPlacement.fulfilled, (state, action) => {
98
- const placementIdToDelete = action.payload;
99
- const newPlacements = { ...state, values: { ...state.values } };
100
- delete newPlacements.values[placementIdToDelete];
101
- return newPlacements;
102
- })
103
- }
104
- })
105
-
106
-
107
- export const {addUpcomingStudentPlacements, addUpcomingStudentPlacement, setUpcomingStudentPlacements, setLastUpcomingPlacement, setUpcoming, setUpcomingStatus, setUpcomingIsDraft} = upcomingStudentsPlacementsSlice.actions
108
-
1
+ import {createSlice, createAsyncThunk} from "@reduxjs/toolkit";
2
+ import FirebaseQuery from "../../../firebase/firebaseQuery";
3
+ import { PlacementState } from "../types";
4
+ import { StudentPlacementData } from "../../../typeDefinitions";
5
+
6
+
7
+ export interface UpcomingPlacementState extends PlacementState {
8
+ upcoming?: StudentPlacementData;
9
+ }
10
+
11
+ const initialState: UpcomingPlacementState = {
12
+ status: "",
13
+ lastPlacement: undefined,
14
+ upcoming: undefined,
15
+ values: {}
16
+ }
17
+
18
+
19
+ export const updateUpcomingStudentPlacement = createAsyncThunk(
20
+ "upcomingStudentPlacements/updateStudentPlacement",
21
+ async ({ placementId, attributes }:{placementId: string, attributes: Partial<StudentPlacementData>}, {rejectWithValue}) => {
22
+ const firebaseQuery = new FirebaseQuery();
23
+ try {
24
+ await firebaseQuery.update(["placements", placementId], attributes);
25
+ return {attributes, placementId}
26
+
27
+ } catch(error) {
28
+ return rejectWithValue(error);
29
+ }
30
+ }
31
+ );
32
+
33
+ export const deleteUpcomingStudentPlacement = createAsyncThunk(
34
+ "upcomingStudentPlacements/deleteStudentPlacement",
35
+ async ({placementId}:{placementId: string}, { rejectWithValue}) => {
36
+ const firebaseQuery = new FirebaseQuery();
37
+ try {
38
+ await firebaseQuery.delete(["placements", placementId]);
39
+ return placementId
40
+
41
+ } catch(error) {
42
+ return rejectWithValue(error);
43
+ }
44
+ }
45
+ );
46
+
47
+
48
+
49
+ export const upcomingStudentsPlacementsSlice = createSlice({
50
+ name: "upcomingStudentsPlacements",
51
+ initialState,
52
+
53
+ reducers: {
54
+ setUpcomingStudentPlacements: (state, action) => {
55
+ state.values = action.payload
56
+ },
57
+
58
+ setUpcomingStatus: (state, action) => {
59
+ state.status = action.payload
60
+ },
61
+
62
+ setUpcoming: (state, action) => {
63
+ state.upcoming = action.payload
64
+ },
65
+
66
+ setUpcomingIsDraft: (state, action) => {
67
+ const {placementId, draft} = action.payload
68
+ state.values[placementId].draft = draft
69
+ },
70
+
71
+ addUpcomingStudentPlacements: (state, action) => {
72
+ state.values = {...state.values, ...action.payload}
73
+ },
74
+
75
+ addUpcomingStudentPlacement: (state, action) => {
76
+ const {placement, placementId} = action.payload
77
+ const newPlacements = {...state.values};
78
+ newPlacements[placementId] = placement;
79
+ state.values = Object.fromEntries(Object.entries(newPlacements).sort(([, a], [, b]) => b.startDate > a.endDate ? 1 : -1));
80
+ },
81
+
82
+ setLastUpcomingPlacement: (state, action) => {
83
+ state.lastPlacement = action.payload
84
+ }
85
+ },
86
+
87
+
88
+ extraReducers(builder){
89
+ builder
90
+ .addCase(updateUpcomingStudentPlacement.fulfilled, (state, action) => {
91
+ const {attributes, placementId} = action.payload
92
+ if (!placementId) return
93
+ state.values[placementId] = {...state.values[placementId], ...attributes};
94
+ })
95
+
96
+
97
+ .addCase(deleteUpcomingStudentPlacement.fulfilled, (state, action) => {
98
+ const placementIdToDelete = action.payload;
99
+ const newPlacements = { ...state, values: { ...state.values } };
100
+ delete newPlacements.values[placementIdToDelete];
101
+ return newPlacements;
102
+ })
103
+ }
104
+ })
105
+
106
+
107
+ export const {addUpcomingStudentPlacements, addUpcomingStudentPlacement, setUpcomingStudentPlacements, setLastUpcomingPlacement, setUpcoming, setUpcomingStatus, setUpcomingIsDraft} = upcomingStudentsPlacementsSlice.actions
108
+
109
109
  export default upcomingStudentsPlacementsSlice.reducer;
@@ -1,9 +1,9 @@
1
- import { QueryConstraint } from "firebase/firestore";
2
- import { useStudentPlacementList } from "../../../hooks";
3
- import { UserData } from "../../../typeDefinitions";
4
-
5
- export function useStudentPlacements({user, uid, queryConstraint}: {user: UserData, uid?: string, queryConstraint?: QueryConstraint[]}){
6
- const {placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, reset} = useStudentPlacementList({...{user: user as UserData, uid: uid || user?.id, queryConstraint}})
7
-
8
- return ({...{placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, resetPlacements: reset}});
9
- }
1
+ import { QueryConstraint } from "firebase/firestore";
2
+ import { useStudentPlacementList } from "../../../hooks";
3
+ import { UserData } from "../../../typeDefinitions";
4
+
5
+ export function useStudentPlacements({user, uid, queryConstraint}: {user: UserData, uid?: string, queryConstraint?: QueryConstraint[]}){
6
+ const {placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, reset} = useStudentPlacementList({...{user: user as UserData, uid: uid || user?.id, queryConstraint}})
7
+
8
+ return ({...{placements, loadMoreIcon, loadMorePlacements, setQuery, setInitialQueryLimit, resetPlacements: reset}});
9
+ }
@@ -1,11 +1,11 @@
1
-
2
- import { DocumentData, QueryDocumentSnapshot } from "firebase/firestore"
3
- import { StudentPlacementData } from "../../typeDefinitions"
4
-
5
- export type PlacementState = {
6
- status: string
7
- lastPlacement: QueryDocumentSnapshot<DocumentData> | undefined,
8
- values: {
9
- [key: string]: StudentPlacementData
10
- }
1
+
2
+ import { DocumentData, QueryDocumentSnapshot } from "firebase/firestore"
3
+ import { StudentPlacementData } from "../../typeDefinitions"
4
+
5
+ export type PlacementState = {
6
+ status: string
7
+ lastPlacement: QueryDocumentSnapshot<DocumentData> | undefined,
8
+ values: {
9
+ [key: string]: StudentPlacementData
10
+ }
11
11
  }