* feat(client): link Arabic new articles to freeCodeCamp searchbar
* Point to english articles, instead of arabic articles
Co-authored-by: Naomi Carrigan <nhcarrigan@gmail.com>
* link the search bar to Arabic news
Co-authored-by: Naomi Carrigan <nhcarrigan@gmail.com>
* feat: use updateMySocials not updateUserFlag
* fix: replace updateUserFlag with updateMyTheme
* fix: show social icons
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* fix: delete social booleans from client
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* feat: volume slider campire mode
* fix: set a play sound interval
* fix: set volume to 50% if there is no volume key
* fix: add correct colors to progress bar
* fix: remove IE support
* fix: get slide value working in Chrome
* fix: remove space
* fix: actually use volume in the editor
* fix: add aria-label
* fix: set volume if not present in store
* fix: use label instead
* Apply Naomi's review on Toms suggestion
Co-authored-by: Naomi Carrigan <nhcarrigan@gmail.com>
* fix: linting
* Update client/i18n/locales/english/translations.json
Co-authored-by: Bruce Blaser <bbsmooth@gmail.com>
Co-authored-by: root <root@DESKTOP-EMNPVBP.localdomain>
Co-authored-by: Naomi Carrigan <nhcarrigan@gmail.com>
Co-authored-by: Bruce Blaser <bbsmooth@gmail.com>
* chore: set up lang config
* chore: migrate the manually translated files
Co-authored-by: Sem Bauke <semboot699@gmail.com>
Co-authored-by: Ilenia <nethleen@gmail.com>
* chore: make curriculum helpers external
* feat: add curriculum helpers as a package
* fix: use right preset?
* fix: update version with babel transpiled files
* fix: re-add fixture
* fix: declare as module
* fix: add declaration files in curriculum helpers
* fix: nothing with version 1.0.4
* fix: missing functions in package
* fix: remove old babel
* fix: linting
* feat: update keyboard shortcuts client endpoint
* Update client/src/redux/settings/settings-sagas.js
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* Update putUpdateMyKeyboardShortcuts return type
* Use new saga in shortcuts-modal
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* refactor: return response with data from ajax
Because we still need to manipulate the data coming back from the server
(files -> challengeFiles) and we want to keep ajax.ts as the interface
between client and server we need to return the manipulated data with
the response.
* feat: re-enable failed updates flushing
* test: failed updates get resubmitted and flushed
* fix: convert settings requests to use { data }
* refactor: use preserveSession
* chore: move files
* wip: i have no idea what i am doing
* feat: finish up the logic
* chore: use order from randy sheet
* chore: standardise titles
* feat: fix layout for new js projects
* fix: utils test
* fix: challenge tests
* fix: ignore show new curriculum on non-english tests
* chore: help category????
* fix: if these tests would fail locally that'd be great
* chore: duplicate ids
* feat: convert RWD cert projects
* feat: convert original projects
* fix: add usesMultiFileEditor to meta
* feat: add cypress tests for saving and loading to/from database
* fix: broken cypress tests
* fix: inconsistent variable naming
* fix: missed variable name
* fix: more cypress
* feat: add solutions for english
* fix: ctrl+s to database only if signed in
* fix: prioritize code from db
* refactor: expand the comments slightly
* 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
* 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>
* 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>
* feat(learn, i18n): enable japanese certifications
* feat(learn, i18n): update links for japanese pages
* Revert "feat(learn, i18n): update links for japanese pages"
This reverts commit 8e16f4dd22.
* feat(learn, i18n): update links for japanese pages
* feat(learn, i18n): update algoliaIndices for japanese
* feat(learn, i18n): update meta tags for japanese
* 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>
* feat: use legacy flag
chore: reorder challenges
fix: linter
revert: server change
feat: unblock new editor
fix: proper order
fix: 0-based order
fix: broke the order
feat: move tribute certification to its own block
feat: split the old projects block into 4
fix: put all blocks in order
chore: add intro text
refactor: use block, not blockName in query
fix: project progress indicator
* fix: reorder new challenges/certs
* fix: reorder legacy challenges
* fix: reintroduce legacy certs
* feat: add showNewCurriculum flag to env
* chore: forgot sample.env
* feat: use feature flag for display
* fix: rename meta + dirs to match new blocks
* fix: add new blocks to help-category-map
* fix: update completion-modal for new GQL schema
* test: duplicate title/id errors -> warnings
* fix: update completion-modal to new GQL schema Mk2
* chore: re-order metas (again)
* fix: revert super-block-intro changes
The intro needs to show both legacy and new content. We need to decide
which pages are created, rather than than what a page shows when
rendered.
* feat: move upcoming curriculum into own superblock
* fix: handle one certification with two superBlocks
* fix: remove duplicated intros
* fix: remove duplicate projects from /settings
* fix: drop 'two' from Responsive Web Design Two
* chore: rename slug suffix from two to v2
* feat: control display of new curriculum
* feat: control project paths shown on /settings
* fix: use new project order for /settings
This does mean that /settings will change before the release, but I
don't think it's serious. All the projects are there, just not in the
legacy order.
* fix: claim/show cert button
* chore: remove isLegacy
Since we have legacy superblocks, we don't currently need individual
blocks to be legacy
* test: fix utils.test
* fix: verifyCanClaim needs certification
If Shaun removes the cert claim cards, maybe we can remove this entirely
* fix: add hasEditableBoundaries flags where needed
* chore: remove isUpcomingChange
* chore: v2 -> 22
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* 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(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>
* chore: rename the file CertificationCard.js to tsx
* refactor: refactor the file CertificationCard to tsx
refactor: refactor the file CertificationCard to tsx
refactor: refactor the file CertificationCard to tsx
* chore: rename the file ClaimCertSteps.js to tsx
* refactor: refactor the file ClaimCertSteps to TS
* chore: rename the file SuperBlockIntro.js to tsx
* refactor: refactor the file SuperBlockIntro to TS
* chore: rename the file Block.js to tsx
* refactor: refactor the file Block to TS
refactor: refactor the file Block to TS
refactor: refactor the file Block to TS
* chore: rename the file CertChallenge.js to tsx
* refactor: refactor the file CertChallenge to TS
* fix typing
* ignore missing redux store connection
Co-authored-by: ismail <i.tlemcani@quinten-maroc.com>
Co-authored-by: Ismail Tlemcani <ismail.tlemcani@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>