From bce74a408c0ec29d8e0e39061acda7d21ab300b4 Mon Sep 17 00:00:00 2001 From: Kacper Ziubryniewicz Date: Sat, 4 Jan 2020 23:05:36 +0100 Subject: [PATCH] [API/Edudziennik] Save cookie with semester in student data. Change semester date on semester change. --- .../api/edziennik/edudziennik/DataEdudziennik.kt | 13 +++++-------- .../edziennik/edudziennik/data/EdudziennikWeb.kt | 2 +- .../edudziennik/login/EdudziennikLoginWeb.kt | 10 +++++++++- 3 files changed, 15 insertions(+), 10 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 a363848c..056a06f4 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,9 +22,6 @@ 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()) { @@ -70,11 +67,6 @@ 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 } @@ -86,6 +78,11 @@ class DataEdudziennik(app: App, profile: Profile?, loginStore: LoginStore) : Dat | | | | __| '_ \ / _ \ '__| | |__| | |_| | | | __/ | \____/ \__|_| |_|\___|*/ + private var mCurrentSemester: Int? = null + var currentSemester: Int + get() { mCurrentSemester = mCurrentSemester ?: profile?.getStudentData("currentSemester", 1); return mCurrentSemester ?: 1 } + set(value) { profile?.putStudentData("currentSemester", value) ?: return; mCurrentSemester = value } + private var mSchoolName: String? = null var schoolName: String? get() { mSchoolName = mSchoolName ?: profile?.getStudentData("schoolName", null); return mSchoolName } 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 7d243f52..0bf15dd7 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((data.webSemester).toString()) + .value((data.currentSemester).toString()) .domain("dziennikel.appspot.com") .secure().httpOnly().build() )) 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 80f2e81b..381da652 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 @@ -13,6 +13,7 @@ import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.getUnixDate import pl.szczodrzynski.edziennik.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.Utils.d +import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit) { companion object { @@ -71,7 +72,14 @@ class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit) } data.webSessionId = sessionId - semester?.let { data.webSemester = it } + + if (data.profile != null && semester != null) { + data.currentSemester = semester + + if (semester == 2 && data.profile.dateSemester2Start > Date.getToday()) + data.profile.dateSemester2Start = Date.getToday().stepForward(0, 0, -1) + } + data.webSessionIdExpiryTime = response.getUnixDate() + 45 * 60 /* 45 min */ onSuccess() }