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 8c7f42ea..c37e11eb 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 @@ -7,11 +7,7 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_EDUDZIENNIK_WEB import pl.szczodrzynski.edziennik.data.api.models.Data -import pl.szczodrzynski.edziennik.data.db.entity.EventType -import pl.szczodrzynski.edziennik.data.db.entity.LoginStore -import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.data.db.entity.Subject -import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.data.db.entity.* /** * Use http://patorjk.com/software/taag/#p=display&f=Big for the ascii art @@ -78,11 +74,6 @@ 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 0bf15dd7..f6ecdab5 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 @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.utils.Utils.d +import pl.szczodrzynski.edziennik.utils.models.Date open class EdudziennikWeb(open val data: DataEdudziennik) { companion object { @@ -40,6 +41,12 @@ 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 (profile != null && semester == 2 && profile!!.dateSemester2Start > Date.getToday()) + profile!!.dateSemester2Start = Date.getToday().stepForward(0, 0, -1) + try { onSuccess(text) } catch (e: Exception) { @@ -67,11 +74,6 @@ open class EdudziennikWeb(open val data: DataEdudziennik) { .name("sessionid") .value(data.webSessionId!!) .domain("dziennikel.appspot.com") - .secure().httpOnly().build(), - Cookie.Builder() - .name("semester") - .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/data/web/EdudziennikWebAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt index 822a9483..a1c4e45f 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, - data.currentSemester, + profile.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 4b858925..06094aa6 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 @@ -13,10 +13,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_GRADES import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Grade.* import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.get import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date @@ -27,8 +27,15 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, private const val TAG = "EdudziennikWebGrades" } + private var semester: Int = 1 + init { data.profile?.also { profile -> - webGet(TAG, data.studentEndpoint + "start") { text -> + semester = profile.currentSemester + getGrades() + } ?: onSuccess() } + + private fun getGrades() { data.profile?.also { profile -> + webGet(TAG, data.studentEndpoint + "start/?semester=$semester") { text -> val doc = Jsoup.parse(text) val subjects = doc.select("#student_grades tbody").firstOrNull()?.children() @@ -107,7 +114,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, name, value, if (gradeCountToAverage) weight else 0f, - data.currentSemester, + semester, teacher.id, subject.id ).apply { @@ -137,7 +144,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, proposed, proposed.toFloatOrNull() ?: 0f, 0f, - data.currentSemester, + semester, -1, subject.id ).apply { @@ -170,7 +177,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, final, final.toFloatOrNull() ?: 0f, 0f, - data.currentSemester, + semester, -1, subject.id ).apply { @@ -201,12 +208,17 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, TYPE_SEMESTER1_FINAL, TYPE_SEMESTER2_FINAL ).map { - DataRemoveModel.Grades.semesterWithType(data.currentSemester, it) + DataRemoveModel.Grades.semesterWithType(semester, it) }) } - data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_GRADES, SYNC_ALWAYS) - onSuccess() + if (profile.empty && semester == 2) { + semester = 1 + getGrades() + } else { + data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_GRADES, SYNC_ALWAYS) + onSuccess() + } } - }} + } ?: onSuccess() } } 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 35f2d0a8..594fbc63 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 @@ -10,9 +10,9 @@ import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_NOTE_ID import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_NOTES import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Notice +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.get import pl.szczodrzynski.edziennik.utils.models.Date @@ -42,7 +42,7 @@ class EdudziennikWebNotes(override val data: DataEdudziennik, profileId, id, description, - data.currentSemester, + profile.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 381da652..8387a775 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,7 +13,6 @@ 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 { @@ -62,7 +61,6 @@ 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) @@ -72,14 +70,6 @@ class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit) } data.webSessionId = sessionId - - 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() }