* feat: migrate locale test to ts v2
* fix: langCodes
* fix: locale test
* fix: nav dropdown
* fix: header test
* fix: use type predicates
* refactor: DRY up all-langs
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* feat: let users save cert project code to db
fix: move getChallenges call out of request function so it only runs once
fix: use FlashMessages enum
fix: transform challengeFiles earlier
test: make tribute page use multifile editor
stuff I was playing with - revert this to get it to a working state
refactor: allow undefined editableRegionBoundaries
fix: save history
history is not necessarily ["name.ext"] and using the incorrect history
could cause weird bugs
fix: replace files -> challengeFiles on the client
refactor: DRY out ajax
fix: use file -> challengefile map
refactor: rename ajax types
fix: alphatize flash-messages.ts
revert: tribute page project
fix: remove logs
fix: prettier
fix: cypress
fix: prettier
fix: remove submitComplete action
fix: block UI for new projects
fix: handle code size
* fix: catch undefined files
* fix: don't default to undefined when it's already the default
* fix: only update savedChallenges if applicable
* fix: dehumidify backend + fine tune nearby stuff
* fix: prop-types
* fix: dehumidify sagas
* fix: variable name
* fix: types
* Apply suggestions from code review
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* fix: typo
* fix: prettier
* fix: props types
* fix: flash messages
* Update client/src/utils/challenge-request-helpers.ts
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* chore: rename function uniformize -> standardize
* fix: flash message
* fix: add link to forum on flash messages
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* refactor: DRY up certification and ProjectModal
* fix: use sensible keys for SolutionViewer
* refactor: handle legacy solutions like new ones
* refactor: correct CompletedChallenge type
* fix: store challengeType for multifile projects
* fix: use challengeType to set display type
* feat: use dropdown to display project + code
* refactor: isOpen -> showCode to avoid a clash
We need to be able both show the code and show the completed project
* refactor: remove redundant parts of projectPreview
* refactor: fix project preview types
* feat: wip, using existing modal to show project
* feat: show projects on timeline
* feat: display projects on time-line
* chore: use consistent case for GitHub
* fix(a11y): translate show solution/view
* refactor: rename showFilesSolution
* refactor: use self-closing tag
* fix: remove hardcoding (certification + timeline)
* fix: remove hardcoding (settings)
* test: supply store and mock ga
* fix: include challengeType for projects
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* refactor: remove space
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: key -> filekey on challenge submission
* fix: handle submissions without files
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
fix: unhide cert from settings page
fix: add cert variables where missing
fix: show token on settings page
feat: add challenges to certified user data
fix: stylize settings page a little bit
fix: only show rdbms when upcomingChanges = true
fix: relational databases -> relational database
* refactor: re-organise show-project-links
* refactor: update ChallengeFile's declared shape
* fix: handle missing challenge solution
* refactor: use display function for Certification
* refactor: use display function for TimeLine
* refactor: use common component for timeline + cert
* fix: handle legacy solutions
* refactor: use widget for certifications
* refactor: reorganise ShowDisplayWidget
* refactor: remove unused ids
* test: pass dataCy, not projectTitle, to widget
* chore: kebabify
* revert: add id back for dropdown
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* revert: add the ids back
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* fix: only render profile urls
* feat: warn user when submitting data url
* fix: prevent dataurls being saved to db
* fix: tests and imports
Not sure why jest didn't like the es imports, but they aren't necessary
so I dropped them.
* fix: check for url protocol
* refactor: stop spreading challenge over the node
Instead of creating a Gatsby node with id of challenge.id, we create a
single node field that has all the challenge data.
While this makes the GraphQL queries more verbose, it means we're free
to create multiple nodes with the same challenge.id.
* test: update time-line test for new GQL schema
* test: update mocks with new GQL schema
* chore(client): tidy Flash by tidying tone
* add store import
* fix enum, remove default switch case
Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
* typo galore
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* rejig everything, because refactoring is fun 🙃
* refactor: DRY playTone
* fix url to foss library
Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
* alphabetasize FlashMessage enum
* add all FlashMessages to tone/index.ts
* remove redundant type
* my code is correctnpm run develop:client
* fix: remove circular dependency
* fix: typo
* remove logs, play special tones for nightmode
* play sound on challengeComplete
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* Changes made as directed in the instructions
* second revision
* Third revision
* Cypress Test updated
* cypress test updation
* directly linking to top-contributors news page
Co-authored-by: Ilenia <nethleen@gmail.com>
* fix(client): fix client
* fix propType and add comment
* revert user.json prettification
* slight type refactor and payload correction
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* update ChallengeFile type imports
* add cypress test for code-storage
* update test and storage epic
* fix Shaun's tired brain's logic
* refactor with suggestions
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* update codeReset
* increate cypress timeout because firefox is slow
* remove unused import to make linter happy
* use focus on editor
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* use more specific seletor for cypress editor test
* account for silly null challengeFiles
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix: remove circular dependency
redux depended on templates/Challenges/redux and vice versa. This
meant that import order mattered and confusing bugs could arise.
(cherry picked from commit 7d67a4e70922bbb3051f2f9982dcc69e240d43dc)
* feat: require imports to be in alphabetical order
Import order generally does not matter, but there are edge cases
(circular imports and css imports, for example) where changing order
changes behaviour
(cherry picked from commit b8d1393a91ec6e068caf8e8498a5c95df68c2b2c)
* chore: order imports
* fix: lift up challenge description + title comps
This brings the classic Show closer to the others as they
now all create the description and title components
* fix: remove donation-saga/index circular import
(cherry picked from commit 51a44ca668a700786d2744feffeae4fdba5fd207)
* refactor: extract action-types from settings
(cherry picked from commit 25e26124d691c84a0d0827d41dafb761c686fadd)
* fix: lint errors
* feat: prevent useless renames
* fix(client): refactor to use correct i18n t type
* appease Oliver by importing directly from react-i18n
* fix: use default TFunction type variable
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* migrate files and update tests
fix: use more memory for gatsby develop (#42433)
feat(client): remove whitespace from calculated values (#42400)
* feat(client?): remove whitespace for calculated values
* feat(client): remove whitespace from styledeclaration
* do not automatically strip
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix: include all properties of CSSStyleDeclaration
* fix test for getPropVal
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
fix: get showUpcomingChange from env.json (#42440)
fix(client): display legacy certs like current ones (#42038)
* fix: display legacy certs like the current ones
* fix: link projects in legacy certs to project pages
* fix: update tests to changed legacy cert display
* fix: update tests for removed legacy certs forms
* fix: display legacy certs like the current ones
* fix: submit projects for cert on projects pages
* fix: remove legacy certs form submitting handling
* fix: move claiming cert setup before both tests
* fix: remove legacy cert update props and actions
* fix: remove legacy cert updates from api
* fix: correct merge conflict
fix(curriculum): rework Project Euler 98 (#42423)
* fix: rework challenge to use argument in function
* fix: add solution
* fix: use MathJax to improve math notation
fix(curriculum): rework Project Euler 56 (#42364)
* fix: rework challenge to use argument in function
* fix: add solution
* fix: use MathJax to improve look of math notation
fix(curriculum): correct small english typo (#42447)
chore: group together monaco-editor and plugin (#42443)
This should get renovate to create PRs where both are modified.
fix(deps): update dependency algoliasearch to v4.9.2 (#42432)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
migrate files and update tests
Algorithm moved to TSX
first ten files renamed to tsx
first 10 migration complete
first 20 files renamed
migrate some files. rename all
test
index.tsx forced to ignore ts issues
rename and migrate all files
update tests
* remove missed propType declarations
* kebab-caseify
* fi xlinting
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Parth Parth <thecodingaviator@users.noreply.github.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* refactor(client): convert toggle-button to TypeScript
* chore: rename Space to tsx
* refactor(client): convert space to TypeScript
* chore: rename SlimWidthRow to tsx
* refactor(client): slim-width-row to TypeScript
* chore: rename SkeletonSprite to ts
* fix: fixed typos and resolved paths
* chore: resolve path inconsistencies
* refactor(client): skelton-sprite to TypeScript
* chore: rename loader.test to tsx
* chore: add types for react-spinkit
* refactor(client): loader to TypeScript
* refactor(client): link to TypeScript
* refactor(client): image-loader to TypeScript
* refactor(client): full-width-row to TypeScript
* refactor(client): current-challenge-link to TypeScript
* refactor(client): button to TypeScript
* refactor(client): border-color-picker to TypeScript
* refactor(client): avatar-renderer to TypeScript
* chore: changed loadertest(snap) to ts
* chore: optional types added and cleaned files
* fix: args are now optional
* push small updates for Spacer component merge
* update snapshot
* remove type defs from deps
* Revert "remove type defs from deps"
This reverts commit 9f58bf3554.
* correctly remove client type deps
* final push to remove from deps
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
The previous approach did avoid a fair number of jest.mock calls, but
made debugging the tests harder. If you don't know about the mapping
it's unclear why the imported module does not behave as normal.
By forcing the use of jest.mock it means that the answer to that
question is in the test you are working on.
* fix(api): decouple api from curriculum
This reverts commit 8f0e441644 and
introduces the implementations from #40703.
* fix(gitpod): add curriculum build to GitPod
This reverts commit 706d70f58d and
introduces implementations from #41234.
* docs: update DevOps manual for api change (#41259)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* feat: add show solution button in TimeLine
* feat: added tests for CertificateSettings and TimeLine
* feat: view button only for projects
* feat: view button visible only for projects