1
0
Fork 0

wip(lab): Working on crash reporting in the new dev env

This commit is contained in:
Joost De Cock 2022-03-18 19:11:00 +01:00
parent f100691a92
commit 8a2a13f240
7 changed files with 164 additions and 61 deletions

View file

@ -1,8 +1,13 @@
import { useState } from 'react'
import SvgWrapper from './svg-wrapper'
import Error from './error.js'
import Popout from 'shared/components/popout.js'
import Robot from 'shared/components/robot/index.js'
const LabDraft = props => {
const { app, draft, pattern, gist, updateGist, unsetGist } = props
const { app, draft, pattern, gist, updateGist, unsetGist, feedback } = props
const [share, setShare] = useState(false)
if (!draft) return null
if (gist?.renderer === 'svg') {
@ -24,17 +29,66 @@ const LabDraft = props => {
return <Error error={error} {...props} />
}
// Handle broken drafts
let error = null
if (patternProps.events.error.length > 0) {
error = (
<Popout warning>
<div className="flex flex-row justify-between">
<div>
<h3>Got {patternProps.events.error.length} problems and a stitch ain't one</h3>
<p>Don't be alarmed, but we ran into some trouble while drafting this pattern.</p>
<h4>Help us make FreeSewing better</h4>
<p>
If you like puzzles, you can try to figure out what went wrong:
</p>
<ul className="list-disc list-inside ml-4 text-xl">
<li>
Check the <button className="btn-link" onClick={() => updateGist(['_state', 'view'], 'events')}>
<strong>{patternProps.events.error.length} errors</strong> and <strong>
{patternProps.events.warning.length} warnings</strong></button>
</li>
<li>Check the partially rendered pattern below to see which areas are problematic</li>
</ul>
<p>
Alternatively, you can escalate this. Which means that:
</p>
<ul className="list-disc list-inside ml-4 text-xl">
<li>
We will compile a <strong>crash report</strong> that contains everything needed <strong>to recreate this problem</strong>
</li>
<li>
We will include <strong>personal data</strong> such as your <strong>username</strong>, <strong>
email address</strong> and <strong>measurements</strong>
</li>
<li>
We will share this report and the data in it with <a className="text-primary font-bold"
href="https://github.com/orgs/freesewing/teams/bughunters">FreeSewing's bughunters team</a>
</li>
</ul>
<div className="form-control">
<label className="cursor-pointer flex flex-row gap-4 my-4">
<input type="checkbox" checked={share} className="checkbox checkbox-primary" onChange={() => setShare(!share)}/>
<span className="label-text text-xl">I agree to the use of my personal data for this purpose</span>
</label>
</div>
<p>
<button disabled={!share} className="btn btn-primary">Escalate this</button>
</p>
</div>
<Robot pose='fail' />
</div>
</Popout>
)
}
console.log(patternProps)
return (
<div>
<SvgWrapper
draft={draft}
patternProps={patternProps}
gist={gist}
updateGist={updateGist}
unsetGist={unsetGist}
app={app}
/>
</div>
<>
{error}
<SvgWrapper {...{ draft, patternProps, gist, updateGist, unsetGist, app, feedback }} />
</>
)
}