Skip to content

Commit 303c065

Browse files
fix: fixed bug involving saving courses with draggable list
1 parent bae1da4 commit 303c065

File tree

8 files changed

+26
-17
lines changed

8 files changed

+26
-17
lines changed

src/pages/background/lib/addCourse.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
22
import type { Course } from '@shared/types/Course';
33
import { getUnusedColor } from '@shared/util/colors';
4+
import { generateRandomId } from '@shared/util/random';
45

56
/**
67
* Adds a course to a user's schedule.
@@ -19,6 +20,7 @@ export default async function addCourse(scheduleId: string, course: Course): Pro
1920
course.colors = getUnusedColor(activeSchedule, course);
2021
activeSchedule.courses.push(course);
2122
activeSchedule.updatedAt = Date.now();
23+
activeSchedule.id = generateRandomId();
2224

2325
await UserScheduleStore.set('schedules', schedules);
2426
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
2+
import { generateRandomId } from '@shared/util/random';
23

34
/**
45
* Clears the courses for a given schedule.
@@ -7,12 +8,13 @@ import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
78
*/
89
export default async function clearCourses(scheduleId: string): Promise<void> {
910
const schedules = await UserScheduleStore.get('schedules');
10-
const schedule = schedules.find(schedule => schedule.id === scheduleId);
11-
if (!schedule) {
11+
const activeSchedule = schedules.find(schedule => schedule.id === scheduleId);
12+
if (!activeSchedule) {
1213
throw new Error(`Schedule ${scheduleId} does not exist`);
1314
}
14-
schedule.courses = [];
15-
schedule.updatedAt = Date.now();
15+
activeSchedule.courses = [];
16+
activeSchedule.updatedAt = Date.now();
17+
activeSchedule.id = generateRandomId();
1618

1719
await UserScheduleStore.set('schedules', schedules);
1820
}

src/pages/background/lib/removeCourse.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
22
import type { Course } from '@shared/types/Course';
3+
import { generateRandomId } from '@shared/util/random';
34

45
/**
56
*
@@ -13,6 +14,7 @@ export default async function removeCourse(scheduleId: string, course: Course):
1314

1415
activeSchedule.courses = activeSchedule.courses.filter(c => c.uniqueId !== course.uniqueId);
1516
activeSchedule.updatedAt = Date.now();
17+
activeSchedule.id = generateRandomId();
1618

1719
await UserScheduleStore.set('schedules', schedules);
1820
}

src/pages/background/lib/renameSchedule.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
2+
import { generateRandomId } from '@shared/util/random';
23

34
/**
45
* Renames a schedule with the specified name to a new name.
@@ -8,13 +9,14 @@ import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
89
*/
910
export default async function renameSchedule(scheduleId: string, newName: string): Promise<string | undefined> {
1011
const schedules = await UserScheduleStore.get('schedules');
11-
const scheduleIndex = schedules.findIndex(schedule => schedule.id === scheduleId);
12-
if (scheduleIndex === -1) {
13-
return `Schedule ${scheduleId} does not exist`;
12+
const activeSchedule = schedules.find(schedule => schedule.id === scheduleId);
13+
if (!activeSchedule) {
14+
throw new Error(`Schedule ${scheduleId} does not exist`);
1415
}
1516

16-
schedules[scheduleIndex]!.name = newName;
17-
// schedules[scheduleIndex].updatedAt = Date.now();
17+
activeSchedule.name = newName;
18+
activeSchedule.updatedAt = Date.now();
19+
activeSchedule.id = generateRandomId();
1820

1921
await UserScheduleStore.set('schedules', schedules);
2022
return undefined;
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
2+
import { generateRandomId } from '@shared/util/random';
23

34
/**
45
* Switches the active schedule to the specified schedule name.
@@ -8,13 +9,14 @@ import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
89
*/
910
export default async function switchSchedule(scheduleId: string): Promise<void> {
1011
const schedules = await UserScheduleStore.get('schedules');
11-
12-
const scheduleIndex = schedules.findIndex(schedule => schedule.id === scheduleId);
13-
if (scheduleIndex === -1) {
12+
const activeIndex = schedules.findIndex(schedule => schedule.id === scheduleId)
13+
const activeSchedule = schedules.find(schedule => schedule.id === scheduleId);
14+
if (!activeSchedule) {
1415
throw new Error(`Schedule ${scheduleId} does not exist`);
1516
}
1617

17-
schedules[scheduleIndex]!.updatedAt = Date.now();
18+
activeSchedule.updatedAt = Date.now();
19+
activeSchedule.id = generateRandomId();
1820

19-
await UserScheduleStore.set('activeIndex', scheduleIndex);
21+
await UserScheduleStore.set('activeIndex', activeIndex);
2022
}

src/shared/types/UserSchedule.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export class UserSchedule {
1616

1717
constructor(schedule: Serialized<UserSchedule>) {
1818
this.courses = schedule.courses.map(c => new Course(c));
19-
this.id = schedule.id ?? generateRandomId();
19+
this.id = generateRandomId();
2020
this.name = schedule.name;
2121
this.hours = this.courses.reduce((acc, c) => acc + c.creditHours, 0);
2222
this.updatedAt = schedule.updatedAt ?? 0;

src/views/components/calendar/CalendarSchedules.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export function CalendarSchedules() {
4141
onReordered={reordered => {
4242
const activeSchedule = getActiveSchedule();
4343
const activeIndex = reordered.findIndex(s => s.id === activeSchedule.id);
44+
reordered[activeIndex] = activeSchedule;
4445

4546
// don't care about the promise
4647
UserScheduleStore.set('schedules', reordered);

src/views/hooks/useSchedules.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ export async function replaceSchedule(oldSchedule: UserSchedule, newSchedule: Us
8989
oldIndex = oldIndex !== -1 ? oldIndex : 0;
9090
schedules[oldIndex] = newSchedule;
9191
await UserScheduleStore.set('schedules', schedules);
92-
console.log('schedule replaced');
9392
}
9493

9594
/**
@@ -98,7 +97,6 @@ export async function replaceSchedule(oldSchedule: UserSchedule, newSchedule: Us
9897
* @returns A promise that resolves when the active schedule has been switched.
9998
*/
10099
export async function switchSchedule(id: string): Promise<void> {
101-
console.log('Switching schedule...');
102100
const schedules = await UserScheduleStore.get('schedules');
103101
const activeIndex = schedules.findIndex(s => s.id === id);
104102
await UserScheduleStore.set('activeIndex', activeIndex);

0 commit comments

Comments
 (0)