Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
6095d7c
fix: resolve conflicts
bartoszcembala Jul 13, 2026
bb8dd0e
feat: localize modern course overview
bartoszcembala Jul 8, 2026
ef79a48
fix: improved media and settings buttons visibility
bartoszcembala Jul 9, 2026
c06dfc2
feat: add edit content button
bartoszcembala Jul 9, 2026
08096f5
refactor: split CourseView into smaller components
bartoszcembala Jul 9, 2026
7b6e675
fix: stat cards centering
bartoszcembala Jul 9, 2026
e05437c
chore: regenerate prompts
bartoszcembala Jul 9, 2026
2320370
refactor: refactor course overview code
bartoszcembala Jul 11, 2026
bf8d102
feat: add what you will learn section
bartoszcembala Jul 12, 2026
5f0679b
feat: add progress bar
bartoszcembala Jul 13, 2026
d0ac5ef
fix: resolve conflicts
bartoszcembala Jul 13, 2026
a20d388
feat: add tests
bartoszcembala Jul 13, 2026
febe7c8
fix: fix e2e tests
bartoszcembala Jul 13, 2026
4275590
fix: regenerate course overview migration
bartoszcembala Jul 14, 2026
5044e29
fix: further e2e test fixes
bartoszcembala Jul 14, 2026
f61530c
fix: stabilize course update e2e auth
bartoszcembala Jul 14, 2026
15562b4
fix: remove unstable course update e2e test
bartoszcembala Jul 14, 2026
56fdf4e
refactor: apply feedback from review
bartoszcembala Jul 15, 2026
0819cf5
fix: author modal test fix
bartoszcembala Jul 15, 2026
1e18e1a
refactor: improved styling
bartoszcembala Jul 15, 2026
2ddb41f
feat: add chat
bartoszcembala Jul 16, 2026
eefe49d
feat: implement certificate setting
bartoszcembala Jul 17, 2026
55c93ec
fix: redirect to table of contents after changing mode
bartoszcembala Jul 20, 2026
07c0396
fix: resolve conflicts
bartoszcembala Jul 20, 2026
ac8be06
refactor: use predefined dialog component for modals
bartoszcembala Jul 20, 2026
bbc0295
fix: regenerate migrations
bartoszcembala Jul 21, 2026
d0206b0
fix: resolve conflicts
bartoszcembala Jul 21, 2026
d24263b
fix: regenerate migrations
bartoszcembala Jul 22, 2026
9ca9a5c
fix: fix e2e tests
bartoszcembala Jul 22, 2026
2829a35
fix: fix e2e tests
bartoszcembala Jul 22, 2026
ceef54c
fix: fix e2e tests
bartoszcembala Jul 22, 2026
09c54dc
fix: fix e2e tests
bartoszcembala Jul 22, 2026
cf7ad64
fix: fix e2e tests
bartoszcembala Jul 22, 2026
6c7df47
fix: fix e2e tests
bartoszcembala Jul 22, 2026
9144d40
feat: limit learning outcomes
bartoszcembala Jul 22, 2026
5dac7d8
feat: enabled admin to change translations
bartoszcembala Jul 24, 2026
4801c6c
refactor: change category selector
bartoszcembala Jul 24, 2026
976c1ec
fix: resolve conflicts
bartoszcembala Jul 26, 2026
7248cad
fix: improve mobile design
bartoszcembala Jul 27, 2026
5b99f7f
fix: change tests
bartoszcembala Jul 27, 2026
72ed018
fix: restore generated prompts
bartoszcembala Jul 27, 2026
2f7d56e
fix: restore generated prompts
bartoszcembala Jul 27, 2026
ac55e61
fix: review fixes
bartoszcembala Jul 28, 2026
5072c7c
fix: resolve conflicts
bartoszcembala Jul 28, 2026
d17da39
fix: restore migration
bartoszcembala Jul 28, 2026
874af04
fix: add missing migration
bartoszcembala Jul 28, 2026
db3e8d7
fix: fix test
bartoszcembala Jul 28, 2026
e4b0586
fix: fix test
bartoszcembala Jul 28, 2026
9168e51
fix: fix tests
bartoszcembala Jul 28, 2026
731917f
fix: fix tests
bartoszcembala Jul 28, 2026
8b5ee14
fix: fix tests
bartoszcembala Jul 28, 2026
0e6c96a
fix: fix tests
bartoszcembala Jul 28, 2026
36a175c
feat: add redirect to first lesson after enrolling via course overview
bartoszcembala Jul 29, 2026
426452c
feat: add tests
bartoszcembala Jul 29, 2026
65304c3
feat: add error handling
bartoszcembala Jul 29, 2026
e82b7f8
fix: resolve migrations
bartoszcembala Jul 29, 2026
9818a07
fix: resolve conflicts
bartoszcembala Jul 29, 2026
9735714
fix: fix e2e test
bartoszcembala Jul 29, 2026
566ae50
fix: optimize course duration calculation
bartoszcembala Jul 29, 2026
daa8406
fix: restore playwright config
bartoszcembala Jul 29, 2026
1fed8b3
fix: apply fixes from review
bartoszcembala Jul 29, 2026
ca2d0a7
fix: resolve conflicts
bartoszcembala Jul 29, 2026
580b6cc
fix: lint fix
bartoszcembala Jul 29, 2026
e3f8146
fix: restore correct files
bartoszcembala Jul 29, 2026
6a25cec
fix: test fixes
bartoszcembala Jul 29, 2026
7d3c6f5
fix: disable deadlines for content creator
bartoszcembala Jul 30, 2026
3c935ee
Merge branch 'bc_refactor_1377_implement_modern_course_overview' into…
bartoszcembala Jul 30, 2026
6eef05d
test: fix e2e
bartoszcembala Jul 30, 2026
c0e1967
fix: address reviewer's feedback
bartoszcembala Jul 31, 2026
8fb6f64
Merge remote-tracking branch 'origin/staging' into bc_refactor_1377_i…
bartoszcembala Jul 31, 2026
fa02f1d
fix: update generated api language types
bartoszcembala Jul 31, 2026
b995fcc
fix: add api schema
bartoszcembala Jul 31, 2026
2ae7896
fix: restore French api translations
bartoszcembala Jul 31, 2026
7809726
fix: rebase
bartoszcembala Jul 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions apps/api/src/activity-logs/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,9 @@ export type CourseActivityLogSnapshot = {
categoryId?: UUIDType | null;
authorId?: UUIDType | null;
thumbnailS3Key?: string | null;
thumbnailPositionY?: number;
learningOutcomes?: string[];
showAuthorSection?: boolean;
baseLanguage?: string;
availableLocales?: string[];
settings?: Record<string, unknown>;
Expand Down
7 changes: 7 additions & 0 deletions apps/api/src/chapter/schemas/chapter.schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@ export const allChapterSchema = Type.Array(chapterSchema);

export const showChapterSchema = Type.Object({
...chapterSchema.properties,

estimatedDurationSeconds: Type.Optional(
Type.Number({
minimum: 0,
}),
),

quizCount: Type.Optional(Type.Number()),
lessons: lessonForChapterSchema,
});
Expand Down
44 changes: 44 additions & 0 deletions apps/api/src/common/helpers/sqlHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,43 @@ export function setJsonbField(
`;
}

const stringArrayToJsonb = (value: string[]) => {
if (!value.length) {
return sql`to_jsonb(ARRAY[]::text[])`;
}

return sql`to_jsonb(ARRAY[${sql.join(
value.map((item) => sql`${item}`),
sql`, `,
)}]::text[])`;
};

export function setJsonbStringArrayField(
field: any,
key?: string | null,
value?: string[],
createMissing: boolean = true,
) {
if (key == null || value === undefined) return undefined;
if (!key) return undefined;

const objectField = sql`
CASE
WHEN jsonb_typeof(${field}) = 'object' THEN ${field}
ELSE '{}'::jsonb
END
`;

return sql`
jsonb_set(
${objectField},
ARRAY[${key}]::text[],
${stringArrayToJsonb(value)},
${createMissing}
)
`;
}

export type JsonbFieldUpdate = ReturnType<typeof setJsonbField>;

export function buildJsonbField(
Expand All @@ -56,6 +93,13 @@ export function buildJsonbField(
return sql`json_build_object(${key}::text, ${value}::text)`;
}

export function buildJsonbStringArrayField(key?: string | null, value?: string[]) {
if (key == null || value === undefined) return undefined;
if (!key) return undefined;

return sql`jsonb_build_object(${key}::text, ${stringArrayToJsonb(value)})`;
}

export function deleteJsonbField(field: AnyPgColumn, key: string) {
return sql`${field} - ${key}::text`;
}
Expand Down
Loading