@@ -15,9 +15,19 @@ import {
1515 getUsersFavoriteProjects ,
1616 updateUserSecureSettings ,
1717 getCurrentUserSecureSettings ,
18- getUserSecureSettings
18+ getUserSecureSettings ,
19+ getUserScheduleSettings ,
20+ updateUserScheduleSettings
1921} from '../apis/users.api' ;
20- import { User , AuthenticatedUser , UserSettings , UpdateUserRolePayload , Project , UserSecureSettings } from 'shared' ;
22+ import {
23+ User ,
24+ AuthenticatedUser ,
25+ UserSettings ,
26+ UpdateUserRolePayload ,
27+ Project ,
28+ UserSecureSettings ,
29+ UserScheduleSettings
30+ } from 'shared' ;
2131import { useAuth } from './auth.hooks' ;
2232import { useContext } from 'react' ;
2333import { UserContext } from '../app/AppContextUser' ;
@@ -112,6 +122,23 @@ export const useUserSecureSettings = (id: number) => {
112122 } ) ;
113123} ;
114124
125+ /**
126+ * Custom React Hook to supply a single user's schedule settings
127+ *
128+ * @param id User ID of the requested user's schedule settings
129+ * @returns the user's schedule settings
130+ */
131+ export const useUserScheduleSettings = ( id : number ) => {
132+ return useQuery < UserScheduleSettings , Error > ( [ 'users' , id , 'schedule-settings' ] , async ( ) => {
133+ try {
134+ const { data } = await getUserScheduleSettings ( id ) ;
135+ return data ;
136+ } catch ( error : unknown ) {
137+ return { drScheduleSettingsId : '' , personalGmail : '' , personalZoomLink : '' , availability : [ ] } ;
138+ }
139+ } ) ;
140+ } ;
141+
115142/**
116143 * Custom React Hook to supply a single user's settings.
117144 *
@@ -162,6 +189,28 @@ export const useUpdateUserSecureSettings = () => {
162189 ) ;
163190} ;
164191
192+ /**
193+ * Custom Hook to update a user's schedule settings
194+ *
195+ * @returns The mutation to update a user's schedule settings
196+ */
197+ export const useUpdateUserScheduleSettings = ( ) => {
198+ const user = useCurrentUser ( ) ;
199+ const queryClient = useQueryClient ( ) ;
200+ return useMutation < UserScheduleSettings , Error , UserScheduleSettings > (
201+ [ 'users' , 'schedule-settings' , 'update' ] ,
202+ async ( settings : UserScheduleSettings ) => {
203+ const { data } = await updateUserScheduleSettings ( settings ) ;
204+ return data ;
205+ } ,
206+ {
207+ onSuccess : ( ) => {
208+ queryClient . invalidateQueries ( [ 'users' , user . userId , 'schedule-settings' ] ) ;
209+ }
210+ }
211+ ) ;
212+ } ;
213+
165214/**
166215 * Custom React Hook to update a user's role.
167216 */
0 commit comments