* 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>
* fix: token rework functional
fix: clean up
fix: more clean up
fix: more clean up
fix: add widget back to settings
fix:
fix:
fix: cypress
Apply suggestions from code review
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
fix: use flash enum
* chore: rename webhookToken -> userToken
fix: add translations I forgot to save
* fix: add missing tones for flash messages
* fix: node test
* fix: add cert to email for when all certs are earned
* fix: unhide rdbms from production
* fix: cert project input field
* feat: add cypress tests
* fix: message on project pages to lower expectations
* fix: update instructions
* fix: add quincy's suggestions
* fix: add beta label and reorder
* fix: utils test
* fix: move rdbms to bottom of settings
* fix: cypress tests
* Apply suggestions from code review
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix: only drop seeded users webhook tokens
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>
* chore: remove /refetch-user-completed-challenges
* chore: remove /update-my-theme
Theme changes are handled by /update-user-flag
I left 'update-my-theme' in the blocklist to allow for future use.
* chore: remove /certificate/verify-can-claim-cert
The client has not been using this for several weeks
* feat: return 410 for redundant endpoints
* chore: order endpoints
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
* chore: remove verify-can-claim-cert logic
* remove extraneous
* remove console log before Nich wakes up
* add api route back with flash
* remove unnecessary logic in completion-epic
* change tests for new layout
* dynamically use api location
* rename file
* fix Cypress api location
* fix(test): anchor does not have disabled class
* fix(tests): change js test to claim from /settings
* chore: change status to 410 (gone)
* update testing again
* oliver is nitpicky
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* make oliver happy
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@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
* fix: hotfix for isHonest null
* fix: early return if no user?
* fix: handle invalid input on api
Also lowerCases the username it receives since the client could send any
case.
* fix: report errors to user when verification fails
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* chore(tools): test curriculum order
* chore: update orders
* fix(tests): temporarily ignore cert super
The Relational Databases cert being 'upcomingChanges' is breaking
the tests.
* fix: graphql query here
* fix: use only one meta
* chore: remove unnecessary superOrders
* chore: zero-based indexing
* fix: update mock
* refactor: remove unused fixture
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* feat: Allow display username with uppercase characters
* fix: ensure user can change username to uppercased version
* fix: ensure that same username in a different case does not require validation
* added possibility to revert to default profile picture
* removed required from picture input
* remove addPlaceholderImage and replaced with empty string
* added test for empty string to avatar-renderer
* feat: remove eslint-plugin-prettier for prettier
This removes the annoying lint warnings when all that needs to change is
formatting
* fix: use .js lint-staged config to ignore properly
* fix: lint everything if a lot of files are changed
It's faster than making lots of individual linter calls
* chore: apply prettier
* fix: ignore code in curriculum-file-structure
* fix(client): convert challengeFiles->files before sending to api
* update use of user.completeChallenges
* parse response in ajax, pre-typing
* add typing to getSessionUser
* refactor: use Omit
* fix: reorganise getSessionUser
* refactor ajax for simplicity
* refactor to be worse
* allow for undefined completedChallenges
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* chore: rename APIs and Microservices to include "Backend" (#42515)
* fix typo
* fix typo
* undo change
* Corrected grammar mistake
Corrected a grammar mistake by removing a comma.
* change APIs and Microservices cert title
* update title
* Change APIs and Microservices certi title
* Update translations.json
* update title
* feat(curriculum): rename apis and microservices cert
* rename folder structure
* rename certificate
* rename learn Markdown
* apis-and-microservices -> back-end-development-and-apis
* update backend meta
* update i18n langs and cypress test
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* fix: add development to front-end libraries (#42512)
* fix: added-the-word-Development-to-front-end-libraries
* fix/added-the-word-Development-to-front-end-libraries
* fix/added-word-development-to-front-end-libraries-in-other-related-files
* fix/added-the-word-Development-to-front-end-and-all-related-files
* fix/removed-typos-from-last-commit-in-index.md
* fix/reverted-changes-that-i-made-to-dependecies
* fix/removed xvfg
* fix/reverted changes that i made to package.json
* remove unwanted changes
* front-end-development-libraries changes
* rename backend certSlug and README
* update i18n folder names and keys
* test: add legacy path redirect tests
This uses serve.json from the client-config repo, since we currently use
that in production
* fix: create public dir before moving serve.json
* fix: add missing script
* refactor: collect redirect tests
* test: convert to cy.location for stricter tests
* rename certificate folder to 00-certificates
* change crowdin config to recognise new certificates location
* allow translations to be used
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* add forwards slashes to path redirects
* fix cypress path tests again
* plese cypress
* fix: test different challenge
Okay so I literally have no idea why this one particular challenge
fails in Cypress Firefox ONLY. Tom and I paired and spun a full build
instance and confirmed in Firefox the page loads and redirects as
expected. Changing to another bootstrap challenge passes Cypress firefox
locally. Absolutely boggled by this.
AAAAAAAAAAAAAAA
* fix: separate the test
Okay apparently the test does not work unless we separate it into
a different `it` statement.
>:( >:( >:( >:(
Co-authored-by: Sujal Gupta <55016909+heysujal@users.noreply.github.com>
Co-authored-by: Noor Fakhry <65724923+NoorFakhry@users.noreply.github.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* feat: initial button setup client
* feat: rename walletsButton to .tsx
* chore: typescriptize wallet component
* chore: re-add keys to config, env, etc + check in gatsby-node
* feat: refactor donate form and wallet component
* feat(client): set labels correctly
* chore: add stripe package back to server
* chore: add stripe back to allowed paths
* chore: copy donate.js code from PR #41924
* feat: attempt to make back end work
* feat: make redux work
* feat: clean up
* feat: hokify
* feat: add error handling
* fix: back-end should be working
* fix: type errors
* fix: clean up back-end
* feat:addd styles
* feat: connect the client to the api
* feat: display wallets button everywhere
* test: add stripe key for cypress action
* test: fix for cypress tests
* test: cypress tests again
* test: maybe?
* test: more
* test: more
* test: more
* test
* askdfjasklfj
* fix: tests finally?
* revert: remove space from cypress yaml action
* remove logs
Co-authored-by: moT01 <20648924+moT01@users.noreply.github.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