1
0
Fork 0

[breaking]: FreeSewing v4 (#7297)

Refer to the CHANGELOG for all info.

---------

Co-authored-by: Wouter van Wageningen <wouter.vdub@yahoo.com>
Co-authored-by: Josh Munic <jpmunic@gmail.com>
Co-authored-by: Jonathan Haas <haasjona@gmail.com>
This commit is contained in:
Joost De Cock 2025-04-01 16:15:20 +02:00 committed by GitHub
parent d22fbe78d9
commit 51dc1d9732
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6626 changed files with 142053 additions and 150606 deletions

View file

@ -0,0 +1,53 @@
// Context
import { LoadingStatusContext } from '@freesewing/react/context/LoadingStatus'
// Hooks
import React, { useState, useContext } from 'react'
import { useAccount } from '@freesewing/react/hooks/useAccount'
import { useBackend } from '@freesewing/react/hooks/useBackend'
// Components
import { Link as WebLink } from '@freesewing/react/components/Link'
import { DownloadIcon } from '@freesewing/react/components/Icon'
import { Popout } from '@freesewing/react/components/Popout'
import { IconButton } from '@freesewing/react/components/Button'
/*
* Component for the account/actions/export page
*/
export const Export = () => {
// Hooks
const backend = useBackend()
const { setLoadingStatus } = useContext(LoadingStatusContext)
// State
const [link, setLink] = useState()
// Helper method to export account
const exportData = async () => {
setLoadingStatus([true, 'Contacting backend'])
const [status, body] = await backend.exportAccount()
if (status === 200) {
setLink(body.data)
setLoadingStatus([true, 'All done', true, true])
} else setLoadingStatus([true, 'Something went wrong, please report this', true, false])
}
return (
<div className="tw-max-w-xl">
{link ? (
<Popout link>
<h5>Your data was exported and is available for download at the following location:</h5>
<p className="tw-text-lg">
<WebLink href={link}>{link}</WebLink>
</p>
</Popout>
) : null}
<p>Click below to export your personal FreeSewing data</p>
<IconButton onClick={exportData} title="Export your data">
<DownloadIcon />
Export Your Data
</IconButton>
</div>
)
}