Skip to content

Commit

Permalink
toggling all coaches in modal works for db - accept all button needs fix
Browse files Browse the repository at this point in the history
  • Loading branch information
cfiguer055 committed Dec 11, 2024
1 parent cb84c36 commit c8f3561
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 68 deletions.
37 changes: 21 additions & 16 deletions SmartClothingApp/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,24 +109,37 @@ export default function App() {
console.log("Show Permissions Modal:", showPermissionsModal);
console.log("Coach Id:", coachId);
console.log("Coach Name:", coachName);
// TEMP
let pendingCoaches = coachId;
// let pendingCoaches = getPendingCoaches();
// pendingCoaches.push(coachId);
// Open PermissionsModal if UID exists
const uid = await checkUID();
let pendingCoaches = await fetchPendingPermissionsList(uid);
if (uid && screen === "Home" && showPermissionsModal) {
console.log("...Opening PermissionsModal");
setCoachName(coachName || "");
setCoachId(coachId);
setPendingCoaches([pendingCoaches] || []);
setPendingCoaches(pendingCoaches || []);
//setPendingCoaches([]);
setNotificationModalVisible(showPermissionsModal);
}
} else {
console.error("Notification data is missing:", response);
}
};

const fetchPendingPermissionsList = async(uid) => {
const userDoc = await getDoc(doc(database, "Users", uid));
if (userDoc.exists()) {
const userData = userDoc.data();
const pendingPermissions = userData.pendingPermissions || [];
console.log("Pending Permissions from DB:", pendingPermissions);
return pendingPermissions;
} else {
console.error("User document not found.");
return null;
}
};




Expand Down Expand Up @@ -188,19 +201,11 @@ export default function App() {
const checkPendingPermissions = async (uid) => {
try {
// Fetch user document from Firestore
const userDoc = await getDoc(doc(database, "Users", uid));
if (userDoc.exists()) {
const userData = userDoc.data();
const pendingPermissions = userData.pendingPermissions || [];
console.log("Pending Permissions from DB:", pendingPermissions);
// Check if there are any pending coaches
if (pendingPermissions.length > 0) {
console.log("Pending coaches found. Opening Permissions Modal.");
setPendingCoaches(pendingPermissions);
setNotificationModalVisible(true);
}
} else {
console.error("User document not found.");
const pendingPermissions = await fetchPendingPermissionsList(uid);
if (pendingPermissions.length > 0) {
console.log("Pending coaches found. Opening Permissions Modal.");
setPendingCoaches(pendingPermissions);
setNotificationModalVisible(true);
}
} catch (error) {
console.error("Error checking pending permissions:", error);
Expand Down
126 changes: 75 additions & 51 deletions SmartClothingApp/src/actions/userActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import {
getFirestore,
deleteDoc,
orderBy,
arrayUnion,
arrayRemove,
} from "firebase/firestore";

import { storeUID, storeMetrics, storeFirstName, storeLastName, storeEmail, getUID, getMetrics, getFirstName, getLastName, getEmail, clearUID, clearMetrics, clearFirstName, clearLastName, clearEmail } from "../utils/localStorage.js";
Expand Down Expand Up @@ -526,37 +528,41 @@ export const removeFromPendingPermissions = (coachId) => {
try {
const { uid } = auth.currentUser;
const userDocRef = doc(database, "Users", uid);
const userDoc = await getDoc(userDocRef);

// Fetch the current pendingPermissions
if (userDoc.exists()) {
const userData = userDoc.data();
// If pendingPermissions doesn't exist, initialize it as an empty array
console.log(userData);
console.log(userData.pendingPermissions);
if (!userData.pendingPermissions) {
console.log('pendingPermissions does not exist, initializing it for accounts created after the push notification update.');
await updateDoc(userDocRef, { pendingPermissions: [] });
// Refetch the document to ensure the data is up to date after the update
const updatedUserDoc = await getDoc(userDocRef);
const updatedUserData = updatedUserDoc.data();
// Now you have the latest data
const updatedPendingPermissions = updatedUserData.pendingPermissions.filter((id) => id !== coachId);
// Update the pendingPermissions in Firestore
await updateDoc(userDocRef, { pendingPermissions: updatedPendingPermissions });
console.log(`Removed ${coachId} from pendingPermissions.`);
} else {
console.log('pendingPermissions exists, updating...');
// If pendingPermissions exists, just update it
const updatedPendingPermissions = userData.pendingPermissions.filter((id) => id !== coachId);
await updateDoc(userDocRef, { pendingPermissions: updatedPendingPermissions });
console.log(`Removed ${coachId} from pendingPermissions.`);
}
}
// Atomically remove the coachId from pendingPermissions
await updateDoc(userDocRef, {
pendingPermissions: arrayRemove(coachId),
});

// Dispatch Redux action to update the state
dispatch({ type: "REMOVE_FROM_PENDING_PERMISSIONS", payload: coachId });

console.log(`Removed ${coachId} from pendingPermissions.`);
} catch (err) {
console.error("Error removing from pendingPermissions:", err);
}
}
};
};

export const addToCoachList = (coachId) => {
return async (dispatch) => {
try {
const { uid } = auth.currentUser;
const userDocRef = doc(database, "Users", uid);

// Atomically add the coachId to coachList
await updateDoc(userDocRef, {
coachList: arrayUnion(coachId),
});

// Dispatch Redux action to update the state
dispatch({ type: "ADD_TO_COACH_LIST", payload: coachId });

console.log(`Added ${coachId} to coachList.`);
} catch (err) {
console.error("Error adding to coach list:", err);
}
};
};

// export const removeFromPendingPermissions = (coachId) => {
Expand All @@ -565,39 +571,57 @@ export const removeFromPendingPermissions = (coachId) => {
// const { uid } = auth.currentUser;
// const userDocRef = doc(database, "Users", uid);
// const userDoc = await getDoc(userDocRef);

// // Fetch the current pendingPermissions
// if(userDoc.exists()) {
// if (userDoc.exists()) {
// const userData = userDoc.data();
// const updatedPendingPermissions = userData.pendingPermissions.filter((id) => id !== coachId);
// // Update the pendingPermissions in Firestore
// await updateDoc(userDocRef, {pendingPermissions: updatedPendingPermissions});
// console.log(`Removed ${coachId} from pendingPermissions.`);
// // If pendingPermissions doesn't exist, initialize it as an empty array
// console.log(userData);
// console.log(userData.pendingPermissions);
// if (!userData.pendingPermissions) {
// console.log('pendingPermissions does not exist, initializing it for accounts created after the push notification update.');
// await updateDoc(userDocRef, { pendingPermissions: [] });
// // Refetch the document to ensure the data is up to date after the update
// const updatedUserDoc = await getDoc(userDocRef);
// const updatedUserData = updatedUserDoc.data();
// // Now you have the latest data
// const updatedPendingPermissions = updatedUserData.pendingPermissions.filter((id) => id !== coachId);
// // Update the pendingPermissions in Firestore
// await updateDoc(userDocRef, { pendingPermissions: updatedPendingPermissions });
// console.log(`Removed ${coachId} from pendingPermissions.`);
// } else {
// console.log('pendingPermissions exists, updating...');
// // If pendingPermissions exists, just update it
// const updatedPendingPermissions = userData.pendingPermissions.filter((id) => id !== coachId);
// await updateDoc(userDocRef, { pendingPermissions: updatedPendingPermissions });
// console.log(`Removed ${coachId} from pendingPermissions.`);
// }
// }
// } catch (err) {
// console.error("Error removing from pendingPermissions:", err);
// }
// }
// };

export const addToCoachList = (coachId) => {
return async (dispatch) => {
try {
const { uid } = auth.currentUser;
const userDocRef = doc(database, "Users", uid);
const userDoc = await getDoc(userDocRef);
// Fetch the current coachList
if(userDoc.exists()) {
const userData = userDoc.data();
const updatedCoachList = [...(userData.coachList || []), coachId];
// Update the coachList in Firestore
await updateDoc(userDocRef, {coachList: updatedCoachList});
console.log(`Added ${coachId} to coachList.`);
}
} catch (err) {
console.error("Error adding to coach list:", err);
}
}
};
// export const addToCoachList = (coachId) => {
// return async (dispatch) => {
// try {
// const { uid } = auth.currentUser;
// const userDocRef = doc(database, "Users", uid);
// const userDoc = await getDoc(userDocRef);
// // Fetch the current coachList
// if(userDoc.exists()) {
// const userData = userDoc.data();
// const updatedCoachList = [...(userData.coachList || []), coachId];
// // Update the coachList in Firestore
// await updateDoc(userDocRef, {coachList: updatedCoachList});
// console.log(`Added ${coachId} to coachList.`);
// }
// } catch (err) {
// console.error("Error adding to coach list:", err);
// }
// }
// };

export const querySleepData = async (startDate, endDate) => {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const NotificationPermissionsModal = ({
}, {});
setPermissions(updatedPermissions);
console.log("All permissions accepted:", updatedPermissions);
closeModal();
//closeModal();
};

const handleSave = () => {
Expand Down

0 comments on commit c8f3561

Please sign in to comment.