From a1e506b7b25eade55f02a3f2523fc5963450974b Mon Sep 17 00:00:00 2001 From: Starcea Date: Sun, 14 Jul 2024 20:36:01 +0900 Subject: [PATCH] feat: add originalSubject and originalTeacher --- src/client.ts | 21 +++++++++++++++++---- src/models/School.ts | 2 +- src/models/Timetable.ts | 15 +++++++++++++-- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/client.ts b/src/client.ts index 049e993..fa4fb56 100644 --- a/src/client.ts +++ b/src/client.ts @@ -2,7 +2,7 @@ import axios from 'axios' import { BASE_URL, USER_AGENT } from './constants' import DataManager from './data' import School from './models/School' -import type Timetable from './models/Timetable' +import type { Timetable } from './models/Timetable' import { encodeBase64, encodeEUCKR } from './utils/encode' import { parseResponse } from './utils/parse' @@ -64,13 +64,26 @@ export default class Comcigan { cls.slice(1).map((day, dIdx) => day.slice(1).map((period, pIdx) => { const p = period.toString() + const changed = + period !== original[gIdx + 1][cIdx + 1][dIdx + 1][pIdx + 1] return { subject: subjects[Number(p.slice(0, p.length - teachersLen - 1))], teacher: teachers[Number(p.slice(-teachersLen))], - changed: - period !== original[gIdx + 1][cIdx + 1][dIdx + 1][pIdx + 1], - } + changed, + ...(changed + ? { + originalSubject: + subjects[ + original[gIdx + 1][cIdx + 1][dIdx + 1][pIdx + 1] + ], + originalTeacher: + teachers[ + original[gIdx + 1][cIdx + 1][dIdx + 1][pIdx + 1] + ], + } + : {}), + } as Timetable }), ), ), diff --git a/src/models/School.ts b/src/models/School.ts index 97e61f4..a787c2b 100644 --- a/src/models/School.ts +++ b/src/models/School.ts @@ -1,7 +1,7 @@ import Comcigan from '../client' import Fetcher from './Fetcher' import type Region from './Region' -import type Timetable from './Timetable' +import type { Timetable } from './Timetable' interface ISchool { /** 학교 코드 */ diff --git a/src/models/Timetable.ts b/src/models/Timetable.ts index c807b21..db8a547 100644 --- a/src/models/Timetable.ts +++ b/src/models/Timetable.ts @@ -1,8 +1,19 @@ -export default interface Timetable { +export type Timetable = { /** 과목 */ subject: string /** 교사 */ teacher: string /** 변경 여부 */ changed: boolean -} +} & ( + | { + changed: true + /** 변경 전 과목 */ + originalSubject: string + /** 변경 전 교사 */ + originalTeacher: string + } + | { + changed: false + } +)