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 c37e11eb..40601249 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 @@ -74,6 +74,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 f6ecdab5..949bd49f 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 @@ -25,11 +25,11 @@ open class EdudziennikWeb(open val data: DataEdudziennik) { val profile get() = data.profile - fun webGet(tag: String, endpoint: String, xhr: Boolean = false, onSuccess: (text: String) -> Unit) { + fun webGet(tag: String, endpoint: String, xhr: Boolean = false, semester: Int? = null, onSuccess: (text: String) -> Unit) { val url = "https://dziennikel.appspot.com/" + when (endpoint.endsWith('/') || endpoint.contains('?') || endpoint.isEmpty()) { true -> endpoint else -> "$endpoint/" - } + } + (semester?.let { "?semester=$it" } ?: "") d(tag, "Request: Edudziennik/Web - $url") @@ -41,11 +41,17 @@ open class EdudziennikWeb(open val data: DataEdudziennik) { return } - val cookies = data.app.cookieJar.getForDomain("dziennikel.appspot.com") - val semester = cookies.firstOrNull { it.name() == "semester" }?.value()?.toIntOrNull() + if (semester == null && url.contains("start")) { + profile?.also { profile -> + val cookies = data.app.cookieJar.getForDomain("dziennikel.appspot.com") + val semesterCookie = cookies.firstOrNull { it.name() == "semester" }?.value()?.toIntOrNull() - if (profile != null && semester == 2 && profile!!.dateSemester2Start > Date.getToday()) - profile!!.dateSemester2Start = Date.getToday().stepForward(0, 0, -1) + semesterCookie?.let { data.currentSemester = it } + + if (semesterCookie == 2 && profile.dateSemester2Start > Date.getToday()) + profile.dateSemester2Start = Date.getToday().stepForward(0, 0, -1) + } + } try { onSuccess(text) 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 06094aa6..63404c58 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 @@ -27,17 +27,18 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, private const val TAG = "EdudziennikWebGrades" } - private var semester: Int = 1 + private var requestSemester: Int? = null - init { data.profile?.also { profile -> - semester = profile.currentSemester + init { + if (profile?.empty == true && data.currentSemester == 2) requestSemester = 1 getGrades() - } ?: onSuccess() } + } private fun getGrades() { data.profile?.also { profile -> - webGet(TAG, data.studentEndpoint + "start/?semester=$semester") { text -> - val doc = Jsoup.parse(text) + webGet(TAG, data.studentEndpoint + "start", semester = requestSemester) { text -> + val semester = requestSemester ?: data.currentSemester + val doc = Jsoup.parse(text) val subjects = doc.select("#student_grades tbody").firstOrNull()?.children() subjects?.forEach { subjectElement -> @@ -212,8 +213,8 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, }) } - if (profile.empty && semester == 2) { - semester = 1 + if (profile.empty && requestSemester == 1 && data.currentSemester == 2) { + requestSemester = null getGrades() } else { data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_GRADES, SYNC_ALWAYS)