diff --git a/src-ts/lib/profile-provider/profile-functions/profile-factory/user-role.enum.ts b/src-ts/lib/profile-provider/profile-functions/profile-factory/user-role.enum.ts index f56a29f43..a77ec1fef 100644 --- a/src-ts/lib/profile-provider/profile-functions/profile-factory/user-role.enum.ts +++ b/src-ts/lib/profile-provider/profile-functions/profile-factory/user-role.enum.ts @@ -2,4 +2,5 @@ export enum UserRole { gamificationAdmin = 'Gamification Admin', customer = 'Self-Service Customer', member = 'Topcoder User', + tcaAdmin = 'TCA Admin', } diff --git a/src-ts/tools/learn/free-code-camp/FreeCodeCamp.module.scss b/src-ts/tools/learn/free-code-camp/FreeCodeCamp.module.scss index 9aac4faaf..a857134e6 100644 --- a/src-ts/tools/learn/free-code-camp/FreeCodeCamp.module.scss +++ b/src-ts/tools/learn/free-code-camp/FreeCodeCamp.module.scss @@ -47,3 +47,23 @@ } } } + +.wrapBreadcrumb { + position: relative; + + .completeCourseBtn { + position: absolute; + right: $space-xxxxl; + bottom: $space-xl; + + @include ltesm { + right: $space-sm; + bottom: $space-md; + } + + @include md { + right: $space-sm; + bottom: $space-lg; + } + } +} \ No newline at end of file diff --git a/src-ts/tools/learn/free-code-camp/FreeCodeCamp.tsx b/src-ts/tools/learn/free-code-camp/FreeCodeCamp.tsx index e20942c9b..b00ed44f3 100644 --- a/src-ts/tools/learn/free-code-camp/FreeCodeCamp.tsx +++ b/src-ts/tools/learn/free-code-camp/FreeCodeCamp.tsx @@ -11,15 +11,19 @@ import { useState, } from 'react' import { NavigateFunction, Params, useNavigate, useParams } from 'react-router-dom' +import { toast, ToastContent } from 'react-toastify' import { Breadcrumb, BreadcrumbItemModel, + Button, LoadingSpinner, + logError, profileContext, ProfileContextData, surveyTriggerForUser, textFormatGetSafeString, + UserRole, } from '../../../lib' import { CoursesProviderData, @@ -33,6 +37,7 @@ import { useGetLesson, useGetUserCertificationProgress, useLearnBreadcrumb, + userCertificationProgressAutocompleteCourse, userCertificationProgressCompleteCourseAsync, UserCertificationProgressProviderData, userCertificationProgressStartAsync, @@ -465,10 +470,44 @@ const FreeCodeCamp: FC<{}> = () => { certificationParam, ]); + /** + * Complete course shortcut for admins + */ + function adminCompleteCourse(): void { + const confirmed = confirm('Hey, you\'re about to auto-complete this entire course. Are you sure?'); + + if (!certificateProgress?.id || !confirmed) { + return + } + + userCertificationProgressAutocompleteCourse(certificateProgress.id) + .then(setCertificateProgress) + .then(() => { + toast.info(
Yay, success! You completed the course.
) + }) + .catch(error => { + logError(error) + toast.error('Oops! We couldn\'t complete your request as some error happened. See console for more...') + }) + } + return ( <>