1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-28 00:27:49 +02:00
market/src/components/App.tsx
Moritz Kirstein 46a16a3043
GDPR Compliance (#796)
* add cookie utils

* add gdpr metadata for ppc

* add graphql typeDefs for GDPR metadata

* add ppc variable to app config

* add ppc user preference

* add switch component

* add ppc components

* add cookie consent provider

* add consent provider to wrapRootElement

* add ppc to app component

* add cookie button to footer component

* add ppc to site metadata query

* add styles for buttons in footer

* add switch component unit tests

* renewed siteMetadata json for testing

* add gdpr metadata for testing

* add cookie module unit test

* add cookie module tests

* add customizable format to time component

* add english privacy policy

* add privacy policy slugs to user preferences and appConfig

* add privacy policy components

* add autolink for policy md navigation

* only show language select for multiple policies

* add gatsby policy page creation

* use new privacy slug user preference

* add to top button styling for markdown pages

* add policies for de, es & fr

* add pointer events to toTop buttons css

* add privacy policy basic unit test

* outsource scroll button component

* import cleanup

* add customizable delay for debounce

* add scroll button unit tests

* add disclaimer component

* add disclaimer fields as optional fields in PublishJsonData

* add acces type disclaimer

* adjusted help for desc and author fields

* add disclaimer unit tests

* minor adjustment to test

* add print button to history page

* naming changes for better readability

* add cookies hash to policies

* ppc disabled per default

* fix react unknown prop for disclaimer

* minor adjustments to cookie utils

* add gdpr example file

* change exposed gdpr metadata scope by useConsent

* update README

* readme fixes

* emoji fix

* added imprint

* adjustments to gdpr.json structure and related graphql type

* add default values for ppc

* Update app.config.js

Fixed typo.

* change variable name for consistency, remove console logs

* readability

* adjust css selector order to be consistent

* Update fr.md

updated policy

* Update es.md

updated policy

* Update en.md

updated policy

* Update de.md

* fix type issue

* replace language select input with links

* remove scroll button from codebase

* change privacy policy route to /privacy

* remove Do Not Track detection

* add size to checkbox / radio inputs

* replace switch component with checkbox inputs

* fix plain text links

* remove console log

* refactor privacy policy pages to use PageMarkdown template

* setup useUserPreferences mock for unit tests

* unit tests forprivacy policy components

* setup discalimer to use alert component

* Apply .env suggestions from code review

Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>

* move gdpr example to gdpr.json

* adjustments to address .env approach for appConfig.privacyPreferenceCenter

* update readme

* add small styling option to ppc

* update README

* add ppc unit tests

* update comments

* Update README.md

Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>

* Merge print into profile history

* add inifiniteApproval to UserPreference fixture

* changed default styling of PPC to small

Co-authored-by: Frederic Schwill <41265505+fr-3deric@users.noreply.github.com>
Co-authored-by: MeikeMolitor <88214332+MeikeMolitor@users.noreply.github.com>
Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>
2021-10-12 09:00:57 +01:00

70 lines
1.9 KiB
TypeScript

import React, { ReactElement } from 'react'
import { graphql, PageProps, useStaticQuery } from 'gatsby'
import Alert from './atoms/Alert'
import Footer from './organisms/Footer'
import Header from './organisms/Header'
import Styles from '../global/Styles'
import { useWeb3 } from '../providers/Web3'
import { useSiteMetadata } from '../hooks/useSiteMetadata'
import { useAccountPurgatory } from '../hooks/useAccountPurgatory'
import AnnouncementBanner from './atoms/AnnouncementBanner'
import styles from './App.module.css'
import PrivacyPreferenceCenter from './organisms/PrivacyPreferenceCenter'
const contentQuery = graphql`
query AppQuery {
purgatory: allFile(filter: { relativePath: { eq: "purgatory.json" } }) {
edges {
node {
childContentJson {
account {
title
description
}
}
}
}
}
}
`
export default function App({
children,
...props
}: {
children: ReactElement
}): ReactElement {
const data = useStaticQuery(contentQuery)
const purgatory = data.purgatory.edges[0].node.childContentJson.account
const { warning, appConfig } = useSiteMetadata()
const { accountId } = useWeb3()
const { isInPurgatory, purgatoryData } = useAccountPurgatory(accountId)
return (
<Styles>
<div className={styles.app}>
{(props as PageProps).uri === '/' && (
<AnnouncementBanner text={warning.main} />
)}
<Header />
{isInPurgatory && (
<Alert
title={purgatory.title}
badge={`Reason: ${purgatoryData?.reason}`}
text={purgatory.description}
state="error"
/>
)}
<main className={styles.main}>{children}</main>
<Footer />
{appConfig.privacyPreferenceCenter === 'true' && (
<PrivacyPreferenceCenter style="small" />
)}
</div>
</Styles>
)
}