From ee30232530c170b5789ea74791732a595ee88f5a Mon Sep 17 00:00:00 2001 From: KrystianQur <85182225+KrystianQur@users.noreply.github.com> Date: Sun, 23 Feb 2025 22:19:19 +0100 Subject: [PATCH] [API/Librus] Fix TeacherFreeDays API problems (#215) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Librus] Fix TeacherFreeDays API problems * [Librus] Small Teacher Free Days Bug fix & improvement * [Librus] Implementation fix * Apply suggestions from code review --------- Co-authored-by: Kuba SzczodrzyƄski --- .../java/pl/szczodrzynski/edziennik/data/api/Errors.kt | 1 + .../edziennik/data/api/edziennik/librus/Librus.kt | 8 ++++++++ .../edziennik/data/api/edziennik/librus/data/LibrusApi.kt | 1 + .../edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt | 2 +- app/src/main/res/values/errors.xml | 1 + 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt index 93a7228f..0d1937c8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt @@ -148,6 +148,7 @@ const val ERROR_LIBRUS_MESSAGES_NOT_FOUND = 186 const val ERROR_LOGIN_LIBRUS_API_INVALID_REQUEST = 187 const val ERROR_LIBRUS_MESSAGES_ATTACHMENT_NOT_FOUND = 188 const val ERROR_LOGIN_LIBRUS_MESSAGES_TIMEOUT = 189 +const val ERROR_LIBRUS_API_TEACHER_FREE_DAYS_NOT_PUBLIC = 190 const val ERROR_LOGIN_MOBIDZIENNIK_WEB_INVALID_LOGIN = 201 const val ERROR_LOGIN_MOBIDZIENNIK_WEB_OLD_PASSWORD = 202 diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/Librus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/Librus.kt index 5b29b9fe..a1dfbdde 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/Librus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/Librus.kt @@ -29,6 +29,9 @@ import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull import pl.szczodrzynski.edziennik.data.db.full.EventFull import pl.szczodrzynski.edziennik.data.db.full.MessageFull +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.HOUR +import pl.szczodrzynski.edziennik.ext.WEEK import pl.szczodrzynski.edziennik.utils.Utils.d class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, val callback: EdziennikCallback) : EdziennikInterface { @@ -235,6 +238,11 @@ class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, va data.app.config.sync.tokenLibrusList + data.profileId data() } + ERROR_LIBRUS_API_TEACHER_FREE_DAYS_NOT_PUBLIC -> { + d(TAG, "Student not have access to Teacher Free Days resource") + data.setSyncNext(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS, 1 * WEEK, FeatureType.AGENDA) + data() + } else -> callback.onError(apiError) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt index 2b736a0f..d831e5f6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt @@ -69,6 +69,7 @@ open class LibrusApi(open val data: DataLibrus, open val lastSync: Long?) { "NoticeboardProblem" -> ERROR_LIBRUS_API_NOTICEBOARD_PROBLEM "DeviceRegistered" -> ERROR_LIBRUS_API_DEVICE_REGISTERED "Maintenance" -> ERROR_LIBRUS_API_MAINTENANCE + "TeacherFreeDaysIsNotActive" -> ERROR_LIBRUS_API_TEACHER_FREE_DAYS_NOT_PUBLIC else -> ERROR_LIBRUS_API_OTHER }.let { errorCode -> if (errorCode !in ignoreErrors) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt index 68053aeb..236d8cd3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt @@ -29,7 +29,7 @@ class LibrusApiTeacherFreeDays(override val data: DataLibrus, data.db.teacherAbsenceTypeDao().getAllNow(profileId).toSparseArray(data.teacherAbsenceTypes) { it.id } } - apiGet(TAG, "TeacherFreeDays") { json -> + apiGet(TAG, "Calendars/TeacherFreeDays") { json -> val teacherAbsences = json.getJsonArray("TeacherFreeDays")?.asJsonObjectList() teacherAbsences?.forEach { teacherAbsence -> diff --git a/app/src/main/res/values/errors.xml b/app/src/main/res/values/errors.xml index 557eaea8..03634d36 100644 --- a/app/src/main/res/values/errors.xml +++ b/app/src/main/res/values/errors.xml @@ -120,6 +120,7 @@ ERROR_LOGIN_LIBRUS_API_INVALID_REQUEST ERROR_LIBRUS_MESSAGES_ATTACHMENT_NOT_FOUND ERROR_LOGIN_LIBRUS_MESSAGES_TIMEOUT + ERROR_LIBRUS_API_TEACHER_FREE_DAYS_NOT_PUBLIC ERROR_LOGIN_MOBIDZIENNIK_WEB_INVALID_LOGIN ERROR_LOGIN_MOBIDZIENNIK_WEB_OLD_PASSWORD