diff --git a/Utility.js b/Utility.js index 31e409cd..e4764d51 100644 --- a/Utility.js +++ b/Utility.js @@ -140,3 +140,7 @@ export function getTimezoneOffsetTime(time) { const localTime = time - timezoneOffset; return Math.floor(localTime / 86400000) * 86400000 + timezoneOffset; } + +export function getPfpName(teamId, userId) { + return `${teamId}_${userId}`; +} diff --git a/app/content/assignments/index.js b/app/content/assignments/index.js index 39f825da..cfe9308f 100644 --- a/app/content/assignments/index.js +++ b/app/content/assignments/index.js @@ -6,8 +6,8 @@ import ErrorComponent from "~/components/errorComponent"; import Header from "~/components/header"; import Loading from "~/components/loading"; import { useAuthContext } from "~/context/Auth"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; export default function Index() { const { currentUserId } = useAuthContext(); diff --git a/app/content/assignments/players.js b/app/content/assignments/players.js index 9263fd1f..5fdb5575 100644 --- a/app/content/assignments/players.js +++ b/app/content/assignments/players.js @@ -15,10 +15,10 @@ import RefreshInvalidate from "~/components/refreshInvalidate"; import { useAlertContext } from "~/context/Alert"; import { useAuthContext } from "~/context/Auth"; import { useTimeContext } from "~/context/Time"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; +import { invalidateMultipleKeys } from "~/dbOperations/invalidateMultipleKeys"; import { db } from "~/firebaseConfig"; -import { invalidateMultipleKeys } from "~/hooks/invalidateMultipleKeys"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; function Index() { const navigation = useNavigation(); diff --git a/app/content/drill/[id]/description.js b/app/content/drill/[id]/description.js index b32a0852..b80ad634 100644 --- a/app/content/drill/[id]/description.js +++ b/app/content/drill/[id]/description.js @@ -9,8 +9,8 @@ import Loading from "~/components/loading"; import RefreshInvalidate from "~/components/refreshInvalidate"; import { useAuthContext } from "~/context/Auth"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; export default function Description() { const drillId = useLocalSearchParams()["id"]; diff --git a/app/content/drill/[id]/index.js b/app/content/drill/[id]/index.js index 43ba5eba..96505a1b 100644 --- a/app/content/drill/[id]/index.js +++ b/app/content/drill/[id]/index.js @@ -12,8 +12,8 @@ import ErrorComponent from "~/components/errorComponent"; import Header from "~/components/header"; import Loading from "~/components/loading"; import { useAuthContext } from "~/context/Auth"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; export default function Index() { const [value, setValue] = React.useState("description"); diff --git a/app/content/drill/[id]/leaderboard.js b/app/content/drill/[id]/leaderboard.js index 51568dc1..53947480 100644 --- a/app/content/drill/[id]/leaderboard.js +++ b/app/content/drill/[id]/leaderboard.js @@ -9,10 +9,10 @@ import EmptyScreen from "~/components/emptyScreen"; import ErrorComponent from "~/components/errorComponent"; import Loading from "~/components/loading"; import RefreshInvalidate from "~/components/refreshInvalidate"; -import { useAllTimeRecords } from "~/hooks/useAllTimeRecords"; -import { useBestAttempts } from "~/hooks/useBestAttempts"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; +import { useAllTimeRecords } from "~/dbOperations/hooks/useAllTimeRecords"; +import { useBestAttempts } from "~/dbOperations/hooks/useBestAttempts"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; function getLeaderboardRanks( orderedLeaderboard, diff --git a/app/content/drill/[id]/statistics.js b/app/content/drill/[id]/statistics.js index 699bda89..1b0ce829 100644 --- a/app/content/drill/[id]/statistics.js +++ b/app/content/drill/[id]/statistics.js @@ -3,8 +3,8 @@ import BarChartScreen from "~/components/barChart"; import ErrorComponent from "~/components/errorComponent"; import Loading from "~/components/loading"; import { useAuthContext } from "~/context/Auth"; -import { useAttempts } from "~/hooks/useAttempts"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; +import { useAttempts } from "~/dbOperations/hooks/useAttempts"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; export default function Stat() { const drillId = useLocalSearchParams()["id"]; diff --git a/app/content/drill/index.js b/app/content/drill/index.js index 709d3231..c011a353 100644 --- a/app/content/drill/index.js +++ b/app/content/drill/index.js @@ -6,7 +6,7 @@ import DrillList from "~/components/drillList"; import ErrorComponent from "~/components/errorComponent"; import Header from "~/components/header"; import Loading from "~/components/loading"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; export default function Index() { const { assignedTime, id: drillId, currentTime } = useLocalSearchParams(); diff --git a/app/content/profile/drills/[id].js b/app/content/profile/drills/[id].js index 39ba94db..2e2043ed 100644 --- a/app/content/profile/drills/[id].js +++ b/app/content/profile/drills/[id].js @@ -7,8 +7,8 @@ import ErrorComponent from "~/components/errorComponent"; import Header from "~/components/header"; import Loading from "~/components/loading"; import { useAuthContext } from "~/context/Auth"; -import { useAttempts } from "~/hooks/useAttempts"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; +import { useAttempts } from "~/dbOperations/hooks/useAttempts"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; export default function Stat() { const navigation = useNavigation(); diff --git a/app/content/profile/index.js b/app/content/profile/index.js index fed60e2a..301a7d47 100644 --- a/app/content/profile/index.js +++ b/app/content/profile/index.js @@ -19,15 +19,11 @@ import { Text, TouchableOpacity, View, - useWindowDimensions, } from "react-native"; import { ActivityIndicator, Appbar, Switch } from "react-native-paper"; -import { - SafeAreaView, - useSafeAreaInsets, -} from "react-native-safe-area-context"; +import { SafeAreaView } from "react-native-safe-area-context"; import { themeColors } from "~/Constants"; -import { getErrorString } from "~/Utility"; +import { getErrorString, getPfpName } from "~/Utility"; import ProfilePicture from "~/components/ProfilePicture"; import BottomSheetWrapper from "~/components/bottomSheetWrapper"; import DrillList from "~/components/drillList"; @@ -38,12 +34,12 @@ import Loading from "~/components/loading"; import ProfileCard from "~/components/profileCard"; import { useAlertContext } from "~/context/Alert"; import { useAuthContext } from "~/context/Auth"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; +import { useEmailInfo } from "~/dbOperations/hooks/useEmailInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; +import { handleImageUpload } from "~/dbOperations/imageUpload"; +import { invalidateMultipleKeys } from "~/dbOperations/invalidateMultipleKeys"; import { db } from "~/firebaseConfig"; -import { handleImageUpload } from "~/hooks/imageUpload"; -import { invalidateMultipleKeys } from "~/hooks/invalidateMultipleKeys"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; -import { useEmailInfo } from "~/hooks/useEmailInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; function Index() { const { signOut, currentUserId, currentTeamId } = useAuthContext(); @@ -52,10 +48,6 @@ function Index() { const { showDialog, showSnackBar } = useAlertContext(); - const insets = useSafeAreaInsets(); - - const { height, width } = useWindowDimensions(); - const { data: userData, error: userError, @@ -315,8 +307,10 @@ function Index() { await handleImageUpload( setImageUploading, showSnackBar, - userId, + getPfpName(currentTeamId, userId), userRef, + profilePicSize, + profilePicSize, ); await invalidateMultipleKeys(queryClient, [["userInfo"]]); } catch (e) { diff --git a/app/content/team/index.js b/app/content/team/index.js index a943934e..cd8ff9e2 100644 --- a/app/content/team/index.js +++ b/app/content/team/index.js @@ -37,12 +37,12 @@ import Loading from "~/components/loading"; import RefreshInvalidate from "~/components/refreshInvalidate"; import { useAlertContext } from "~/context/Alert"; import { useAuthContext } from "~/context/Auth"; +import { useTeamInfo } from "~/dbOperations/hooks/useTeamInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; +import { handleImageUpload } from "~/dbOperations/imageUpload"; +import { invalidateMultipleKeys } from "~/dbOperations/invalidateMultipleKeys"; +import { resetLeaderboards } from "~/dbOperations/resetLeaderboards"; import { db } from "~/firebaseConfig"; -import { handleImageUpload } from "~/hooks/imageUpload"; -import { invalidateMultipleKeys } from "~/hooks/invalidateMultipleKeys"; -import { resetLeaderboards } from "~/hooks/resetLeaderboards"; -import { useTeamInfo } from "~/hooks/useTeamInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; function Index() { const { currentUserId, currentTeamId } = useAuthContext(); @@ -216,7 +216,7 @@ function Index() { hideResetDialog, async () => { try { - await resetLeaderboards(); + await resetLeaderboards(currentTeamId); await invalidateMultipleKeys(queryClient, [["best_attempts"]]); hideResetDialog(); } catch (e) { @@ -306,6 +306,8 @@ function Index() { showSnackBar, currentTeamId, teamRef, + 175, + 100, ); await invalidateMultipleKeys(queryClient, [["teamInfo"]]); } catch (e) { diff --git a/app/content/team/users/[user]/drills/[id].js b/app/content/team/users/[user]/drills/[id].js index e723b63d..b2534979 100644 --- a/app/content/team/users/[user]/drills/[id].js +++ b/app/content/team/users/[user]/drills/[id].js @@ -6,8 +6,8 @@ import BarChartScreen from "~/components/barChart"; import ErrorComponent from "~/components/errorComponent"; import Header from "~/components/header"; import Loading from "~/components/loading"; -import { useAttempts } from "~/hooks/useAttempts"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; +import { useAttempts } from "~/dbOperations/hooks/useAttempts"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; export default function Stat() { const navigation = useNavigation(); diff --git a/app/content/team/users/[user]/index.js b/app/content/team/users/[user]/index.js index 48b27247..e9322460 100644 --- a/app/content/team/users/[user]/index.js +++ b/app/content/team/users/[user]/index.js @@ -18,24 +18,24 @@ import ProfileCard from "~/components/profileCard"; import RefreshInvalidate from "~/components/refreshInvalidate"; import { useAlertContext } from "~/context/Alert"; import { useAuthContext } from "~/context/Auth"; +import { useDrillInfo } from "~/dbOperations/hooks/useDrillInfo"; +import { useEmailInfo } from "~/dbOperations/hooks/useEmailInfo"; +import { useUserInfo } from "~/dbOperations/hooks/useUserInfo"; +import { invalidateMultipleKeys } from "~/dbOperations/invalidateMultipleKeys"; +import { removeUser } from "~/dbOperations/removeUser"; import { db } from "~/firebaseConfig"; -import { invalidateMultipleKeys } from "~/hooks/invalidateMultipleKeys"; -import { removeUser } from "~/hooks/removeUser"; -import { useDrillInfo } from "~/hooks/useDrillInfo"; -import { useEmailInfo } from "~/hooks/useEmailInfo"; -import { useUserInfo } from "~/hooks/useUserInfo"; //A function to add a user to the blacklist table with a timestamp -async function blacklistUser(userId, userInfo) { +async function blacklistUser(teamId, userId, userInfo) { //Create new document with userId as the id and a time field try { - await setDoc(doc(db, "teams", "1", "blacklist", userId), { + await setDoc(doc(db, "teams", teamId, "blacklist", userId), { time: Date.now(), name: userInfo["name"], }); //remove users data - await removeUser(userId); + await removeUser(teamId, userId); console.log("User Removed successfully!"); } catch (e) { console.log("Error removing user:", e); @@ -43,8 +43,8 @@ async function blacklistUser(userId, userInfo) { } } -async function changeRole(userId, newRole) { - const userRef = doc(db, "teams", "1", "users", userId); +async function changeRole(teamId, userId, newRole) { + const userRef = doc(db, "teams", teamId, "users", userId); try { await updateDoc(userRef, { role: newRole }); console.log("User Role Changed successfully!"); @@ -70,7 +70,7 @@ function Index() { const { showDialog, showSnackBar } = useAlertContext(); - const { currentUserId } = useAuthContext(); + const { currentUserId, currentTeamId } = useAuthContext(); const { data: userInfo, @@ -243,11 +243,11 @@ function Index() { } onPress={async () => { try { - if (userInfo.role === "player") { - await changeRole(userId, "coach"); - } else { - await changeRole(userId, "player"); - } + await changeRole( + currentTeamId, + userId, + userInfo.role === "player" ? "coach" : "player", + ); await invalidateMultipleKeys(queryClient, [["userInfo"]]); //invalidate cache showSnackBar("User role changed successfully!"); setMenuVisible(false); @@ -311,7 +311,7 @@ function Index() { hideRemoveDialog, async () => { try { - await removeUser(userId); + await removeUser(currentTeamId, userId); await queryClient.removeQueries(["userInfo", userId]); await invalidateMultipleKeys(queryClient, [ ["userInfo"], @@ -336,7 +336,7 @@ function Index() { hideBanDialog, async () => { try { - await blacklistUser(userId, userInfo); + await blacklistUser(currentTeamId, userId, userInfo); await queryClient.removeQueries(["userInfo", userId]); await invalidateMultipleKeys(queryClient, [ ["userInfo"], diff --git a/app/segments/(team)/chooseTeam.js b/app/segments/(team)/chooseTeam.js index 5632607b..246ef913 100644 --- a/app/segments/(team)/chooseTeam.js +++ b/app/segments/(team)/chooseTeam.js @@ -12,8 +12,8 @@ import ErrorComponent from "~/components/errorComponent"; import Loading from "~/components/loading"; import { useAlertContext } from "~/context/Alert"; import { useAuthContext } from "~/context/Auth"; +import { invalidateMultipleKeys } from "~/dbOperations/invalidateMultipleKeys"; import { auth, db } from "~/firebaseConfig"; -import { invalidateMultipleKeys } from "~/hooks/invalidateMultipleKeys"; function ChooseTeam() { const { signOut, currentUserId, currentUserInfo, setCurrentUserId } = @@ -99,6 +99,7 @@ function ChooseTeam() { >