//UPDATING USER
API.users
.updateProfile({
subscribedNotifications: {
[trigger]: ["+phone"],
},
})
.then(async () => {
queryClient.invalidateQueries(["me", token]);
queryClient.invalidateQueries(["jobs", token]);
})
.
.
.
//JOBS QUERY
const jobs = useQuery({
queryKey: ["jobs", token],
queryFn: async () =>
API.jobs
.jobsAvailable({
includeWiderAreas: true,
term: await getDynamicTerms(userQ.data!.data.subscribedNotifications),
})
.then(async (res) => res),
enabled: !!userQ.data?.data.subscribedNotifications,
staleTime: 0,
refetchOnMount: true,
});
.
.
.
//getDynamicTerms function to properly type the variables
const getDynamicTerms = async (userData: NotificationSubscription) => {
const terms = [];
if (userData.newOneTimeJobs?.includes(NOTIFICATION_CHANNEL.PHONE)) {
terms.push(JOB_TERM.ONE_TIME);
}
if (userData.newLongTermJobs?.includes(NOTIFICATION_CHANNEL.PHONE)) {
terms.push(JOB_TERM.LONG_TERM);
}
if (userData.newFullTimeJobs?.includes(NOTIFICATION_CHANNEL.PHONE)) {
terms.push(JOB_TERM.FULL_TIME);
}
return terms;
};
//UPDATING USER
API.users
.updateProfile({
subscribedNotifications: {
[trigger]: ["+phone"],
},
})
.then(async () => {
queryClient.invalidateQueries(["me", token]);
queryClient.invalidateQueries(["jobs", token]);
})
.
.
.
//JOBS QUERY
const jobs = useQuery({
queryKey: ["jobs", token],
queryFn: async () =>
API.jobs
.jobsAvailable({
includeWiderAreas: true,
term: await getDynamicTerms(userQ.data!.data.subscribedNotifications),
})
.then(async (res) => res),
enabled: !!userQ.data?.data.subscribedNotifications,
staleTime: 0,
refetchOnMount: true,
});
.
.
.
//getDynamicTerms function to properly type the variables
const getDynamicTerms = async (userData: NotificationSubscription) => {
const terms = [];
if (userData.newOneTimeJobs?.includes(NOTIFICATION_CHANNEL.PHONE)) {
terms.push(JOB_TERM.ONE_TIME);
}
if (userData.newLongTermJobs?.includes(NOTIFICATION_CHANNEL.PHONE)) {
terms.push(JOB_TERM.LONG_TERM);
}
if (userData.newFullTimeJobs?.includes(NOTIFICATION_CHANNEL.PHONE)) {
terms.push(JOB_TERM.FULL_TIME);
}
return terms;
};