diff --git a/package-lock.json b/package-lock.json
index 7f8e739..b048801 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,6 +14,7 @@
"@premieroctet/next-crud": "^2.2.0",
"@prisma/client": "^4.11.0",
"@reduxjs/toolkit": "^1.9.3",
+ "@tanstack/react-query": "^4.28.0",
"@types/react": "18.0.28",
"@types/react-dom": "18.0.11",
"bcrypt": "^5.1.0",
@@ -29,6 +30,7 @@
"react-dom": "18.2.0",
"react-hook-form": "^7.43.5",
"react-icons": "^4.8.0",
+ "react-query": "^3.39.3",
"socket.io": "^4.6.1",
"socket.io-client": "^4.6.1"
},
@@ -2173,6 +2175,41 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/@tanstack/query-core": {
+ "version": "4.27.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.27.0.tgz",
+ "integrity": "sha512-sm+QncWaPmM73IPwFlmWSKPqjdTXZeFf/7aEmWh00z7yl2FjqophPt0dE1EHW9P1giMC5rMviv7OUbSDmWzXXA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/react-query": {
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.28.0.tgz",
+ "integrity": "sha512-8cGBV5300RHlvYdS4ea+G1JcZIt5CIuprXYFnsWggkmGoC0b5JaqG0fIX3qwDL9PTNkKvG76NGThIWbpXivMrQ==",
+ "dependencies": {
+ "@tanstack/query-core": "4.27.0",
+ "use-sync-external-store": "^1.2.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-native": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -2870,6 +2907,14 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
"node_modules/bl": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
@@ -2901,6 +2946,21 @@
"node": ">=8"
}
},
+ "node_modules/broadcast-channel": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz",
+ "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "detect-node": "^2.1.0",
+ "js-sha3": "0.8.0",
+ "microseconds": "0.2.0",
+ "nano-time": "1.0.0",
+ "oblivious-set": "1.0.0",
+ "rimraf": "3.0.2",
+ "unload": "2.2.0"
+ }
+ },
"node_modules/buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -3441,6 +3501,11 @@
"node": ">=8"
}
},
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ },
"node_modules/detect-node-es": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
@@ -5408,6 +5473,11 @@
"url": "https://opencollective.com/js-sdsl"
}
},
+ "node_modules/js-sha3": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -5691,6 +5761,15 @@
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
},
+ "node_modules/match-sorter": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz",
+ "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "remove-accents": "0.4.2"
+ }
+ },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -5717,6 +5796,11 @@
"node": ">=8.6"
}
},
+ "node_modules/microseconds": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz",
+ "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA=="
+ },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -5820,6 +5904,14 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
+ "node_modules/nano-time": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz",
+ "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==",
+ "dependencies": {
+ "big-integer": "^1.6.16"
+ }
+ },
"node_modules/nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
@@ -6241,6 +6333,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/oblivious-set": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz",
+ "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw=="
+ },
"node_modules/oidc-token-hash": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz",
@@ -6831,6 +6928,31 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "node_modules/react-query": {
+ "version": "3.39.3",
+ "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz",
+ "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "broadcast-channel": "^3.4.1",
+ "match-sorter": "^6.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-remove-scroll": {
"version": "2.5.5",
"resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
@@ -7091,6 +7213,11 @@
"url": "https://github.com/sponsors/mysticatea"
}
},
+ "node_modules/remove-accents": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
+ "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
+ },
"node_modules/replace-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/replace-string/-/replace-string-3.1.0.tgz",
@@ -8008,6 +8135,15 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/unload": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz",
+ "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==",
+ "dependencies": {
+ "@babel/runtime": "^7.6.2",
+ "detect-node": "^2.0.4"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -8057,6 +8193,14 @@
}
}
},
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/package.json b/package.json
index 565d1ad..3461ff2 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,7 @@
"@premieroctet/next-crud": "^2.2.0",
"@prisma/client": "^4.11.0",
"@reduxjs/toolkit": "^1.9.3",
+ "@tanstack/react-query": "^4.28.0",
"@types/react": "18.0.28",
"@types/react-dom": "18.0.11",
"bcrypt": "^5.1.0",
@@ -30,6 +31,7 @@
"react-dom": "18.2.0",
"react-hook-form": "^7.43.5",
"react-icons": "^4.8.0",
+ "react-query": "^3.39.3",
"socket.io": "^4.6.1",
"socket.io-client": "^4.6.1"
},
diff --git a/public/ImageUsers/6421d8378e4fd27374c7f334_1680519696140.webp b/public/ImageUsers/6421d8378e4fd27374c7f334_1680519696140.webp
deleted file mode 100644
index d0dd90f..0000000
Binary files a/public/ImageUsers/6421d8378e4fd27374c7f334_1680519696140.webp and /dev/null differ
diff --git a/public/ImageUsers/6421d8378e4fd27374c7f334_1680547510322.jpg b/public/ImageUsers/6421d8378e4fd27374c7f334_1680547510322.jpg
new file mode 100644
index 0000000..13cddf7
Binary files /dev/null and b/public/ImageUsers/6421d8378e4fd27374c7f334_1680547510322.jpg differ
diff --git a/public/ImageUsers/6421d8378e4fd27374c7f334_1680547513233.webp b/public/ImageUsers/6421d8378e4fd27374c7f334_1680547513233.webp
new file mode 100644
index 0000000..42fa116
Binary files /dev/null and b/public/ImageUsers/6421d8378e4fd27374c7f334_1680547513233.webp differ
diff --git a/public/imageUsers/6421d8378e4fd27374c7f334_1680519696140.webp b/public/imageUsers/6421d8378e4fd27374c7f334_1680519696140.webp
deleted file mode 100644
index d0dd90f..0000000
Binary files a/public/imageUsers/6421d8378e4fd27374c7f334_1680519696140.webp and /dev/null differ
diff --git a/src/components/LoadingPage.jsx b/src/components/LoadingPage.jsx
new file mode 100644
index 0000000..68de68b
--- /dev/null
+++ b/src/components/LoadingPage.jsx
@@ -0,0 +1,21 @@
+import { Flex, Spinner } from "@chakra-ui/react";
+
+export default function LoadingPage() {
+ return (
+
+
+
+ );
+}
diff --git a/src/components/layout/user_profile/ModalChoosePassion.jsx b/src/components/layout/user_profile/ModalChoosePassion.jsx
index fcf6bb0..61b479c 100644
--- a/src/components/layout/user_profile/ModalChoosePassion.jsx
+++ b/src/components/layout/user_profile/ModalChoosePassion.jsx
@@ -10,21 +10,19 @@ import {
ModalFooter,
ModalHeader,
ModalOverlay,
- Text,
- useCheckbox,
useCheckboxGroup,
useDisclosure,
useToast,
} from "@chakra-ui/react";
-import { useEffect } from "react";
-import { useState } from "react";
+import { useQueryClient } from "@tanstack/react-query";
import { RiEditBoxLine } from "react-icons/ri";
import CustomCheckbox from "./CustomCheckbox";
export default function ModalChoosePassion(props) {
const { isOpen, onOpen, onClose } = useDisclosure();
const { user, passions } = props;
- const toast = useToast();
+ const toast = useToast({ position: "top", isClosable: true });
+ const client = useQueryClient();
const { value, getCheckboxProps } = useCheckboxGroup({
defaultValue: user.PassionID,
@@ -46,8 +44,8 @@ export default function ModalChoosePassion(props) {
title: "Centres d'intérêts mis à jour",
status: "success",
duration: 9000,
- isClosable: true,
});
+ client.invalidateQueries("user");
onClose();
})
.catch((err) => {
@@ -98,7 +96,9 @@ export default function ModalChoosePassion(props) {
diff --git a/src/components/layout/user_profile/ModalModifyImages.jsx b/src/components/layout/user_profile/ModalModifyImages.jsx
index f31de9a..2e06a19 100644
--- a/src/components/layout/user_profile/ModalModifyImages.jsx
+++ b/src/components/layout/user_profile/ModalModifyImages.jsx
@@ -13,8 +13,10 @@ import {
ModalHeader,
ModalOverlay,
useDisclosure,
+ useQuery,
useToast,
} from "@chakra-ui/react";
+import { useQueryClient } from "@tanstack/react-query";
import { useState } from "react";
import { RiEditBoxLine } from "react-icons/ri";
@@ -22,7 +24,9 @@ export default function ModalModifyImages(props) {
const { isOpen, onOpen, onClose } = useDisclosure();
const { images, user, userData, setUserData } = props;
const [listImage, setlistImage] = useState(images);
- const toast = useToast();
+ const toast = useToast({ position: "top", isClosable: true });
+
+ const client = useQueryClient();
const uploadImage = async (file) => {
const body = new FormData();
@@ -187,10 +191,7 @@ export default function ModalModifyImages(props) {
colorScheme="purple"
mr={3}
onClick={(e) => {
- setUserData({
- ...userData,
- images: [...listImage],
- });
+ client.invalidateQueries("user");
onClose();
}}
>
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
index aeeba90..12aae89 100644
--- a/src/pages/_app.tsx
+++ b/src/pages/_app.tsx
@@ -1,14 +1,22 @@
-import '@/styles/globals.css';
-import type {AppProps} from 'next/app';
-import {ChakraProvider} from '@chakra-ui/react';
-import { SessionProvider } from "next-auth/react"
+import "@/styles/globals.css";
+import type { AppProps } from "next/app";
+import { ChakraProvider } from "@chakra-ui/react";
+import { SessionProvider } from "next-auth/react";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
-export default function App({Component, pageProps: { session, ...pageProps }}: AppProps) {
+const queryClient = new QueryClient();
+
+export default function App({
+ Component,
+ pageProps: { session, ...pageProps },
+}: AppProps) {
return (
+
+
);
}
diff --git a/src/pages/admin/settings.tsx b/src/pages/admin/settings.tsx
index d993ca5..8575a89 100644
--- a/src/pages/admin/settings.tsx
+++ b/src/pages/admin/settings.tsx
@@ -1,91 +1,95 @@
import {
- Box,
- Button,
- Flex,
- FormControl,
- FormErrorMessage,
- FormLabel,
- Input,
- useToast,
- } from '@chakra-ui/react';
-import { useSession } from 'next-auth/react';
-import { useRouter } from 'next/router';
-import { useState } from 'react';
-import { useForm } from 'react-hook-form';
-
- export default function settings() {
+ Box,
+ Button,
+ Flex,
+ FormControl,
+ FormErrorMessage,
+ FormLabel,
+ Input,
+ useToast,
+} from "@chakra-ui/react";
+import { useSession } from "next-auth/react";
+import { useRouter } from "next/router";
+import { useState } from "react";
+import { useForm } from "react-hook-form";
- const router = useRouter();
- const toast = useToast();
+export default function settings() {
+ const router = useRouter();
+ const toast = useToast({ position: "top", isClosable: true });
- const [isLoading, setIsLoading] = useState(false);
+ const [isLoading, setIsLoading] = useState(false);
- const {
- handleSubmit,
- register,
- formState: { errors, isSubmitting },
- } = useForm()
+ const {
+ handleSubmit,
+ register,
+ formState: { errors, isSubmitting },
+ } = useForm();
- const [userData, setUserData] = useState({});
+ const [userData, setUserData] = useState({});
- const { data: session, status } = useSession();
- if (status === "unauthenticated") router.push("/login");
+ const { data: session, status } = useSession();
+ if (status === "unauthenticated") router.push("/login");
- if (status === "authenticated") {
- const { user } = session as unknown as Session;
+ if (status === "authenticated") {
+ const { user } = session as unknown as Session;
- if (user.role !== "ADMIN") router.push("/login");
+ if (user.role !== "ADMIN") router.push("/login");
- const savePassion = (passion: any) => {
- const options = {
- method: "POST",
- headers: { "Content-Type": "application/json" },
- body: JSON.stringify(passion),
- };
-
- fetch(`/api/passions`, options)
- .then((res) => {
- setIsLoading(false);
- toast({
- position:'top',
- title: `Passion ajoutée`,
- status: "success",
- isClosable: true,
- });
- })
- .catch((err) => {
- setIsLoading(false);
- toast({
- title: `Erreur lors de l'ajout`,
- position :'top',
- status: "error",
- isClosable: true,
- });
- });
- }
+ const savePassion = (passion: any) => {
+ const options = {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(passion),
+ };
- return (
- <>
-
-
- Passion
-
-
- {errors.name && errors.name.message}
-
-
-
-
- >
- );
- }
+ fetch(`/api/passions`, options)
+ .then((res) => {
+ setIsLoading(false);
+ toast({
+ title: `Passion ajoutée`,
+ status: "success",
+ });
+ })
+ .catch((err) => {
+ setIsLoading(false);
+ toast({
+ title: `Erreur lors de l'ajout`,
+ status: "error",
+ });
+ });
+ };
+
+ return (
+ <>
+
+
+ Passion
+
+
+ {errors.name && errors.name.message}
+
+
+
+
+ >
+ );
}
-
\ No newline at end of file
+}
diff --git a/src/pages/userProfile.tsx b/src/pages/userProfile.tsx
index c08b0fb..57d0708 100644
--- a/src/pages/userProfile.tsx
+++ b/src/pages/userProfile.tsx
@@ -18,7 +18,6 @@ import {
FormErrorMessage,
FormLabel,
HStack,
- Input,
Radio,
RadioGroup,
Text,
@@ -29,15 +28,17 @@ import {
import ModalModifyImages from "@/components/layout/user_profile/ModalModifyImages";
import ModalChoosePassion from "@/components/layout/user_profile/ModalChoosePassion";
import ProfileTagList from "@/components/layout/user_profile/ProfileTagList";
+import LoadingPage from "@/components/LoadingPage";
import { useEffect, useState } from "react";
import { useForm, Controller } from "react-hook-form";
+import { useQuery } from "@tanstack/react-query";
export default function UserProfile() {
const router = useRouter();
- const toast = useToast();
+ const toast = useToast({ position: "top", isClosable: true });
- const [isLoading, setIsLoading] = useState(false);
+ const [currentlyLoading, setCurrentlyLoading] = useState(false);
const [passions, setPassions] = useState(null);
const {
@@ -58,320 +59,347 @@ export default function UserProfile() {
}, []);
// faire un useEffect ou je fetch user
- const [userData, setUserData] = useState({});
-
const { data: session, status } = useSession();
- if (status === "unauthenticated") router.push("/login");
- if (status === "authenticated") {
- const { user } = session as unknown as Session;
+ // if (status === "unauthenticated") router.push("/login");
- const getTextGender = (gender) => {
- switch (gender) {
- case Gender.MALE:
- return "Homme";
- case Gender.FEMALE:
- return "Femme";
- case Gender.OTHER:
- return "Autre";
- case Gender.UNKNOWN:
- return "Non renseigné";
+ // if (status === "authenticated") {
+
+ const {
+ isLoading,
+ isError,
+ data: userData,
+ error,
+ } = useQuery({
+ queryKey: ["user"],
+ enabled: status === "authenticated",
+ queryFn: async () => {
+ const { user } = session as unknown as Session;
+
+ return fetch(`/api/users/${user.id}`)
+ .then((res) => res.json())
+ .catch((err) => {
+ return err;
+ });
+ },
+ });
+
+ if (isLoading) {
+ return ;
+ }
+
+ if (isError) {
+ return Error: {error.message};
+ }
+
+ const getTextGender = (gender) => {
+ switch (gender) {
+ case Gender.MALE:
+ return "Homme";
+ case Gender.FEMALE:
+ return "Femme";
+ case Gender.OTHER:
+ return "Autre";
+ case Gender.UNKNOWN:
+ return "Non renseigné";
+ }
+ };
+
+ const saveData = (values: any) => {
+ const trueValues = Object.keys(values).reduce((acc, key) => {
+ if (values[key] !== "" && values[key] !== undefined) {
+ acc[key] = values[key];
}
+ return acc;
+ }, {});
+
+ const options = {
+ method: "PATCH",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(trueValues),
};
- const saveData = (values: any) => {
- const trueValues = Object.keys(values).reduce((acc, key) => {
- if (values[key] !== "" && values[key] !== undefined) {
- acc[key] = values[key];
- }
- return acc;
- }, {});
-
- const options = {
- method: "PATCH",
- headers: { "Content-Type": "application/json" },
- body: JSON.stringify(trueValues),
- };
-
- if (Object.keys(trueValues).length > 0) {
- setIsLoading(true);
- fetch(`/api/users/${user.id}`, options)
- .then((res) => {
- setIsLoading(false);
- toast({
- position: "top",
- title: `Modifications effectuées`,
- status: "success",
- isClosable: true,
- });
- // router.reload();
- })
- .catch((err) => {
- setIsLoading(false);
- toast({
- title: `Erreur lors de l'envoi des modifications`,
- position: "top",
- status: "error",
- isClosable: true,
- });
- console.log(err);
+ if (Object.keys(trueValues).length > 0) {
+ setCurrentlyLoading(true);
+ fetch(`/api/users/${userData.id}`, options)
+ .then((res) => {
+ setCurrentlyLoading(false);
+ toast({
+ position: "top",
+ title: `Modifications effectuées`,
+ status: "success",
+ isClosable: true,
});
- }
- };
+ // router.reload();
+ })
+ .catch((err) => {
+ setCurrentlyLoading(false);
+ toast({
+ title: `Erreur lors de l'envoi des modifications`,
+ position: "top",
+ status: "error",
+ isClosable: true,
+ });
+ console.log(err);
+ });
+ }
+ };
- const formateDate = (dateString: string) => {
- var options = { year: "numeric", month: "long", day: "numeric" };
- return new Date(dateString).toLocaleDateString([], options);
- };
+ const formateDate = (dateString: string) => {
+ var options = { year: "numeric", month: "long", day: "numeric" };
+ return new Date(dateString).toLocaleDateString([], options);
+ };
- return (
-
-
-
-
- {userData.images ? (
-
- ) : (
-
- )}
-
- {/* {modal} */}
-
- {!userData.images ? (
-
- ) : (
-
+
+
+
+ {userData.images ? (
+
+ borderRadius={"1rem"}
+ >
+ ) : (
+
)}
+
+ {/* {modal} */}
-
-
- Modifiez les champs en les selectionnants
-
+ {!userData.images ? (
+
+ ) : (
+
+ )}
-
-
-
-
-
- Prénom :
-
- {
- return (
-
-
-
-
- );
- }}
- />
-
- {errors.firstName?.message}
-
-
-
-
-
-
- Nom :
-
- (
+
+
+ Modifiez les champs en les selectionnants
+
+
+
+
+
+
+
+ Prénom :
+
+ {
+ return (
- )}
- />
-
- {errors.lastName?.message}
-
-
-
-
-
- Date de naissance :
-
-
-
-
-
-
-
-
-
-
- Ville :
-
-
-
-
-
-
-
- Adresse mail :
-
-
-
-
-
-
-
-
-
-
- À propos :
+ );
+ }}
+ />
+
+ {errors.firstName?.message}
+
+
+
+
+
+
+ Nom :
(
{
- setUserData({ ...userData, bio: value });
- }}
>
-
+
)}
/>
-
- {errors.bio?.message}
+
+ {errors.lastName?.message}
-
-
-
-
- Centre d'intéret :
-
-
-
-
-
-
+
+
+ Date de naissance :
+
+
+
+
-
-
-
-
- Genre :
-
- (
-
-
-
- {getTextGender(Gender.MALE)}
-
-
- {getTextGender(Gender.FEMALE)}
-
-
- {getTextGender(Gender.OTHER)}
-
-
- {getTextGender(Gender.UNKNOWN)}
-
-
-
- )}
+
+
+
+
+
+ Ville :
+
+
+
+
+
+
+
+ Adresse mail :
+
+
+
+
+
+
+
+
+
+
+ À propos :
+
+ (
+
+
+
+
+ )}
+ />
+
+ {errors?.bio?.message ?? ""}
+
+
+
+
+
+
+
+ Centre d'intéret :
+
+
+
-
- {/*
+
+
+
+
+
+
+
+
+ Genre :
+
+ (
+
+
+
+ {getTextGender(Gender.MALE)}
+
+
+ {getTextGender(Gender.FEMALE)}
+
+
+ {getTextGender(Gender.OTHER)}
+
+
+ {getTextGender(Gender.UNKNOWN)}
+
+
+
+ )}
+ />
+
+ {/*
Préference :
@@ -379,13 +407,10 @@ export default function UserProfile() {
id={"preference"}
as="b"
value={
- user.preference === null
+ userData.preference === null
? Gender.UNKNOWN
- : user.preference
+ : userData.preference
}
- onChange={(value) => {
- setUserData({ ...userData, preference: value });
- }}
>
@@ -403,28 +428,28 @@ export default function UserProfile() {
*/}
-
-
-
-
-
-
-
-
-
- );
- }
+
+
+
+
+
+
+
+
+
+ );
+ // }
}
diff --git a/yarn.lock b/yarn.lock
index 416da0e..b46389a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -35,7 +35,7 @@
"chalk" "^2.0.0"
"js-tokens" "^4.0.0"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.9.2":
"integrity" "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw=="
"resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz"
"version" "7.21.0"
@@ -1295,11 +1295,26 @@
"resolved" "https://registry.npmjs.org/@prisma/prisma-fmt-wasm/-/prisma-fmt-wasm-4.11.0-57.8fde8fef4033376662cad983758335009d522acb.tgz"
"version" "4.11.0-57.8fde8fef4033376662cad983758335009d522acb"
+"@reduxjs/toolkit@^1.9.3":
+ "integrity" "sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg=="
+ "resolved" "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.3.tgz"
+ "version" "1.9.3"
+ dependencies:
+ "immer" "^9.0.16"
+ "redux" "^4.2.0"
+ "redux-thunk" "^2.4.2"
+ "reselect" "^4.1.7"
+
"@rushstack/eslint-patch@^1.1.3":
"integrity" "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg=="
"resolved" "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz"
"version" "1.2.0"
+"@socket.io/component-emitter@~3.1.0":
+ "integrity" "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ "resolved" "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz"
+ "version" "3.1.0"
+
"@swc/helpers@0.4.14":
"integrity" "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw=="
"resolved" "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz"
@@ -1307,6 +1322,19 @@
dependencies:
"tslib" "^2.4.0"
+"@tanstack/query-core@4.27.0":
+ "integrity" "sha512-sm+QncWaPmM73IPwFlmWSKPqjdTXZeFf/7aEmWh00z7yl2FjqophPt0dE1EHW9P1giMC5rMviv7OUbSDmWzXXA=="
+ "resolved" "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.27.0.tgz"
+ "version" "4.27.0"
+
+"@tanstack/react-query@^4.28.0":
+ "integrity" "sha512-8cGBV5300RHlvYdS4ea+G1JcZIt5CIuprXYFnsWggkmGoC0b5JaqG0fIX3qwDL9PTNkKvG76NGThIWbpXivMrQ=="
+ "resolved" "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.28.0.tgz"
+ "version" "4.28.0"
+ dependencies:
+ "@tanstack/query-core" "4.27.0"
+ "use-sync-external-store" "^1.2.0"
+
"@tootallnate/once@2":
"integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
"resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz"
@@ -1339,6 +1367,18 @@
dependencies:
"@types/node" "*"
+"@types/cookie@^0.4.1":
+ "integrity" "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ "resolved" "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz"
+ "version" "0.4.1"
+
+"@types/cors@^2.8.12":
+ "integrity" "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA=="
+ "resolved" "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz"
+ "version" "2.8.13"
+ dependencies:
+ "@types/node" "*"
+
"@types/cross-spawn@6.0.2":
"integrity" "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw=="
"resolved" "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.2.tgz"
@@ -1375,7 +1415,7 @@
"resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz"
"version" "0.7.31"
-"@types/node@*", "@types/node@^18.15.1":
+"@types/node@*", "@types/node@^18.15.1", "@types/node@>=10.0.0":
"integrity" "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw=="
"resolved" "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz"
"version" "18.15.1"
@@ -1480,6 +1520,14 @@
"resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
"version" "1.1.1"
+"accepts@~1.3.4":
+ "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="
+ "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"
+ "version" "1.3.8"
+ dependencies:
+ "mime-types" "~2.1.34"
+ "negotiator" "0.6.3"
+
"acorn-jsx@^5.3.2":
"integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
"resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
@@ -1725,6 +1773,11 @@
"resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
"version" "1.5.1"
+"base64id@~2.0.0", "base64id@2.0.0":
+ "integrity" "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
+ "resolved" "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz"
+ "version" "2.0.0"
+
"bcrypt@^5.1.0":
"integrity" "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q=="
"resolved" "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz"
@@ -1733,6 +1786,11 @@
"@mapbox/node-pre-gyp" "^1.0.10"
"node-addon-api" "^5.0.0"
+"big-integer@^1.6.16":
+ "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
+ "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz"
+ "version" "1.6.51"
+
"bl@^4.0.3", "bl@^4.1.0":
"integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="
"resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
@@ -1764,6 +1822,20 @@
dependencies:
"fill-range" "^7.0.1"
+"broadcast-channel@^3.4.1":
+ "integrity" "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg=="
+ "resolved" "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz"
+ "version" "3.7.0"
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "detect-node" "^2.1.0"
+ "js-sha3" "0.8.0"
+ "microseconds" "0.2.0"
+ "nano-time" "1.0.0"
+ "oblivious-set" "1.0.0"
+ "rimraf" "3.0.2"
+ "unload" "2.2.0"
+
"buffer-crc32@^0.2.1", "buffer-crc32@^0.2.13":
"integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
"resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz"
@@ -1958,6 +2030,11 @@
"resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz"
"version" "0.5.0"
+"cookie@~0.4.1":
+ "integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
+ "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz"
+ "version" "0.4.2"
+
"copy-to-clipboard@3.3.3":
"integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA=="
"resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz"
@@ -1970,6 +2047,14 @@
"resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
"version" "1.0.3"
+"cors@~2.8.5":
+ "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="
+ "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz"
+ "version" "2.8.5"
+ dependencies:
+ "object-assign" "^4"
+ "vary" "^1"
+
"cosmiconfig@^7.0.0":
"integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="
"resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz"
@@ -2037,7 +2122,7 @@
dependencies:
"ms" "^2.1.1"
-"debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4", "debug@4", "debug@4.3.4":
+"debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4", "debug@~4.3.1", "debug@~4.3.2", "debug@4", "debug@4.3.4":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
@@ -2126,6 +2211,11 @@
"resolved" "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz"
"version" "1.1.0"
+"detect-node@^2.0.4", "detect-node@^2.1.0":
+ "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz"
+ "version" "2.1.0"
+
"dezalgo@^1.0.4":
"integrity" "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig=="
"resolved" "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz"
@@ -2182,6 +2272,38 @@
dependencies:
"once" "^1.4.0"
+"engine.io-client@~6.4.0":
+ "integrity" "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g=="
+ "resolved" "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz"
+ "version" "6.4.0"
+ dependencies:
+ "@socket.io/component-emitter" "~3.1.0"
+ "debug" "~4.3.1"
+ "engine.io-parser" "~5.0.3"
+ "ws" "~8.11.0"
+ "xmlhttprequest-ssl" "~2.0.0"
+
+"engine.io-parser@~5.0.3":
+ "integrity" "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw=="
+ "resolved" "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz"
+ "version" "5.0.6"
+
+"engine.io@~6.4.1":
+ "integrity" "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw=="
+ "resolved" "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz"
+ "version" "6.4.1"
+ dependencies:
+ "@types/cookie" "^0.4.1"
+ "@types/cors" "^2.8.12"
+ "@types/node" ">=10.0.0"
+ "accepts" "~1.3.4"
+ "base64id" "2.0.0"
+ "cookie" "~0.4.1"
+ "cors" "~2.8.5"
+ "debug" "~4.3.1"
+ "engine.io-parser" "~5.0.3"
+ "ws" "~8.11.0"
+
"enhanced-resolve@^5.10.0":
"integrity" "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ=="
"resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz"
@@ -3013,6 +3135,11 @@
"resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
"version" "5.2.4"
+"immer@^9.0.16":
+ "integrity" "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="
+ "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz"
+ "version" "9.0.21"
+
"import-fresh@^3.0.0", "import-fresh@^3.2.1":
"integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
"resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
@@ -3292,6 +3419,11 @@
"resolved" "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz"
"version" "4.3.0"
+"js-sha3@0.8.0":
+ "integrity" "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
+ "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz"
+ "version" "0.8.0"
+
"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0":
"integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
"resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
@@ -3473,6 +3605,14 @@
"resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"
"version" "1.3.6"
+"match-sorter@^6.0.2":
+ "integrity" "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw=="
+ "resolved" "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz"
+ "version" "6.3.1"
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "remove-accents" "0.4.2"
+
"merge-stream@^2.0.0":
"integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
"resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
@@ -3491,12 +3631,17 @@
"braces" "^3.0.2"
"picomatch" "^2.3.1"
+"microseconds@0.2.0":
+ "integrity" "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA=="
+ "resolved" "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz"
+ "version" "0.2.0"
+
"mime-db@1.52.0":
"integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
"resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
"version" "1.52.0"
-"mime-types@^2.1.12":
+"mime-types@^2.1.12", "mime-types@~2.1.34":
"integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
"resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
"version" "2.1.35"
@@ -3574,6 +3719,13 @@
"resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
"version" "2.1.3"
+"nano-time@1.0.0":
+ "integrity" "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA=="
+ "resolved" "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz"
+ "version" "1.0.0"
+ dependencies:
+ "big-integer" "^1.6.16"
+
"nanoid@^3.3.4":
"integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
"resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
@@ -3584,6 +3736,11 @@
"resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
"version" "1.4.0"
+"negotiator@0.6.3":
+ "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
+ "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
+ "version" "0.6.3"
+
"new-github-issue-url@0.2.1":
"integrity" "sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA=="
"resolved" "https://registry.npmjs.org/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz"
@@ -3721,7 +3878,7 @@
"resolved" "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz"
"version" "0.9.15"
-"object-assign@^4.1.1":
+"object-assign@^4", "object-assign@^4.1.1":
"integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
"resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
"version" "4.1.1"
@@ -3794,6 +3951,11 @@
"define-properties" "^1.1.4"
"es-abstract" "^1.20.4"
+"oblivious-set@1.0.0":
+ "integrity" "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw=="
+ "resolved" "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz"
+ "version" "1.0.0"
+
"oidc-token-hash@^5.0.1":
"integrity" "sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ=="
"resolved" "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz"
@@ -4088,7 +4250,7 @@
dependencies:
"@babel/runtime" "^7.12.13"
-"react-dom@^17.0.2 || ^18", "react-dom@^18.0.0", "react-dom@^18.2.0", "react-dom@>=18", "react-dom@18.2.0":
+"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18", "react-dom@^18.0.0", "react-dom@^18.2.0", "react-dom@>=18", "react-dom@18.2.0":
"integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g=="
"resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
"version" "18.2.0"
@@ -4128,6 +4290,15 @@
"resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
"version" "16.13.1"
+"react-query@^3.39.3":
+ "integrity" "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g=="
+ "resolved" "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz"
+ "version" "3.39.3"
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ "broadcast-channel" "^3.4.1"
+ "match-sorter" "^6.0.2"
+
"react-remove-scroll-bar@^2.3.3":
"integrity" "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A=="
"resolved" "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz"
@@ -4156,7 +4327,7 @@
"invariant" "^2.2.4"
"tslib" "^2.0.0"
-"react@*", "react@^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17 || ^18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18", "react@^18.0.0", "react@^18.2.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>=16.8.0", "react@>=18", "react@18.2.0":
+"react@*", "react@^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17 || ^18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.2 || ^18", "react@^18.0.0", "react@^18.2.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>=16.8.0", "react@>=18", "react@18.2.0":
"integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ=="
"resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
"version" "18.2.0"
@@ -4224,6 +4395,18 @@
dependencies:
"minimatch" "^5.1.0"
+"redux-thunk@^2.4.2":
+ "integrity" "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q=="
+ "resolved" "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz"
+ "version" "2.4.2"
+
+"redux@^4", "redux@^4.2.0":
+ "integrity" "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w=="
+ "resolved" "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz"
+ "version" "4.2.1"
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+
"regenerator-runtime@^0.13.11":
"integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
"resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
@@ -4243,11 +4426,21 @@
"resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz"
"version" "3.2.0"
+"remove-accents@0.4.2":
+ "integrity" "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
+ "resolved" "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz"
+ "version" "0.4.2"
+
"replace-string@3.1.0":
"integrity" "sha512-yPpxc4ZR2makceA9hy/jHNqc7QVkd4Je/N0WRHm6bs3PtivPuPynxE5ejU/mp5EhnCv8+uZL7vhz8rkluSlx+Q=="
"resolved" "https://registry.npmjs.org/replace-string/-/replace-string-3.1.0.tgz"
"version" "3.1.0"
+"reselect@^4.1.7":
+ "integrity" "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A=="
+ "resolved" "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz"
+ "version" "4.1.7"
+
"resolve-from@^4.0.0":
"integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
"resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
@@ -4406,6 +4599,43 @@
"astral-regex" "^2.0.0"
"is-fullwidth-code-point" "^3.0.0"
+"socket.io-adapter@~2.5.2":
+ "integrity" "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA=="
+ "resolved" "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz"
+ "version" "2.5.2"
+ dependencies:
+ "ws" "~8.11.0"
+
+"socket.io-client@^4.6.1":
+ "integrity" "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ=="
+ "resolved" "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz"
+ "version" "4.6.1"
+ dependencies:
+ "@socket.io/component-emitter" "~3.1.0"
+ "debug" "~4.3.2"
+ "engine.io-client" "~6.4.0"
+ "socket.io-parser" "~4.2.1"
+
+"socket.io-parser@~4.2.1":
+ "integrity" "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw=="
+ "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz"
+ "version" "4.2.2"
+ dependencies:
+ "@socket.io/component-emitter" "~3.1.0"
+ "debug" "~4.3.1"
+
+"socket.io@^4.6.1":
+ "integrity" "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA=="
+ "resolved" "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz"
+ "version" "4.6.1"
+ dependencies:
+ "accepts" "~1.3.4"
+ "base64id" "~2.0.0"
+ "debug" "~4.3.2"
+ "engine.io" "~6.4.1"
+ "socket.io-adapter" "~2.5.2"
+ "socket.io-parser" "~4.2.1"
+
"source-map-js@^1.0.2":
"integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
"resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
@@ -4841,6 +5071,14 @@
"resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
"version" "2.0.0"
+"unload@2.2.0":
+ "integrity" "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA=="
+ "resolved" "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz"
+ "version" "2.2.0"
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+ "detect-node" "^2.0.4"
+
"uri-js@^4.2.2":
"integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="
"resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
@@ -4863,6 +5101,11 @@
"detect-node-es" "^1.1.0"
"tslib" "^2.0.0"
+"use-sync-external-store@^1.2.0":
+ "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA=="
+ "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz"
+ "version" "1.2.0"
+
"util-deprecate@^1.0.1", "util-deprecate@~1.0.1":
"integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
"resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
@@ -4891,6 +5134,11 @@
"spdx-correct" "^3.0.0"
"spdx-expression-parse" "^3.0.0"
+"vary@^1":
+ "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
+ "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
+ "version" "1.1.2"
+
"wcwidth@^1.0.1":
"integrity" "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="
"resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz"
@@ -4968,6 +5216,16 @@
"resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
"version" "1.0.2"
+"ws@~8.11.0":
+ "integrity" "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg=="
+ "resolved" "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz"
+ "version" "8.11.0"
+
+"xmlhttprequest-ssl@~2.0.0":
+ "integrity" "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
+ "resolved" "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz"
+ "version" "2.0.0"
+
"yallist@^4.0.0":
"integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
"resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"