From 21fd59c196fac320c01dbd1c954635974b56d794 Mon Sep 17 00:00:00 2001 From: Kacper Ziubryniewicz Date: Fri, 3 Jan 2020 23:48:50 +0100 Subject: [PATCH] [API/Edudziennik] Save and use semester cookie instead of currentSemester in profile. --- .../data/api/edziennik/edudziennik/DataEdudziennik.kt | 8 ++++++++ .../data/api/edziennik/edudziennik/data/EdudziennikWeb.kt | 2 +- .../edudziennik/data/web/EdudziennikWebAttendance.kt | 2 +- .../edudziennik/data/web/EdudziennikWebGrades.kt | 8 ++++---- .../edziennik/edudziennik/data/web/EdudziennikWebNotes.kt | 2 +- .../edziennik/edudziennik/login/EdudziennikLoginWeb.kt | 2 ++ 6 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt index d6aa2881..787e7c5c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt @@ -22,6 +22,9 @@ class DataEdudziennik(app: App, profile: Profile?, loginStore: LoginStore) : Dat fun isWebLoginValid() = webSessionIdExpiryTime-30 > currentTimeUnix() && webSessionId.isNotNullNorEmpty() + val currentSemester: Int + get() = webSemester + override fun satisfyLoginMethods() { loginMethods.clear() if (isWebLoginValid()) { @@ -65,6 +68,11 @@ class DataEdudziennik(app: App, profile: Profile?, loginStore: LoginStore) : Dat get() { mWebSessionId = mWebSessionId ?: loginStore.getLoginData("webSessionId", null); return mWebSessionId } set(value) { loginStore.putLoginData("webSessionId", value); mWebSessionId = value } + private var mWebSemester: Int? = null + var webSemester: Int + get() { mWebSemester = mWebSemester ?: loginStore.getLoginData("webSemester", 1); return mWebSemester ?: 1 } + set(value) { loginStore.putLoginData("webSemester", value); mWebSemester = value } + private var mWebSessionIdExpiryTime: Long? = null var webSessionIdExpiryTime: Long get() { mWebSessionIdExpiryTime = mWebSessionIdExpiryTime ?: loginStore.getLoginData("webSessionIdExpiryTime", 0L); return mWebSessionIdExpiryTime ?: 0L } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikWeb.kt index 2f36a4a8..7d243f52 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikWeb.kt @@ -70,7 +70,7 @@ open class EdudziennikWeb(open val data: DataEdudziennik) { .secure().httpOnly().build(), Cookie.Builder() .name("semester") - .value((profile?.currentSemester ?: 1).toString()) + .value((data.webSemester).toString()) .domain("dziennikel.appspot.com") .secure().httpOnly().build() )) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt index c24fc8d3..5f6a5325 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt @@ -69,7 +69,7 @@ class EdudziennikWebAttendance(override val data: DataEdudziennik, id, lesson?.displayTeacherId ?: -1, lesson?.displaySubjectId ?: -1, - profile.currentSemester, + data.currentSemester, name, date, lesson?.displayStartTime ?: startTime, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt index d3c512a2..0e507c4c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt @@ -107,7 +107,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, name, value, if (gradeCountToAverage) weight else 0f, - profile.currentSemester, + data.currentSemester, teacher.id, subject.id ).apply { @@ -137,7 +137,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, proposed, proposed.toFloatOrNull() ?: 0f, 0f, - profile.currentSemester, + data.currentSemester, -1, subject.id ).apply { @@ -170,7 +170,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, final, final.toFloatOrNull() ?: 0f, 0f, - profile.currentSemester, + data.currentSemester, -1, subject.id ).apply { @@ -201,7 +201,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, TYPE_SEMESTER1_FINAL, TYPE_SEMESTER2_FINAL ).map { - DataRemoveModel.Grades.semesterWithType(profile.currentSemester, it) + DataRemoveModel.Grades.semesterWithType(data.currentSemester, it) }) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt index 213dd2d2..00b9685f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt @@ -42,7 +42,7 @@ class EdudziennikWebNotes(override val data: DataEdudziennik, profileId, id, description, - profile.currentSemester, + data.currentSemester, Notice.TYPE_NEUTRAL, teacher.id ) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt index 8387a775..80f2e81b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt @@ -61,6 +61,7 @@ class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit) val cookies = data.app.cookieJar.getForDomain("dziennikel.appspot.com") val sessionId = cookies.firstOrNull { it.name() == "sessionid" }?.value() + val semester = cookies.firstOrNull { it.name() == "semester" }?.value()?.toIntOrNull() if (sessionId == null) { data.error(ApiError(TAG, ERROR_LOGIN_EDUDZIENNIK_WEB_NO_SESSION_ID) @@ -70,6 +71,7 @@ class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit) } data.webSessionId = sessionId + semester?.let { data.webSemester = it } data.webSessionIdExpiryTime = response.getUnixDate() + 45 * 60 /* 45 min */ onSuccess() }