@@ -4,18 +4,30 @@ import {
44 AccordionIcon ,
55 AccordionItem ,
66 AccordionPanel ,
7+ AlertDialog ,
8+ AlertDialogBody ,
9+ AlertDialogContent ,
10+ AlertDialogFooter ,
11+ AlertDialogHeader ,
12+ AlertDialogOverlay ,
713 Box ,
814 Button ,
915 Heading ,
1016 HStack ,
1117 Image ,
1218 Link ,
1319 Text ,
20+ useDisclosure ,
21+ useToast ,
1422 VStack ,
1523} from '@chakra-ui/react'
24+ import { useRef } from 'react'
1625import { Helmet } from 'react-helmet'
17- import { FaEnvelope , FaGithub , FaLinkedin } from 'react-icons/fa'
26+ import { FaEnvelope , FaExclamationTriangle , FaGithub , FaLinkedin } from 'react-icons/fa'
27+ import { useAuthContext } from 'src/api/contexts/useAuthContext'
28+ import { usePurgeUserMutation } from 'src/api/hooks/authHooks'
1829import { ColorfulExternalLink } from 'src/components/commons/ColorfulExternalLink'
30+ import { PATHS } from 'src/util/paths'
1931
2032const faqItems : { title : string ; paragraphs : string [ ] } [ ] = [
2133 {
@@ -47,23 +59,53 @@ const faqItems: { title: string; paragraphs: string[] }[] = [
4759 Amennyiben senki sem értékelte a versenyt, nem fog megjelenni a listában.` ,
4860 ] ,
4961 } ,
62+ {
63+ title : 'Meg mernék esküdni, hogy az egyik verseny pontszáma korábban még más volt. Hogy lehetséges ez?' ,
64+ paragraphs : [
65+ `Habár próbáljuk elkerülni, időnként (főleg a kezdeti időszakban) előfordulhat, hogy szezon közben változtatunk a szempontok súlyain,
66+ majd újraszámoljuk a versenyek eredményeit. Egy verseny eredmény oldalán mindig látod, hogy mikor lett kiszámolva a jelenlegi ponszám.
67+ Azt azonban garantáljuk, hogy azonos szezonban lévő versenyek mindigy ugyanazon szempontok és súlyok alapján lettek kiértékelve.` ,
68+ ] ,
69+ } ,
5070 {
5171 title : 'Valóban anonim az értékelésem?' ,
5272 paragraphs : [
5373 `A rendszer felhasználókhoz kapcsol minden értékelést, ez elengedhetetlen ahhoz, hogy később szerkeszd vagy megtekintsd a saját értékelésed.
5474 Az értékelések publikus eredményei azonban csak az összesített értékeléseket tartalmazzák, azok soha nem vezethetőek vissza egy adott személyre.
5575 Az adatbázisban tárolt, felhasználókhoz köthető értékelési adatokat harmadik féllel (például versenyrendezői csapattal) soha nem osztjuk meg.
56- Ez igaz a szempontokra leadott és a szöveges értékelésekre is. Fenntartjuk a jogát, hogy amennyiben egy szöveges értékelést nem tartunk konstruktívank , töröljük azt.` ,
76+ Ez igaz a szempontokra leadott és a szöveges értékelésekre is. Fenntartjuk a jogát, hogy amennyiben egy szöveges értékelést nem tartunk konstruktívnak , töröljük azt.` ,
5777 ] ,
5878 } ,
5979]
6080
6181export const FAQPage = ( ) => {
82+ const { isLoggedIn, onLogout } = useAuthContext ( )
83+ const { isLoading, mutateAsync } = usePurgeUserMutation ( )
84+ const { isOpen, onOpen, onClose } = useDisclosure ( )
85+ const cancelRef = useRef ( null )
86+ const toast = useToast ( )
87+
88+ const onPurge = async ( ) => {
89+ try {
90+ await mutateAsync ( )
91+ toast ( { title : 'Az adataidat sikeresen töröltük.' , status : 'success' } )
92+ onClose ( )
93+ onLogout ( PATHS . FAQ )
94+ } catch ( e ) {
95+ console . error ( e )
96+ toast ( { title : 'A fiókod törlése nem sikerült' , status : 'error' } )
97+ }
98+ }
6299 return (
63100 < VStack gap = { 4 } alignItems = "flex-start" >
64101 < Helmet title = "Pontoz-O | GYIK" />
65102 < Heading > Gyakran Ismételt Kérdések</ Heading >
66- < Accordion w = "100%" bg = "white" defaultIndex = { [ ...faqItems . map ( ( _ , i ) => i ) , faqItems . length ] } allowMultiple >
103+ < Accordion
104+ w = "100%"
105+ bg = "white"
106+ defaultIndex = { [ ...faqItems . map ( ( _ , i ) => i ) , faqItems . length , faqItems . length + 1 , faqItems . length + 2 ] }
107+ allowMultiple
108+ >
67109 { faqItems . map ( ( q ) => (
68110 < AccordionItem key = { q . title } >
69111 < h2 >
@@ -97,7 +139,7 @@ export const FAQPage = () => {
97139 < AccordionPanel pb = { 4 } justifyItems = "center" >
98140 < VStack justifyItems = "center" >
99141 < Image width = { 250 } height = { 250 } src = "/img/samu.jpg" rounded = "100%" />
100- < Heading fontSize = { 50 } transform = "auto" skewX = { - 10 } style = { { fontVariant : 'small-caps' } } >
142+ < Heading textAlign = "center" fontSize = { 50 } transform = "auto" skewX = { - 10 } style = { { fontVariant : 'small-caps' } } >
101143 Fekete Sámuel
102144 </ Heading >
103145 < HStack >
@@ -164,6 +206,108 @@ export const FAQPage = () => {
164206 </ VStack >
165207 </ AccordionPanel >
166208 </ AccordionItem >
209+ < AccordionItem >
210+ < h2 id = "privacy-notice" >
211+ < AccordionButton >
212+ < Box fontWeight = "bold" as = "span" flex = "1" textAlign = "left" >
213+ Hogyan kezeli az alkalmazás az adataimat?
214+ </ Box >
215+ < AccordionIcon />
216+ </ AccordionButton >
217+ </ h2 >
218+ < AccordionPanel pb = { 4 } justifyItems = "center" >
219+ < VStack alignItems = "flex-start" >
220+ < Text textAlign = "justify" >
221+ A rendszer elsődleges adatforrása az MTFSZ adatbázisa. Bejelentkezéskor innen kérjük le a felhasználó adatait, azonban azok
222+ közül kizárólag az e-mail címet, az MTFSZ személy azonosítót és a születési dátumot tároljuk. Az e-mail címet kizárólag
223+ rendszerértesítések küldése érdekében tároljuk. Amennyiben semmiképpen nem szeretnél e-mailben értesítést kapni, a
224+ profilodon található Értesítési beállítások menüben törölheted az e-mail címed.
225+ </ Text >
226+
227+ < Text textAlign = "justify" >
228+ Az adatokat a Microsoft Azure Poland Central nevű régiójában (adatközpontjában) tároljuk, harmadik félnek soha nem adjuk ki.
229+ Amennyiben szeretnéd az összes, hozzád kapcsolható adatot törölni a rendszerből, nyomd meg az alábbi gombot. Ezzel az e-mail
230+ címed és az általad leadott értékelések törlésre kerülnek, valamint ki leszel jelentkeztetve. Ha újra bejelentkezel, ismét
231+ használhatod az alkalmazást, azonban a korábban törölt értékeléseid nem visszaállíthatóak. Az általad értékelt versenyek
232+ értékelési eredményeit nem befolyásolja az értékeléseid törlése, hiszen azok az értékelés lezárultakor számolódnak ki és nem
233+ tartalmaznak személyre visszavezethető adatot. Ha viszont a későbbiekben egy verseny pontszáma valamilyen okból
234+ újraszámolódik, akkor már a te értékelésed nélkül fog ez megtörténni.
235+ </ Text >
236+ < Button
237+ alignSelf = "center"
238+ onClick = { onOpen }
239+ isDisabled = { ! isLoggedIn }
240+ color = "white"
241+ bg = "black"
242+ _hover = { { bg : 'gray.700' } }
243+ leftIcon = { < FaExclamationTriangle /> }
244+ aria-label = "Fiókom és adataim törlése"
245+ >
246+ Fiókom és adataim törlése
247+ </ Button >
248+ < AlertDialog isOpen = { isOpen } leastDestructiveRef = { cancelRef } onClose = { onClose } >
249+ < AlertDialogOverlay >
250+ < AlertDialogContent >
251+ < AlertDialogHeader fontSize = "lg" fontWeight = "bold" >
252+ Fiókom és adataim törlése
253+ </ AlertDialogHeader >
254+
255+ < AlertDialogBody textAlign = "justify" >
256+ Biztos vagy benne? Ezzel az e-mail címed és az általad leadott értékelések törlésre kerülnek, valamint ki leszel
257+ jelentkeztetve. Ha újra bejelentkezel, ismét használhatod az alkalmazást, azonban a korábban törölt értékeléseid nem
258+ visszaállíthatóak. Az általad értékelt versenyek értékelési eredményeit nem befolyásolja az értékeléseid törlése,
259+ hiszen azok az értékelés lezárultakor számolódnak ki és nem tartalmaznak személyre visszavezethető adatot. Ha viszont
260+ a későbbiekben egy verseny pontszáma valamilyen okból újraszámolódik, akkor már a te értékelésed nélkül fog ez
261+ megtörténni.
262+ </ AlertDialogBody >
263+
264+ < AlertDialogFooter >
265+ < Button ref = { cancelRef } onClick = { onClose } >
266+ Mégse
267+ </ Button >
268+ < Button
269+ colorScheme = "red"
270+ onClick = { onPurge }
271+ ml = { 3 }
272+ color = "white"
273+ bg = "black"
274+ isLoading = { isLoading }
275+ _hover = { { bg : 'gray.700' } }
276+ leftIcon = { < FaExclamationTriangle /> }
277+ >
278+ Törlés
279+ </ Button >
280+ </ AlertDialogFooter >
281+ </ AlertDialogContent >
282+ </ AlertDialogOverlay >
283+ </ AlertDialog >
284+ </ VStack >
285+ </ AccordionPanel >
286+ </ AccordionItem >
287+ < AccordionItem >
288+ < h2 id = "cookie-notice" >
289+ < AccordionButton >
290+ < Box fontWeight = "bold" as = "span" flex = "1" textAlign = "left" >
291+ Használ sütiket az alkalmazás?
292+ </ Box >
293+ < AccordionIcon />
294+ </ AccordionButton >
295+ </ h2 >
296+ < AccordionPanel pb = { 4 } justifyItems = "center" >
297+ < VStack alignItems = "flex-start" >
298+ < Text textAlign = "justify" >
299+ Az alkalmazás elsősorban a működéshez elegendhetetlen sütiket használ. Sütiben tároljuk a téged azonosító tokent, mely
300+ kijelentkezéskor vagy 7 nap után törlődik a böngésződből.
301+ </ Text >
302+
303+ < Text textAlign = "justify" >
304+ Ezen kívül az oldal forgalmát a Microsoft Azure Application Insights rendszere méri, mely szintén használ sütiket a
305+ felhasználók azonosításához. Időnként az IP-cím is küldésre kerül, azonban ezt soha nem tárolja, csak az egyes kérésekhez ez
306+ alapján tud geolokációs információt (ország, régió, város) rendelni.
307+ </ Text >
308+ </ VStack >
309+ </ AccordionPanel >
310+ </ AccordionItem >
167311 </ Accordion >
168312 </ VStack >
169313 )
0 commit comments