diff --git a/sites/org/components/account/consent.mjs b/sites/org/components/account/consent.mjs index d7fb9e62573..6f7cf060a1a 100644 --- a/sites/org/components/account/consent.mjs +++ b/sites/org/components/account/consent.mjs @@ -91,7 +91,7 @@ export const ConsentSettings = ({ app, title = false }) => { ) const partB = ( <> -
{t('peopleQuestion')}
+
{t('setQuestion')}
{measurements ? ( diff --git a/sites/org/components/account/links.mjs b/sites/org/components/account/links.mjs index c8267c84c70..61fbba6129a 100644 --- a/sites/org/components/account/links.mjs +++ b/sites/org/components/account/links.mjs @@ -48,7 +48,7 @@ export const AccountLinks = ({ account }) => { {t('newPattern')}
- + {t('newSet')} diff --git a/sites/org/components/gdpr/details.mjs b/sites/org/components/gdpr/details.mjs index 12491107612..c1330a2e82f 100644 --- a/sites/org/components/gdpr/details.mjs +++ b/sites/org/components/gdpr/details.mjs @@ -32,18 +32,15 @@ export const GdprMeasurementsDetails = () => { return (
-
{t('peopleWhatQuestion')}
+
{t('setWhatQuestion')}

' + - t('peopleWhatAnswerOptional') + - '', + t('setWhatAnswer') + '
' + t('setWhatAnswerOptional') + '', }} />

{t('whyQuestion')}
-

+

{t('timingQuestion')}

{t('shareQuestion')}
diff --git a/sites/org/components/gdpr/gdpr.en.yaml b/sites/org/components/gdpr/gdpr.en.yaml index 22e51b630c8..d69da03df93 100644 --- a/sites/org/components/gdpr/gdpr.en.yaml +++ b/sites/org/components/gdpr/gdpr.en.yaml @@ -3,7 +3,7 @@ createLimitedAccount: Create account with limited consent createAccount: Create account compliant: "FreeSewing respects your privacy and your rights. We adhere to the toughest privacy and security law in the world: the General Data Protection Regulation (GDPR) of the European Union (EU)." consent: Consent -consentForPeopleData: Consent for people data +consentForSetData: Consent for measurement data consentForProfileData: Consent for profile data consentGiven: Consent given consentNotGiven: Consent not given @@ -16,12 +16,12 @@ noConsentNoPatterns: Without this consent, you cannot create any made-to-measure noIDoNot: 'No, I do not' openDataInfo: This data is used to study and understand the human form in all its shapes, so we can get better sewing patterns, and better fitting garments. Even though this data is anonymized, you have the right to object to this. openDataQuestion: Share anonymized measurements as open data -peopleQuestion: Do you give your consent to process your people data? -peopleWarning: Revoking this consent will lock you out of all your people data, as well as disable functionality that depends on it. -peopleWhatAnswer: For each person their measurements. -peopleWhatAnswerOptional: 'Optional: A picture and the name that you give a person.' -peopleWhatQuestion: What is people data? -peopleWhyAnswer: 'To draft made-to-measure sewing patterns, we need body measurements.' +setQuestion: Do you give your consent to process your measurements data? +setWarning: Revoking this consent will lock you out of all your measurements data, as well as disable functionality that depends on it. +setWhatAnswer: For each measurements set the measurements. +setWhatAnswerOptional: 'Optional: A picture and the name or notes that you add to a measurements set.' +setWhatQuestion: What is measurements data? +setWhyAnswer: 'To draft made-to-measure sewing patterns, we need body measurements.' privacyMatters: Privacy matters privacyNotice: FreeSewing Privacy Notice processing: Processing diff --git a/sites/org/pages/account/sets/index.mjs b/sites/org/pages/account/sets/index.mjs new file mode 100644 index 00000000000..8179be7d500 --- /dev/null +++ b/sites/org/pages/account/sets/index.mjs @@ -0,0 +1,54 @@ +// Hooks +import { useApp } from 'site/hooks/useApp.mjs' +import { useTranslation } from 'next-i18next' +// Dependencies +import dynamic from 'next/dynamic' +import { serverSideTranslations } from 'next-i18next/serverSideTranslations' +// Components +import { PageWrapper, ns as pageNs } from 'site/components/wrappers/page.mjs' +import { ns as authNs } from 'site/components/wrappers/auth/index.mjs' +import { ns as apikeysNs } from 'site/components/account/apikeys.mjs' + +// Translation namespaces used on this page +const namespaces = [...new Set([...apikeysNs, ...authNs, ...pageNs])] + +/* + * Some things should never generated as SSR + * So for these, we run a dynamic import and disable SSR rendering + */ +const DynamicAuthWrapper = dynamic( + () => import('site/components/wrappers/auth/index.mjs').then((mod) => mod.AuthWrapper), + { ssr: false } +) + +const DynamicApikeys = dynamic( + () => import('site/components/account/apikeys.mjs').then((mod) => mod.Apikeys), + { ssr: false } +) + +const AccountPage = (props) => { + const app = useApp(props) + const { t } = useTranslation(namespaces) + const crumbs = [ + [t('yourAccount'), '/account'], + [t('apikeys'), '/account/apikeys'], + ] + + return ( + + + + + + ) +} + +export default AccountPage + +export async function getStaticProps({ locale }) { + return { + props: { + ...(await serverSideTranslations(locale, namespaces)), + }, + } +}