refactor: Replace Webpack with Vite (#53)
This commit is contained in:
17
src/pages/background/lib/addCourse.ts
Normal file
17
src/pages/background/lib/addCourse.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
|
||||
import { Course } from '@shared/types/Course';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export default async function addCourse(scheduleName: string, course: Course): Promise<void> {
|
||||
const schedules = await UserScheduleStore.get('schedules');
|
||||
const activeSchedule = schedules.find(s => s.name === scheduleName);
|
||||
if (!activeSchedule) {
|
||||
throw new Error('Schedule not found');
|
||||
}
|
||||
|
||||
activeSchedule.courses.push(course);
|
||||
|
||||
await UserScheduleStore.set('schedules', schedules);
|
||||
}
|
||||
11
src/pages/background/lib/clearCourses.ts
Normal file
11
src/pages/background/lib/clearCourses.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
|
||||
|
||||
export default async function clearCourses(scheduleName: string): Promise<void> {
|
||||
const schedules = await UserScheduleStore.get('schedules');
|
||||
const schedule = schedules.find(schedule => schedule.name === scheduleName);
|
||||
if (!schedule) {
|
||||
throw new Error(`Schedule ${scheduleName} does not exist`);
|
||||
}
|
||||
schedule.courses = [];
|
||||
await UserScheduleStore.set('schedules', schedules);
|
||||
}
|
||||
21
src/pages/background/lib/createSchedule.ts
Normal file
21
src/pages/background/lib/createSchedule.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
|
||||
|
||||
/**
|
||||
* Creates a new schedule with the given name
|
||||
* @param scheduleName the name of the schedule to create
|
||||
* @returns undefined if successful, otherwise an error message
|
||||
*/
|
||||
export default async function createSchedule(scheduleName: string): Promise<string | undefined> {
|
||||
const schedules = await UserScheduleStore.get('schedules');
|
||||
if (schedules.find(schedule => schedule.name === scheduleName)) {
|
||||
return `Schedule ${scheduleName} already exists`;
|
||||
}
|
||||
|
||||
schedules.push({
|
||||
name: scheduleName,
|
||||
courses: [],
|
||||
});
|
||||
|
||||
await UserScheduleStore.set('schedules', schedules);
|
||||
return undefined;
|
||||
}
|
||||
20
src/pages/background/lib/deleteSchedule.ts
Normal file
20
src/pages/background/lib/deleteSchedule.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
|
||||
|
||||
export default async function deleteSchedule(scheduleName: string): Promise<string | undefined> {
|
||||
const [schedules, activeIndex] = await Promise.all([
|
||||
UserScheduleStore.get('schedules'),
|
||||
UserScheduleStore.get('activeIndex'),
|
||||
]);
|
||||
|
||||
const scheduleIndex = schedules.findIndex(schedule => schedule.name === scheduleName);
|
||||
if (scheduleIndex === -1) {
|
||||
return `Schedule ${scheduleName} does not exist`;
|
||||
}
|
||||
if (scheduleIndex === activeIndex) {
|
||||
return 'Cannot delete active schedule';
|
||||
}
|
||||
|
||||
schedules.splice(scheduleIndex, 1);
|
||||
await UserScheduleStore.set('schedules', schedules);
|
||||
return undefined;
|
||||
}
|
||||
17
src/pages/background/lib/removeCourse.ts
Normal file
17
src/pages/background/lib/removeCourse.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
|
||||
import { Course } from '@shared/types/Course';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export default async function removeCourse(scheduleName: string, course: Course): Promise<void> {
|
||||
const schedules = await UserScheduleStore.get('schedules');
|
||||
const activeSchedule = schedules.find(s => s.name === scheduleName);
|
||||
if (!activeSchedule) {
|
||||
throw new Error('Schedule not found');
|
||||
}
|
||||
|
||||
activeSchedule.courses = activeSchedule.courses.filter(c => c.uniqueId !== course.uniqueId);
|
||||
|
||||
await UserScheduleStore.set('schedules', schedules);
|
||||
}
|
||||
17
src/pages/background/lib/renameSchedule.ts
Normal file
17
src/pages/background/lib/renameSchedule.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
|
||||
|
||||
export default async function renameSchedule(scheduleName: string, newName: string): Promise<string | undefined> {
|
||||
const schedules = await UserScheduleStore.get('schedules');
|
||||
const scheduleIndex = schedules.findIndex(schedule => schedule.name === scheduleName);
|
||||
if (scheduleIndex === -1) {
|
||||
return `Schedule ${scheduleName} does not exist`;
|
||||
}
|
||||
if (schedules.find(schedule => schedule.name === newName)) {
|
||||
return `Schedule ${newName} already exists`;
|
||||
}
|
||||
|
||||
schedules[scheduleIndex].name = newName;
|
||||
|
||||
await UserScheduleStore.set('schedules', schedules);
|
||||
return undefined;
|
||||
}
|
||||
12
src/pages/background/lib/switchSchedule.ts
Normal file
12
src/pages/background/lib/switchSchedule.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { UserScheduleStore } from '@shared/storage/UserScheduleStore';
|
||||
|
||||
export default async function switchSchedule(scheduleName: string): Promise<void> {
|
||||
const schedules = await UserScheduleStore.get('schedules');
|
||||
|
||||
const scheduleIndex = schedules.findIndex(schedule => schedule.name === scheduleName);
|
||||
if (scheduleIndex === -1) {
|
||||
throw new Error(`Schedule ${scheduleName} does not exist`);
|
||||
}
|
||||
|
||||
await UserScheduleStore.set('activeIndex', scheduleIndex);
|
||||
}
|
||||
Reference in New Issue
Block a user