From 169a900f014fe117d4d8210b41bdb671fa286ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Tue, 18 Feb 2020 18:58:51 +0100 Subject: [PATCH] [API] Implement passing last sync time to endpoints. --- .../edziennik/data/api/EndpointChooser.kt | 6 +- .../edudziennik/data/EdudziennikData.kt | 32 +++---- .../edudziennik/data/EdudziennikWeb.kt | 2 +- .../data/web/EdudziennikWebAnnouncements.kt | 10 ++- .../data/web/EdudziennikWebAttendance.kt | 8 +- .../data/web/EdudziennikWebEvents.kt | 10 ++- .../data/web/EdudziennikWebExams.kt | 6 +- .../data/web/EdudziennikWebGetAnnouncement.kt | 9 +- .../data/web/EdudziennikWebGrades.kt | 8 +- .../data/web/EdudziennikWebHomework.kt | 10 ++- .../data/web/EdudziennikWebLuckyNumber.kt | 10 ++- .../data/web/EdudziennikWebNotes.kt | 8 +- .../data/web/EdudziennikWebStart.kt | 6 +- .../data/web/EdudziennikWebTeachers.kt | 6 +- .../data/web/EdudziennikWebTimetable.kt | 12 +-- .../firstlogin/EdudziennikFirstLogin.kt | 2 +- .../edziennik/idziennik/data/IdziennikApi.kt | 2 +- .../edziennik/idziennik/data/IdziennikData.kt | 32 +++---- .../edziennik/idziennik/data/IdziennikWeb.kt | 2 +- .../data/api/IdziennikApiCurrentRegister.kt | 8 +- .../data/api/IdziennikApiMessagesInbox.kt | 14 ++- .../data/api/IdziennikApiMessagesSent.kt | 8 +- .../data/web/IdziennikWebAnnouncements.kt | 8 +- .../data/web/IdziennikWebAttendance.kt | 10 ++- .../idziennik/data/web/IdziennikWebExams.kt | 8 +- .../data/web/IdziennikWebGetAttachment.kt | 10 ++- .../data/web/IdziennikWebGetMessage.kt | 11 ++- .../data/web/IdziennikWebGetRecipientList.kt | 5 +- .../idziennik/data/web/IdziennikWebGrades.kt | 8 +- .../data/web/IdziennikWebHomework.kt | 8 +- .../idziennik/data/web/IdziennikWebNotices.kt | 10 ++- .../data/web/IdziennikWebProposedGrades.kt | 10 ++- .../data/web/IdziennikWebSendMessage.kt | 15 ++-- .../data/web/IdziennikWebTimetable.kt | 10 ++- .../firstlogin/IdziennikFirstLogin.kt | 2 +- .../api/edziennik/librus/data/LibrusApi.kt | 2 +- .../api/edziennik/librus/data/LibrusData.kt | 86 ++++++++++--------- .../edziennik/librus/data/LibrusMessages.kt | 2 +- .../edziennik/librus/data/LibrusSynergia.kt | 2 +- .../api/LibrusApiAnnouncementMarkAsRead.kt | 9 +- .../librus/data/api/LibrusApiAnnouncements.kt | 8 +- .../data/api/LibrusApiAttendanceTypes.kt | 6 +- .../librus/data/api/LibrusApiAttendances.kt | 6 +- .../api/LibrusApiBehaviourGradeCategories.kt | 6 +- .../api/LibrusApiBehaviourGradeComments.kt | 8 +- .../data/api/LibrusApiBehaviourGrades.kt | 10 ++- .../librus/data/api/LibrusApiClasses.kt | 6 +- .../librus/data/api/LibrusApiClassrooms.kt | 6 +- .../LibrusApiDescriptiveGradeCategories.kt | 6 +- .../data/api/LibrusApiDescriptiveGrades.kt | 10 ++- .../librus/data/api/LibrusApiEventTypes.kt | 6 +- .../librus/data/api/LibrusApiEvents.kt | 6 +- .../data/api/LibrusApiGradeCategories.kt | 8 +- .../librus/data/api/LibrusApiGradeComments.kt | 8 +- .../librus/data/api/LibrusApiGrades.kt | 10 ++- .../librus/data/api/LibrusApiHomework.kt | 8 +- .../librus/data/api/LibrusApiLessons.kt | 6 +- .../librus/data/api/LibrusApiLuckyNumber.kt | 6 +- .../edziennik/librus/data/api/LibrusApiMe.kt | 6 +- .../librus/data/api/LibrusApiNoticeTypes.kt | 6 +- .../librus/data/api/LibrusApiNotices.kt | 8 +- .../data/api/LibrusApiPointGradeCategories.kt | 6 +- .../librus/data/api/LibrusApiPointGrades.kt | 10 ++- .../librus/data/api/LibrusApiPtMeetings.kt | 6 +- .../librus/data/api/LibrusApiSchools.kt | 6 +- .../librus/data/api/LibrusApiSubjects.kt | 6 +- .../data/api/LibrusApiTeacherFreeDayTypes.kt | 6 +- .../data/api/LibrusApiTeacherFreeDays.kt | 6 +- .../librus/data/api/LibrusApiTemplate.kt | 3 +- .../data/api/LibrusApiTextGradeCategories.kt | 6 +- .../librus/data/api/LibrusApiTextGrades.kt | 10 ++- .../librus/data/api/LibrusApiTimetables.kt | 10 ++- .../librus/data/api/LibrusApiUnits.kt | 8 +- .../librus/data/api/LibrusApiUsers.kt | 6 +- .../data/api/LibrusApiVirtualClasses.kt | 6 +- .../messages/LibrusMessagesGetAttachment.kt | 9 +- .../data/messages/LibrusMessagesGetList.kt | 22 +++-- .../data/messages/LibrusMessagesGetMessage.kt | 13 ++- .../LibrusMessagesGetRecipientList.kt | 5 +- .../messages/LibrusMessagesSendMessage.kt | 15 ++-- .../data/messages/LibrusMessagesTemplate.kt | 4 +- .../data/synergia/LibrusSynergiaHomework.kt | 13 +-- .../data/synergia/LibrusSynergiaInfo.kt | 7 +- ...ibrusSynergiaMarkAllAnnouncementsAsRead.kt | 4 +- .../data/synergia/LibrusSynergiaTemplate.kt | 4 +- .../librus/firstlogin/LibrusFirstLogin.kt | 2 +- .../librus/login/LibrusLoginSynergia.kt | 2 +- .../mobidziennik/data/MobidziennikData.kt | 30 ++++--- .../mobidziennik/data/MobidziennikWeb.kt | 2 +- .../mobidziennik/data/api/MobidziennikApi.kt | 6 +- .../data/api2/MobidziennikApi2Main.kt | 6 +- .../data/web/MobidziennikWebAccountEmail.kt | 6 +- .../data/web/MobidziennikWebCalendar.kt | 6 +- .../data/web/MobidziennikWebGetAttachment.kt | 9 +- .../data/web/MobidziennikWebGetMessage.kt | 8 +- .../web/MobidziennikWebGetRecipientList.kt | 5 +- .../data/web/MobidziennikWebGrades.kt | 6 +- .../data/web/MobidziennikWebMessagesAll.kt | 10 ++- .../data/web/MobidziennikWebMessagesInbox.kt | 8 +- .../data/web/MobidziennikWebNotices.kt | 6 +- .../data/web/MobidziennikWebSendMessage.kt | 15 ++-- .../firstlogin/MobidziennikFirstLogin.kt | 2 +- .../edziennik/template/data/TemplateApi.kt | 6 +- .../edziennik/template/data/TemplateData.kt | 16 ++-- .../edziennik/template/data/TemplateWeb.kt | 6 +- .../template/data/api/TemplateApiSample.kt | 6 +- .../template/data/web/TemplateWebSample.kt | 6 +- .../template/data/web/TemplateWebSample2.kt | 6 +- .../template/firstlogin/TemplateFirstLogin.kt | 4 +- .../api/edziennik/vulcan/data/VulcanApi.kt | 2 +- .../api/edziennik/vulcan/data/VulcanData.kt | 32 +++---- .../vulcan/data/api/VulcanApiAttendance.kt | 11 ++- .../vulcan/data/api/VulcanApiDictionaries.kt | 15 ++-- .../vulcan/data/api/VulcanApiEvents.kt | 12 ++- .../vulcan/data/api/VulcanApiGrades.kt | 11 ++- .../data/api/VulcanApiMessagesChangeStatus.kt | 9 +- .../vulcan/data/api/VulcanApiMessagesInbox.kt | 9 +- .../vulcan/data/api/VulcanApiMessagesSent.kt | 7 +- .../vulcan/data/api/VulcanApiNotices.kt | 11 ++- .../data/api/VulcanApiProposedGrades.kt | 11 ++- .../vulcan/data/api/VulcanApiSendMessage.kt | 15 ++-- .../vulcan/data/api/VulcanApiTemplate.kt | 5 +- .../vulcan/data/api/VulcanApiTimetable.kt | 13 ++- .../data/api/VulcanApiUpdateSemester.kt | 9 +- .../vulcan/firstlogin/VulcanFirstLogin.kt | 2 +- .../edziennik/vulcan/login/VulcanLoginApi.kt | 2 +- .../edziennik/data/api/models/Data.kt | 4 +- 127 files changed, 656 insertions(+), 471 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EndpointChooser.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EndpointChooser.kt index 24872b27..7a95872e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EndpointChooser.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EndpointChooser.kt @@ -53,7 +53,7 @@ fun Data.prepare(loginMethods: List, features: List, featu if (timer.nextSync == SYNC_ALWAYS || (viewId != null && timer.viewId == viewId) || (timer.nextSync != SYNC_NEVER && timer.nextSync < timestamp)) { - data.targetEndpointIds.add(endpoint.first) + data.targetEndpointIds[endpoint.first] = timer.lastSync requiredLoginMethods.add(endpoint.second) } } @@ -76,8 +76,8 @@ fun Data.prepare(loginMethods: List, features: List, featu data.targetLoginMethodIds = data.targetLoginMethodIds.toHashSet().toMutableList() data.targetLoginMethodIds.sort() - data.targetEndpointIds = data.targetEndpointIds.toHashSet().toMutableList() - data.targetEndpointIds.sort() + //data.targetEndpointIds = data.targetEndpointIds.toHashSet().toMutableList() + //data.targetEndpointIds.sort() progressCount = targetLoginMethodIds.size + targetEndpointIds.size progressStep = if (progressCount <= 0) 0f else 100f / progressCount.toFloat() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikData.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikData.kt index fe45c9ef..03d9fad2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikData.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/EdudziennikData.kt @@ -27,60 +27,62 @@ class EdudziennikData(val data: DataEdudziennik, val onSuccess: () -> Unit) { onSuccess() return } - useEndpoint(data.targetEndpointIds.removeAt(0)) { + useEndpoint(data.targetEndpointIds.firstKey()) { endpointId -> + data.targetEndpointIds.remove(endpointId) data.progress(data.progressStep) nextEndpoint(onSuccess) } } - private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) { - Utils.d(TAG, "Using endpoint $endpointId") + private fun useEndpoint(endpointId: Int, onSuccess: (endpointId: Int) -> Unit) { + val lastSync = data.targetEndpointIds[endpointId] + Utils.d(TAG, "Using endpoint $endpointId. Last sync time = $lastSync") when (endpointId) { ENDPOINT_EDUDZIENNIK_WEB_START -> { data.startProgress(R.string.edziennik_progress_endpoint_data) - EdudziennikWebStart(data, onSuccess) + EdudziennikWebStart(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_TEACHERS -> { data.startProgress(R.string.edziennik_progress_endpoint_teachers) - EdudziennikWebTeachers(data, onSuccess) + EdudziennikWebTeachers(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_grades) - EdudziennikWebGrades(data, onSuccess) + EdudziennikWebGrades(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_TIMETABLE -> { data.startProgress(R.string.edziennik_progress_endpoint_timetable) - EdudziennikWebTimetable(data, onSuccess) + EdudziennikWebTimetable(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_EXAMS -> { data.startProgress(R.string.edziennik_progress_endpoint_exams) - EdudziennikWebExams(data, onSuccess) + EdudziennikWebExams(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_ATTENDANCE -> { data.startProgress(R.string.edziennik_progress_endpoint_attendance) - EdudziennikWebAttendance(data, onSuccess) + EdudziennikWebAttendance(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_ANNOUNCEMENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_announcements) - EdudziennikWebAnnouncements(data, onSuccess) + EdudziennikWebAnnouncements(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_HOMEWORK -> { data.startProgress(R.string.edziennik_progress_endpoint_homework) - EdudziennikWebHomework(data, onSuccess) + EdudziennikWebHomework(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_EVENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_events) - EdudziennikWebEvents(data, onSuccess) + EdudziennikWebEvents(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_NOTES -> { data.startProgress(R.string.edziennik_progress_endpoint_notices) - EdudziennikWebNotes(data, onSuccess) + EdudziennikWebNotes(data, lastSync, onSuccess) } ENDPOINT_EDUDZIENNIK_WEB_LUCKY_NUMBER -> { data.startProgress(R.string.edziennik_progress_endpoint_lucky_number) - EdudziennikWebLuckyNumber(data, onSuccess) + EdudziennikWebLuckyNumber(data, lastSync, onSuccess) } - else -> onSuccess() + else -> onSuccess(endpointId) } } } 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 58bf4b44..e893dbfc 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 @@ -14,7 +14,7 @@ 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) { +open class EdudziennikWeb(open val data: DataEdudziennik, open val lastSync: Long?) { companion object { private const val TAG = "EdudziennikWeb" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt index 9a0b271f..11f048b5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt @@ -11,13 +11,15 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_ANNOUNCEMENTS import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb import pl.szczodrzynski.edziennik.data.db.entity.Announcement -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS 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.models.Date class EdudziennikWebAnnouncements(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { const val TAG = "EdudziennikWebAnnouncements" } @@ -66,7 +68,7 @@ class EdudziennikWebAnnouncements(override val data: DataEdudziennik, } data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_ANNOUNCEMENTS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_ANNOUNCEMENTS) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_ANNOUNCEMENTS) } } 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 ec695f26..48836e6e 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 @@ -20,7 +20,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import java.util.* class EdudziennikWebAttendance(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { private const val TAG = "EdudziennikWebAttendance" } @@ -90,7 +92,7 @@ class EdudziennikWebAttendance(override val data: DataEdudziennik, } data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_ATTENDANCE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_ATTENDANCE) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_ATTENDANCE) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt index 0db2f816..cf846fce 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt @@ -11,14 +11,16 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_EVENTS 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.Event 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.models.Date class EdudziennikWebEvents(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { const val TAG = "EdudziennikWebEvents" } @@ -64,7 +66,7 @@ class EdudziennikWebEvents(override val data: DataEdudziennik, data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_CLASS_EVENT)) data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_EVENTS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_EVENTS) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_EVENTS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt index 3ce3c2aa..8eb7d04e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt @@ -20,7 +20,9 @@ import pl.szczodrzynski.edziennik.get import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebExams(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { const val TAG = "EdudziennikWebExams" } @@ -84,7 +86,7 @@ class EdudziennikWebExams(override val data: DataEdudziennik, ))) data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_EXAMS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_EXAMS) } }} } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt index 300c92b1..5d915e64 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt @@ -12,11 +12,10 @@ import pl.szczodrzynski.edziennik.data.api.events.AnnouncementGetEvent import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull import pl.szczodrzynski.edziennik.get -class EdudziennikWebGetAnnouncement( - override val data: DataEdudziennik, - private val announcement: AnnouncementFull, - val onSuccess: () -> Unit -) : EdudziennikWeb(data) { +class EdudziennikWebGetAnnouncement(override val data: DataEdudziennik, + private val announcement: AnnouncementFull, + val onSuccess: () -> Unit +) : EdudziennikWeb(data, null) { companion object { const val TAG = "EdudziennikWebGetAnnouncement" } 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 63404c58..6e0caa2d 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 @@ -22,7 +22,9 @@ import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebGrades(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { private const val TAG = "EdudziennikWebGrades" } @@ -218,8 +220,8 @@ class EdudziennikWebGrades(override val data: DataEdudziennik, getGrades() } else { data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_GRADES) } } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt index 84572bbe..9d9a336a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt @@ -12,14 +12,16 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_HOMEWORK 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.Event 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.models.Date class EdudziennikWebHomework(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { const val TAG = "EdudziennikWebHomework" } @@ -78,7 +80,7 @@ class EdudziennikWebHomework(override val data: DataEdudziennik, data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_HOMEWORK)) data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_HOMEWORK, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_HOMEWORK) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_HOMEWORK) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebLuckyNumber.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebLuckyNumber.kt index 6b12c96c..70c6849a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebLuckyNumber.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebLuckyNumber.kt @@ -7,13 +7,15 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_LUCKY_NUMBER 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.LuckyNumber import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebLuckyNumber(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { private const val TAG = "EdudziennikWebLuckyNumber" } @@ -39,7 +41,7 @@ class EdudziennikWebLuckyNumber(override val data: DataEdudziennik, } data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_LUCKY_NUMBER, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_LUCKY_NUMBER) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_LUCKY_NUMBER) } } 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 594fbc63..a111ef79 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 @@ -17,7 +17,9 @@ import pl.szczodrzynski.edziennik.get import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebNotes(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { const val TAG = "EdudziennikWebNotes" } @@ -59,7 +61,7 @@ class EdudziennikWebNotes(override val data: DataEdudziennik, } data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_NOTES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_NOTES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_NOTES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt index f3a4147f..66cb7a59 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt @@ -18,7 +18,9 @@ import pl.szczodrzynski.edziennik.firstLettersName import pl.szczodrzynski.edziennik.get class EdudziennikWebStart(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { private const val TAG = "EdudziennikWebStart" } @@ -29,7 +31,7 @@ class EdudziennikWebStart(override val data: DataEdudziennik, getSubjects(text) data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_START, MONTH) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_START) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt index 534e91cf..d2f3ba15 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.Edudzienni import pl.szczodrzynski.edziennik.get class EdudziennikWebTeachers(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { private const val TAG = "EdudziennikWebTeachers" } @@ -26,7 +28,7 @@ class EdudziennikWebTeachers(override val data: DataEdudziennik, } data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_TEACHERS, MONTH) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_TEACHERS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt index 79315852..3a31e208 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt @@ -11,10 +11,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_TIMETABLE 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.Lesson import pl.szczodrzynski.edziennik.data.db.entity.LessonRange import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.data.db.entity.Lesson +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.get import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.singleOrNull @@ -24,7 +24,9 @@ import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week class EdudziennikWebTimetable(override val data: DataEdudziennik, - val onSuccess: () -> Unit) : EdudziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : EdudziennikWeb(data, lastSync) { companion object { private const val TAG = "EdudziennikWebTimetable" } @@ -142,7 +144,7 @@ class EdudziennikWebTimetable(override val data: DataEdudziennik, data.toRemove.add(DataRemoveModel.Timetable.between(weekStart, weekEnd)) data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_TIMETABLE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_EDUDZIENNIK_WEB_TIMETABLE) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_EDUDZIENNIK_WEB_TIMETABLE) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt index 3cdc491f..e47c7842 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt @@ -23,7 +23,7 @@ class EdudziennikFirstLogin(val data: DataEdudziennik, val onSuccess: () -> Unit private const val TAG = "EdudziennikFirstLogin" } - private val web = EdudziennikWeb(data) + private val web = EdudziennikWeb(data, null) private val profileList = mutableListOf() init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikApi.kt index a4370d36..8da75603 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikApi.kt @@ -18,7 +18,7 @@ import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.utils.Utils import java.net.HttpURLConnection -open class IdziennikApi(open val data: DataIdziennik) { +open class IdziennikApi(open val data: DataIdziennik, open val lastSync: Long?) { companion object { const val TAG = "IdziennikApi" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikData.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikData.kt index 7b285db9..f407713f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikData.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikData.kt @@ -30,60 +30,62 @@ class IdziennikData(val data: DataIdziennik, val onSuccess: () -> Unit) { onSuccess() return } - useEndpoint(data.targetEndpointIds.removeAt(0)) { + useEndpoint(data.targetEndpointIds.firstKey()) { endpointId -> + data.targetEndpointIds.remove(endpointId) data.progress(data.progressStep) nextEndpoint(onSuccess) } } - private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) { - Utils.d(TAG, "Using endpoint $endpointId") + private fun useEndpoint(endpointId: Int, onSuccess: (endpointId: Int) -> Unit) { + val lastSync = data.targetEndpointIds[endpointId] + Utils.d(TAG, "Using endpoint $endpointId. Last sync time = $lastSync") when (endpointId) { ENDPOINT_IDZIENNIK_WEB_TIMETABLE -> { data.startProgress(R.string.edziennik_progress_endpoint_timetable) - IdziennikWebTimetable(data, onSuccess) + IdziennikWebTimetable(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_WEB_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_grades) - IdziennikWebGrades(data, onSuccess) + IdziennikWebGrades(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_proposed_grades) - IdziennikWebProposedGrades(data, onSuccess) + IdziennikWebProposedGrades(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_WEB_EXAMS -> { data.startProgress(R.string.edziennik_progress_endpoint_exams) - IdziennikWebExams(data, onSuccess) + IdziennikWebExams(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_WEB_HOMEWORK -> { data.startProgress(R.string.edziennik_progress_endpoint_homework) - IdziennikWebHomework(data, onSuccess) + IdziennikWebHomework(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_WEB_NOTICES -> { data.startProgress(R.string.edziennik_progress_endpoint_notices) - IdziennikWebNotices(data, onSuccess) + IdziennikWebNotices(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_WEB_ANNOUNCEMENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_announcements) - IdziennikWebAnnouncements(data, onSuccess) + IdziennikWebAnnouncements(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_WEB_ATTENDANCE -> { data.startProgress(R.string.edziennik_progress_endpoint_attendance) - IdziennikWebAttendance(data, onSuccess) + IdziennikWebAttendance(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_API_CURRENT_REGISTER -> { data.startProgress(R.string.edziennik_progress_endpoint_lucky_number) - IdziennikApiCurrentRegister(data, onSuccess) + IdziennikApiCurrentRegister(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_API_MESSAGES_INBOX -> { data.startProgress(R.string.edziennik_progress_endpoint_messages_inbox) - IdziennikApiMessagesInbox(data, onSuccess) + IdziennikApiMessagesInbox(data, lastSync, onSuccess) } ENDPOINT_IDZIENNIK_API_MESSAGES_SENT -> { data.startProgress(R.string.edziennik_progress_endpoint_messages_outbox) - IdziennikApiMessagesSent(data, onSuccess) + IdziennikApiMessagesSent(data, lastSync, onSuccess) } - else -> onSuccess() + else -> onSuccess(endpointId) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikWeb.kt index fbf068db..caa0e06e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/IdziennikWeb.kt @@ -19,7 +19,7 @@ import java.io.File import java.net.HttpURLConnection.HTTP_INTERNAL_ERROR import java.net.HttpURLConnection.HTTP_UNAUTHORIZED -open class IdziennikWeb(open val data: DataIdziennik) { +open class IdziennikWeb(open val data: DataIdziennik, open val lastSync: Long?) { companion object { const val TAG = "IdziennikWeb" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiCurrentRegister.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiCurrentRegister.kt index d21db588..e23290de 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiCurrentRegister.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiCurrentRegister.kt @@ -19,7 +19,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time class IdziennikApiCurrentRegister(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikApi(data, lastSync) { companion object { private const val TAG = "IdziennikApiCurrentRegister" } @@ -27,7 +29,7 @@ class IdziennikApiCurrentRegister(override val data: DataIdziennik, init { apiGet(TAG, IDZIENNIK_API_CURRENT_REGISTER) { json -> if (json !is JsonObject) { - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_API_CURRENT_REGISTER) return@apiGet } @@ -85,7 +87,7 @@ class IdziennikApiCurrentRegister(override val data: DataIdziennik, data.setSyncNext(ENDPOINT_IDZIENNIK_API_CURRENT_REGISTER, syncAt = nextSync) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_API_CURRENT_REGISTER) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesInbox.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesInbox.kt index f40176c0..c8d756fe 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesInbox.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesInbox.kt @@ -10,20 +10,18 @@ import pl.szczodrzynski.edziennik.data.api.IDZIENNIK_API_MESSAGES_INBOX import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.DataIdziennik import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNIK_API_MESSAGES_INBOX import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikApi -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.data.db.entity.Message +import pl.szczodrzynski.edziennik.data.db.entity.* import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_DELETED import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_RECEIVED -import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient -import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.getBoolean import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.utils.Utils.crc32 import pl.szczodrzynski.edziennik.utils.models.Date class IdziennikApiMessagesInbox(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikApi(data, lastSync) { companion object { private const val TAG = "IdziennikApiMessagesInbox" } @@ -31,7 +29,7 @@ class IdziennikApiMessagesInbox(override val data: DataIdziennik, init { apiGet(TAG, IDZIENNIK_API_MESSAGES_INBOX) { json -> if (json !is JsonArray) { - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_API_MESSAGES_INBOX) return@apiGet } @@ -96,7 +94,7 @@ class IdziennikApiMessagesInbox(override val data: DataIdziennik, } data.setSyncNext(ENDPOINT_IDZIENNIK_API_MESSAGES_INBOX, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_API_MESSAGES_INBOX) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesSent.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesSent.kt index c84cce2f..b0b17689 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesSent.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/api/IdziennikApiMessagesSent.kt @@ -20,7 +20,9 @@ import pl.szczodrzynski.edziennik.utils.Utils.crc32 import pl.szczodrzynski.edziennik.utils.models.Date class IdziennikApiMessagesSent(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikApi(data, lastSync) { companion object { private const val TAG = "IdziennikApiMessagesSent" } @@ -28,7 +30,7 @@ class IdziennikApiMessagesSent(override val data: DataIdziennik, init { apiGet(TAG, IDZIENNIK_API_MESSAGES_SENT) { json -> if (json !is JsonArray) { - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_API_MESSAGES_SENT) return@apiGet } @@ -79,7 +81,7 @@ class IdziennikApiMessagesSent(override val data: DataIdziennik, } data.setSyncNext(ENDPOINT_IDZIENNIK_API_MESSAGES_SENT, DAY, DRAWER_ITEM_MESSAGES) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_API_MESSAGES_SENT) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAnnouncements.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAnnouncements.kt index 23096ae6..2aa0fc1f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAnnouncements.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAnnouncements.kt @@ -13,13 +13,15 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNI import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.Announcement -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.getJsonObject import pl.szczodrzynski.edziennik.utils.models.Date class IdziennikWebAnnouncements(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebAnnouncements" } @@ -69,7 +71,7 @@ class IdziennikWebAnnouncements(override val data: DataIdziennik, } data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_ANNOUNCEMENTS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_ANNOUNCEMENTS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAttendance.kt index b03df372..aa0a9998 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebAttendance.kt @@ -4,23 +4,25 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.web +import pl.szczodrzynski.edziennik.crc16 import pl.szczodrzynski.edziennik.data.api.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA import pl.szczodrzynski.edziennik.data.api.IDZIENNIK_WEB_ATTENDANCE import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.DataIdziennik import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_ATTENDANCE import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.crc16 -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.Attendance.* import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.getJsonObject import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time class IdziennikWebAttendance(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebAttendance" } @@ -137,7 +139,7 @@ class IdziennikWebAttendance(override val data: DataIdziennik, getAttendance() } else { data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_ATTENDANCE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_ATTENDANCE) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebExams.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebExams.kt index 6260c446..0aaf77c5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebExams.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebExams.kt @@ -13,13 +13,15 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNI import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class IdziennikWebExams(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebExams" } @@ -116,7 +118,7 @@ class IdziennikWebExams(override val data: DataIdziennik, data.toRemove.add(DataRemoveModel.Events.futureExceptType(Event.TYPE_HOMEWORK)) data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_EXAMS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_EXAMS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetAttachment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetAttachment.kt index 31478cdd..562f527c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetAttachment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetAttachment.kt @@ -14,10 +14,12 @@ import pl.szczodrzynski.edziennik.get import pl.szczodrzynski.edziennik.utils.Utils import java.io.File -class IdziennikWebGetAttachment( - override val data: DataIdziennik, val message: Message, val attachmentId: Long, - val attachmentName: String, val onSuccess: () -> Unit -) : IdziennikWeb(data) { +class IdziennikWebGetAttachment(override val data: DataIdziennik, + val message: Message, + val attachmentId: Long, + val attachmentName: String, + val onSuccess: () -> Unit +) : IdziennikWeb(data, null) { companion object { const val TAG = "IdziennikWebGetAttachment" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetMessage.kt index 08266051..dfe9fba3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetMessage.kt @@ -12,16 +12,15 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.events.MessageGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_RECEIVED import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_SENT +import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.full.MessageFull import pl.szczodrzynski.edziennik.data.db.full.MessageRecipientFull -import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.utils.models.Date -class IdziennikWebGetMessage( - override val data: DataIdziennik, - private val message: MessageFull, - val onSuccess: () -> Unit -) : IdziennikWeb(data) { +class IdziennikWebGetMessage(override val data: DataIdziennik, + private val message: MessageFull, + val onSuccess: () -> Unit +) : IdziennikWeb(data, null) { companion object { const val TAG = "IdziennikWebGetMessage" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetRecipientList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetRecipientList.kt index 46f8d884..a14efc24 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetRecipientList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGetRecipientList.kt @@ -16,8 +16,9 @@ import pl.szczodrzynski.edziennik.data.api.events.RecipientListGetEvent import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.Teacher -class IdziennikWebGetRecipientList( - override val data: DataIdziennik, val onSuccess: () -> Unit) : IdziennikWeb(data) { +class IdziennikWebGetRecipientList(override val data: DataIdziennik, + val onSuccess: () -> Unit +) : IdziennikWeb(data, null) { companion object { private const val TAG = "IdziennikWebGetRecipientList" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGrades.kt index 7d20bca3..67838070 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebGrades.kt @@ -19,7 +19,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class IdziennikWebGrades(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebGrades" } @@ -163,7 +165,7 @@ class IdziennikWebGrades(override val data: DataIdziennik, DataRemoveModel.Grades.semesterWithType(profile.currentSemester, it) }) data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_GRADES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_IDZIENNIK_WEB_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebHomework.kt index 86e55691..345e7da4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebHomework.kt @@ -13,13 +13,15 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNI import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class IdziennikWebHomework(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebHomework" } @@ -92,7 +94,7 @@ class IdziennikWebHomework(override val data: DataIdziennik, data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_HOMEWORK)) data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_HOMEWORK, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_HOMEWORK) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebNotices.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebNotices.kt index 853818f8..dcc560d5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebNotices.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebNotices.kt @@ -4,22 +4,24 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.web +import pl.szczodrzynski.edziennik.crc16 import pl.szczodrzynski.edziennik.data.api.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA import pl.szczodrzynski.edziennik.data.api.IDZIENNIK_WEB_NOTICES import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.DataIdziennik import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_NOTICES import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.crc16 -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.Notice.* +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.getJsonObject import pl.szczodrzynski.edziennik.utils.models.Date class IdziennikWebNotices(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebNotices" } @@ -69,7 +71,7 @@ class IdziennikWebNotices(override val data: DataIdziennik, } data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_NOTICES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_NOTICES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebProposedGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebProposedGrades.kt index e5935365..3c1c3db0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebProposedGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebProposedGrades.kt @@ -12,18 +12,20 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNI import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError 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.TYPE_SEMESTER1_PROPOSED import pl.szczodrzynski.edziennik.data.db.entity.Grade.TYPE_YEAR_PROPOSED import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.getJsonArray import pl.szczodrzynski.edziennik.getJsonObject import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.utils.Utils.getWordGradeValue class IdziennikWebProposedGrades(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebProposedGrades" } @@ -111,7 +113,7 @@ class IdziennikWebProposedGrades(override val data: DataIdziennik, DataRemoveModel.Grades.semesterWithType(profile.currentSemester, it) }) data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebSendMessage.kt index 8c99d224..9a997a32 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebSendMessage.kt @@ -18,13 +18,12 @@ import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher import java.util.* -class IdziennikWebSendMessage( - override val data: DataIdziennik, - val recipients: List, - val subject: String, - val text: String, - val onSuccess: () -> Unit -) : IdziennikWeb(data) { +class IdziennikWebSendMessage(override val data: DataIdziennik, + val recipients: List, + val subject: String, + val text: String, + val onSuccess: () -> Unit +) : IdziennikWeb(data, null) { companion object { private const val TAG = "IdziennikWebSendMessage" } @@ -57,7 +56,7 @@ class IdziennikWebSendMessage( return@webApiGet } - IdziennikApiMessagesSent(data) { + IdziennikApiMessagesSent(data, null) { val message = data.messageIgnoreList.firstOrNull { it.type == Message.TYPE_SENT && it.subject == subject } val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == message?.id } val event = MessageSentEvent(data.profileId, message, metadata?.addedDate) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebTimetable.kt index 8e849f14..066346cd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/data/web/IdziennikWebTimetable.kt @@ -13,17 +13,19 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.ENDPOINT_IDZIENNI import pl.szczodrzynski.edziennik.data.api.edziennik.idziennik.data.IdziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.LessonRange import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.data.db.entity.Lesson +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week class IdziennikWebTimetable(override val data: DataIdziennik, - val onSuccess: () -> Unit) : IdziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : IdziennikWeb(data, lastSync) { companion object { private const val TAG = "IdziennikWebTimetable" } @@ -187,7 +189,7 @@ class IdziennikWebTimetable(override val data: DataIdziennik, data.toRemove.add(DataRemoveModel.Timetable.between(weekStart, weekEnd)) data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_TIMETABLE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_IDZIENNIK_WEB_TIMETABLE) } }} } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/firstlogin/IdziennikFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/firstlogin/IdziennikFirstLogin.kt index 77d4b4b2..892c12c8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/firstlogin/IdziennikFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/idziennik/firstlogin/IdziennikFirstLogin.kt @@ -25,7 +25,7 @@ class IdziennikFirstLogin(val data: DataIdziennik, val onSuccess: () -> Unit) { private const val TAG = "IdziennikFirstLogin" } - private val web = IdziennikWeb(data) + private val web = IdziennikWeb(data, null) private val profileList = mutableListOf() init { 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 ed9c98d5..7a536c81 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 @@ -15,7 +15,7 @@ import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection.* -open class LibrusApi(open val data: DataLibrus) { +open class LibrusApi(open val data: DataLibrus, open val lastSync: Long?) { companion object { private const val TAG = "LibrusApi" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusData.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusData.kt index 542d0fdd..855f6162 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusData.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusData.kt @@ -31,158 +31,160 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) { onSuccess() return } - useEndpoint(data.targetEndpointIds.removeAt(0)) { + useEndpoint(data.targetEndpointIds.firstKey()) { endpointId -> + data.targetEndpointIds.remove(endpointId) data.progress(data.progressStep) nextEndpoint(onSuccess) } } - private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) { - Utils.d(TAG, "Using endpoint $endpointId") + private fun useEndpoint(endpointId: Int, onSuccess: (endpointId: Int) -> Unit) { + val lastSync = data.targetEndpointIds[endpointId] + Utils.d(TAG, "Using endpoint $endpointId. Last sync time = $lastSync") when (endpointId) { /** * API */ ENDPOINT_LIBRUS_API_ME -> { data.startProgress(R.string.edziennik_progress_endpoint_student_info) - LibrusApiMe(data, onSuccess) + LibrusApiMe(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_SCHOOLS -> { data.startProgress(R.string.edziennik_progress_endpoint_school_info) - LibrusApiSchools(data, onSuccess) + LibrusApiSchools(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_CLASSES -> { data.startProgress(R.string.edziennik_progress_endpoint_classes) - LibrusApiClasses(data, onSuccess) + LibrusApiClasses(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES -> { data.startProgress(R.string.edziennik_progress_endpoint_teams) - LibrusApiVirtualClasses(data, onSuccess) + LibrusApiVirtualClasses(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_UNITS -> { data.startProgress(R.string.edziennik_progress_endpoint_units) - LibrusApiUnits(data, onSuccess) + LibrusApiUnits(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_USERS -> { data.startProgress(R.string.edziennik_progress_endpoint_teachers) - LibrusApiUsers(data, onSuccess) + LibrusApiUsers(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_SUBJECTS -> { data.startProgress(R.string.edziennik_progress_endpoint_subjects) - LibrusApiSubjects(data, onSuccess) + LibrusApiSubjects(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_CLASSROOMS -> { data.startProgress(R.string.edziennik_progress_endpoint_classrooms) - LibrusApiClassrooms(data, onSuccess) + LibrusApiClassrooms(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_LESSONS -> { data.startProgress(R.string.edziennik_progress_endpoint_lessons) - LibrusApiLessons(data, onSuccess) + LibrusApiLessons(data, lastSync, onSuccess) } // TODO push config ENDPOINT_LIBRUS_API_TIMETABLES -> { data.startProgress(R.string.edziennik_progress_endpoint_timetable) - LibrusApiTimetables(data, onSuccess) + LibrusApiTimetables(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES -> { data.startProgress(R.string.edziennik_progress_endpoint_grade_categories) - LibrusApiGradeCategories(data, onSuccess) + LibrusApiGradeCategories(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES -> { data.startProgress(R.string.edziennik_progress_endpoint_grade_categories) - LibrusApiBehaviourGradeCategories(data, onSuccess) + LibrusApiBehaviourGradeCategories(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES -> { data.startProgress(R.string.edziennik_progress_endpoint_grade_categories) - LibrusApiDescriptiveGradeCategories(data, onSuccess) + LibrusApiDescriptiveGradeCategories(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_TEXT_GRADE_CATEGORIES -> { data.startProgress(R.string.edziennik_progress_endpoint_grade_categories) - LibrusApiTextGradeCategories(data, onSuccess) + LibrusApiTextGradeCategories(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_POINT_GRADE_CATEGORIES -> { data.startProgress(R.string.edziennik_progress_endpoint_grade_categories) - LibrusApiPointGradeCategories(data, onSuccess) + LibrusApiPointGradeCategories(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_grade_comments) - LibrusApiGradeComments(data, onSuccess) + LibrusApiGradeComments(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_grade_comments) - LibrusApiBehaviourGradeComments(data, onSuccess) + LibrusApiBehaviourGradeComments(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_NORMAL_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_grades) - LibrusApiGrades(data, onSuccess) + LibrusApiGrades(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_behaviour_grades) - LibrusApiBehaviourGrades(data, onSuccess) + LibrusApiBehaviourGrades(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_descriptive_grades) - LibrusApiDescriptiveGrades(data, onSuccess) + LibrusApiDescriptiveGrades(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_TEXT_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_descriptive_grades) - LibrusApiTextGrades(data, onSuccess) + LibrusApiTextGrades(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_POINT_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_point_grades) - LibrusApiPointGrades(data, onSuccess) + LibrusApiPointGrades(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_EVENT_TYPES -> { data.startProgress(R.string.edziennik_progress_endpoint_event_types) - LibrusApiEventTypes(data, onSuccess) + LibrusApiEventTypes(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_EVENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_events) - LibrusApiEvents(data, onSuccess) + LibrusApiEvents(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_HOMEWORK -> { data.startProgress(R.string.edziennik_progress_endpoint_homework) - LibrusApiHomework(data, onSuccess) + LibrusApiHomework(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_LUCKY_NUMBER -> { data.startProgress(R.string.edziennik_progress_endpoint_lucky_number) - LibrusApiLuckyNumber(data, onSuccess) + LibrusApiLuckyNumber(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_NOTICE_TYPES -> { data.startProgress(R.string.edziennik_progress_endpoint_notice_types) - LibrusApiNoticeTypes(data, onSuccess) + LibrusApiNoticeTypes(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_NOTICES -> { data.startProgress(R.string.edziennik_progress_endpoint_notices) - LibrusApiNotices(data, onSuccess) + LibrusApiNotices(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES -> { data.startProgress(R.string.edziennik_progress_endpoint_attendance_types) - LibrusApiAttendanceTypes(data, onSuccess) + LibrusApiAttendanceTypes(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_ATTENDANCES -> { data.startProgress(R.string.edziennik_progress_endpoint_attendance) - LibrusApiAttendances(data, onSuccess) + LibrusApiAttendances(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_ANNOUNCEMENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_announcements) - LibrusApiAnnouncements(data, onSuccess) + LibrusApiAnnouncements(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_PT_MEETINGS -> { data.startProgress(R.string.edziennik_progress_endpoint_pt_meetings) - LibrusApiPtMeetings(data, onSuccess) + LibrusApiPtMeetings(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES -> { data.startProgress(R.string.edziennik_progress_endpoint_teacher_free_day_types) - LibrusApiTeacherFreeDayTypes(data, onSuccess) + LibrusApiTeacherFreeDayTypes(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS -> { data.startProgress(R.string.edziennik_progress_endpoint_teacher_free_days) - LibrusApiTeacherFreeDays(data, onSuccess) + LibrusApiTeacherFreeDays(data, lastSync, onSuccess) } /** @@ -190,11 +192,11 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) { */ ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK -> { data.startProgress(R.string.edziennik_progress_endpoint_homework) - LibrusSynergiaHomework(data, onSuccess) + LibrusSynergiaHomework(data, lastSync, onSuccess) } ENDPOINT_LIBRUS_SYNERGIA_INFO -> { data.startProgress(R.string.edziennik_progress_endpoint_student_info) - LibrusSynergiaInfo(data, onSuccess) + LibrusSynergiaInfo(data, lastSync, onSuccess) } /** @@ -202,14 +204,14 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) { */ ENDPOINT_LIBRUS_MESSAGES_RECEIVED -> { data.startProgress(R.string.edziennik_progress_endpoint_messages_inbox) - LibrusMessagesGetList(data, type = Message.TYPE_RECEIVED, onSuccess = onSuccess) + LibrusMessagesGetList(data, type = Message.TYPE_RECEIVED, lastSync = lastSync, onSuccess = onSuccess) } ENDPOINT_LIBRUS_MESSAGES_SENT -> { data.startProgress(R.string.edziennik_progress_endpoint_messages_outbox) - LibrusMessagesGetList(data, type = Message.TYPE_SENT, onSuccess = onSuccess) + LibrusMessagesGetList(data, type = Message.TYPE_SENT, lastSync = lastSync, onSuccess = onSuccess) } - else -> onSuccess() + else -> onSuccess(endpointId) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusMessages.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusMessages.kt index 01813fa3..febdab75 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusMessages.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusMessages.kt @@ -30,7 +30,7 @@ import javax.xml.transform.TransformerFactory import javax.xml.transform.dom.DOMSource import javax.xml.transform.stream.StreamResult -open class LibrusMessages(open val data: DataLibrus) { +open class LibrusMessages(open val data: DataLibrus, open val lastSync: Long?) { companion object { private const val TAG = "LibrusMessages" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusSynergia.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusSynergia.kt index d748cb13..e201ca8f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusSynergia.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusSynergia.kt @@ -12,7 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.utils.Utils.d -open class LibrusSynergia(open val data: DataLibrus) { +open class LibrusSynergia(open val data: DataLibrus, open val lastSync: Long?) { companion object { private const val TAG = "LibrusSynergia" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncementMarkAsRead.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncementMarkAsRead.kt index de265741..d40c1a9a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncementMarkAsRead.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncementMarkAsRead.kt @@ -14,11 +14,10 @@ import pl.szczodrzynski.edziennik.data.api.events.AnnouncementGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull -class LibrusApiAnnouncementMarkAsRead( - override val data: DataLibrus, - private val announcement: AnnouncementFull, - val onSuccess: () -> Unit -) : LibrusApi(data) { +class LibrusApiAnnouncementMarkAsRead(override val data: DataLibrus, + private val announcement: AnnouncementFull, + val onSuccess: () -> Unit +) : LibrusApi(data, null) { companion object { const val TAG = "LibrusApiAnnouncementMarkAsRead" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt index 41ecfffb..8256b859 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt @@ -9,12 +9,14 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ANNOUNCEMENTS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Announcement -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiAnnouncements(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiAnnouncements" } @@ -58,7 +60,7 @@ class LibrusApiAnnouncements(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_ANNOUNCEMENTS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_ANNOUNCEMENTS) } }} } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt index 2fbf907e..d7cbc00c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt @@ -13,7 +13,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.AttendanceType class LibrusApiAttendanceTypes(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiAttendanceTypes" } @@ -43,7 +45,7 @@ class LibrusApiAttendanceTypes(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt index d032abb0..5e69a5a7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt @@ -15,7 +15,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiAttendances(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiAttendances" } @@ -77,7 +79,7 @@ class LibrusApiAttendances(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_ATTENDANCES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_ATTENDANCES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt index 917ad84a..650dfbb5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory class LibrusApiBehaviourGradeCategories(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiBehaviourGradeCategories" } @@ -40,7 +42,7 @@ class LibrusApiBehaviourGradeCategories(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES, 1 * WEEK) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt index 5af90de2..eedb1d1d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt @@ -8,11 +8,13 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class LibrusApiBehaviourGradeComments(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiBehaviourGradeComments" } @@ -38,7 +40,7 @@ class LibrusApiBehaviourGradeComments(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt index af8ef33a..16c2b544 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt @@ -9,15 +9,17 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi 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.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date import java.text.DecimalFormat class LibrusApiBehaviourGrades(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiBehaviourGrades" } @@ -150,7 +152,7 @@ class LibrusApiBehaviourGrades(override val data: DataLibrus, data.toRemove.add(DataRemoveModel.Grades.semesterWithType(profile.currentSemester, Grade.TYPE_POINT_SUM)) data.setSyncNext(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt index 4cc246d2..171e80e1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt @@ -15,7 +15,9 @@ import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiClasses(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiClasses" } @@ -55,7 +57,7 @@ class LibrusApiClasses(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_CLASSES, 4 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_CLASSES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt index edcde8f9..80a11105 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Classroom import java.util.* class LibrusApiClassrooms(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiClassrooms" } @@ -39,7 +41,7 @@ class LibrusApiClassrooms(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_CLASSROOMS, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_CLASSROOMS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt index 4f481369..94ce6972 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory class LibrusApiDescriptiveGradeCategories(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiDescriptiveGradeCategories" } @@ -39,7 +41,7 @@ class LibrusApiDescriptiveGradeCategories(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES, 1 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt index b56fa5eb..413a9235 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt @@ -9,16 +9,18 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi 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.TYPE_DESCRIPTIVE_TEXT import pl.szczodrzynski.edziennik.data.db.entity.Grade.TYPE_TEXT import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiDescriptiveGrades(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiDescriptiveGrades" } @@ -85,7 +87,7 @@ class LibrusApiDescriptiveGrades(override val data: DataLibrus, }) data.setSyncNext(ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt index 652f285d..331b8249 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt @@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.EventType class LibrusApiEventTypes(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiEventTypes" } @@ -29,7 +31,7 @@ class LibrusApiEventTypes(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_EVENT_TYPES, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_EVENT_TYPES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt index bc0d491d..a04c2863 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt @@ -17,7 +17,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time class LibrusApiEvents(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiEvents" } @@ -76,7 +78,7 @@ class LibrusApiEvents(override val data: DataLibrus, ))) data.setSyncNext(ENDPOINT_LIBRUS_API_EVENTS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_EVENTS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt index 11e7dcd8..518e643f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt @@ -9,11 +9,13 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class LibrusApiGradeCategories(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiGradeCategories" } @@ -42,7 +44,7 @@ class LibrusApiGradeCategories(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt index 8eed6e0e..971ac35b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt @@ -8,11 +8,13 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class LibrusApiGradeComments(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiGradeComments" } @@ -38,7 +40,7 @@ class LibrusApiGradeComments(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt index cb8f2287..95140988 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt @@ -5,16 +5,18 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi 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.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiGrades(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiGrades" } @@ -111,7 +113,7 @@ class LibrusApiGrades(override val data: DataLibrus, DataRemoveModel.Grades.semesterWithType(profile.currentSemester, it) }) data.setSyncNext(ENDPOINT_LIBRUS_API_NORMAL_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_NORMAL_GRADES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_LIBRUS_API_NORMAL_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt index b40bc95f..16d66c6f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt @@ -9,13 +9,15 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_HOMEWORK import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiHomework(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiHomework" } @@ -59,7 +61,7 @@ class LibrusApiHomework(override val data: DataLibrus, data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_HOMEWORK)) data.setSyncNext(ENDPOINT_LIBRUS_API_HOMEWORK, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_HOMEWORK) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt index 89015f06..e32790c9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt @@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.LibrusLesson class LibrusApiLessons(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiLessons" } @@ -38,7 +40,7 @@ class LibrusApiLessons(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_LESSONS, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_LESSONS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt index 515898bd..5486d168 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt @@ -17,7 +17,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time class LibrusApiLuckyNumber(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiLuckyNumber" } @@ -57,7 +59,7 @@ class LibrusApiLuckyNumber(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_LUCKY_NUMBER, syncAt = nextSync) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_LUCKY_NUMBER) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt index 5e697a4c..9d5ce1d4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt @@ -10,7 +10,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi class LibrusApiMe(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiMe" } @@ -33,7 +35,7 @@ class LibrusApiMe(override val data: DataLibrus, buildFullName(user?.getString("FirstName"), user?.getString("LastName")) data.setSyncNext(ENDPOINT_LIBRUS_API_ME, 2*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_ME) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt index c11abcd1..55e753ee 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt @@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.NoticeType class LibrusApiNoticeTypes(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiNoticeTypes" } @@ -28,7 +30,7 @@ class LibrusApiNoticeTypes(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_NOTICE_TYPES, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_NOTICE_TYPES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt index dfbf574a..e05cbfd7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt @@ -9,13 +9,15 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NOTICES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi -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.utils.models.Date class LibrusApiNotices(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiNotices" } @@ -65,7 +67,7 @@ class LibrusApiNotices(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_NOTICES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_NOTICES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt index 0f41806b..bba6ead9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory class LibrusApiPointGradeCategories(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiPointGradeCategories" } @@ -44,7 +46,7 @@ class LibrusApiPointGradeCategories(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_POINT_GRADE_CATEGORIES, 1 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_POINT_GRADE_CATEGORIES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt index de60cf0a..613e69ce 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt @@ -9,15 +9,17 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_POINT_GRADES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi 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.TYPE_POINT_AVG import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiPointGrades(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiPointGrades" } @@ -72,7 +74,7 @@ class LibrusApiPointGrades(override val data: DataLibrus, data.toRemove.add(DataRemoveModel.Grades.semesterWithType(profile.currentSemester, TYPE_POINT_AVG)) data.setSyncNext(ENDPOINT_LIBRUS_API_POINT_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_POINT_GRADES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_LIBRUS_API_POINT_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt index 300b54ba..3a58d8e1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt @@ -15,7 +15,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time class LibrusApiPtMeetings(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiPtMeetings" } @@ -65,7 +67,7 @@ class LibrusApiPtMeetings(override val data: DataLibrus, data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_PT_MEETING)) data.setSyncNext(ENDPOINT_LIBRUS_API_PT_MEETINGS, 12*HOUR) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_PT_MEETINGS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt index fe3c2cf5..d405f9bf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt @@ -13,7 +13,9 @@ import pl.szczodrzynski.edziennik.utils.models.Time import java.util.* class LibrusApiSchools(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiSchools" } @@ -48,7 +50,7 @@ class LibrusApiSchools(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_SCHOOLS, 4 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_SCHOOLS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt index 64c885eb..cfd9bd31 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt @@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Subject class LibrusApiSubjects(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiSubjects" } @@ -31,7 +33,7 @@ class LibrusApiSubjects(override val data: DataLibrus, data.subjectList.put(1, Subject(profileId, 1, "Zachowanie", "zach")) data.setSyncNext(ENDPOINT_LIBRUS_API_SUBJECTS, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_SUBJECTS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt index 6c0da684..e09504bf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt @@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.TeacherAbsenceType class LibrusApiTeacherFreeDayTypes(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiTeacherFreeDayTypes" } @@ -34,7 +36,7 @@ class LibrusApiTeacherFreeDayTypes(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES, 7 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES) } } } 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 20d25491..04c44efb 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 @@ -16,7 +16,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time class LibrusApiTeacherFreeDays(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiTeacherFreeDays" } @@ -64,7 +66,7 @@ class LibrusApiTeacherFreeDays(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS, 6*HOUR, DRAWER_ITEM_AGENDA) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTemplate.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTemplate.kt index 3b111f0c..b47215b9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTemplate.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTemplate.kt @@ -8,7 +8,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi class LibrusApiTemplate(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + val onSuccess: () -> Unit +) : LibrusApi(data, null) { companion object { const val TAG = "LibrusApi" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt index a6253473..45b6b069 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory class LibrusApiTextGradeCategories(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiTextGradeCategories" } @@ -39,7 +41,7 @@ class LibrusApiTextGradeCategories(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_TEXT_GRADE_CATEGORIES, 1 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_TEXT_GRADE_CATEGORIES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt index a2ccb362..ec7e17bd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt @@ -9,15 +9,17 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_TEXT_GRADES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi 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.TYPE_DESCRIPTIVE import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiTextGrades(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiTextGrades" } @@ -75,7 +77,7 @@ class LibrusApiTextGrades(override val data: DataLibrus, data.toRemove.add(DataRemoveModel.Grades.semesterWithType(profile.currentSemester, TYPE_DESCRIPTIVE)) data.setSyncNext(ENDPOINT_LIBRUS_API_TEXT_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_TEXT_GRADES) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_LIBRUS_API_TEXT_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt index b0fd9009..7c1eec61 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt @@ -11,16 +11,18 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_TIMETABLES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Lesson +import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week class LibrusApiTimetables(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiTimetables" } @@ -73,7 +75,7 @@ class LibrusApiTimetables(override val data: DataLibrus, data.toRemove.add(DataRemoveModel.Timetable.between(weekStart, weekEnd)) data.setSyncNext(ENDPOINT_LIBRUS_API_TIMETABLES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_TIMETABLES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt index 5532db5c..791283ed 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt @@ -10,7 +10,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi class LibrusApiUnits(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiUnits" } @@ -18,7 +20,7 @@ class LibrusApiUnits(override val data: DataLibrus, init { run { if (data.unitId == 0L) { data.setSyncNext(ENDPOINT_LIBRUS_API_UNITS, 12 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_UNITS) return@run } @@ -38,7 +40,7 @@ class LibrusApiUnits(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_UNITS, 7 * DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_UNITS) } }} } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt index 904f081f..0ac9a5ea 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt @@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Teacher class LibrusApiUsers(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiUsers" } @@ -36,7 +38,7 @@ class LibrusApiUsers(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_USERS, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_USERS) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt index bf17283f..9937f808 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt @@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Team class LibrusApiVirtualClasses(override val data: DataLibrus, - val onSuccess: () -> Unit) : LibrusApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusApi(data, lastSync) { companion object { const val TAG = "LibrusApiVirtualClasses" } @@ -30,7 +32,7 @@ class LibrusApiVirtualClasses(override val data: DataLibrus, } data.setSyncNext(ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES, 4*DAY) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetAttachment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetAttachment.kt index 8e62cee9..f7234891 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetAttachment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetAttachment.kt @@ -22,9 +22,12 @@ import pl.szczodrzynski.edziennik.utils.Utils import java.io.File import kotlin.coroutines.CoroutineContext -class LibrusMessagesGetAttachment( - override val data: DataLibrus, val message: Message, val attachmentId: Long, - val attachmentName: String, val onSuccess: () -> Unit) : LibrusMessages(data), CoroutineScope { +class LibrusMessagesGetAttachment(override val data: DataLibrus, + val message: Message, + val attachmentId: Long, + val attachmentName: String, + val onSuccess: () -> Unit +) : LibrusMessages(data, null), CoroutineScope { companion object { const val TAG = "LibrusMessagesGetAttachment" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt index 02609c7d..8097ed86 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt @@ -11,19 +11,19 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_MESSAGES_RECEIVED import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_MESSAGES_SENT import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.data.db.entity.Message +import pl.szczodrzynski.edziennik.data.db.entity.* import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_RECEIVED -import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient -import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.fixName import pl.szczodrzynski.edziennik.singleOrNull import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date -class LibrusMessagesGetList(override val data: DataLibrus, private val type: Int = TYPE_RECEIVED, - archived: Boolean = false, val onSuccess: () -> Unit) : LibrusMessages(data) { +class LibrusMessagesGetList(override val data: DataLibrus, + override val lastSync: Long?, + private val type: Int = TYPE_RECEIVED, + archived: Boolean = false, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusMessages(data, lastSync) { companion object { const val TAG = "LibrusMessagesGetList" } @@ -34,6 +34,10 @@ class LibrusMessagesGetList(override val data: DataLibrus, private val type: Int Message.TYPE_SENT -> "Outbox/action/GetList" else -> null } + val endpointId = when (type) { + TYPE_RECEIVED -> ENDPOINT_LIBRUS_MESSAGES_RECEIVED + else -> ENDPOINT_LIBRUS_MESSAGES_SENT + } if (endpoint != null) { messagesGet(TAG, endpoint, parameters = mapOf( @@ -121,11 +125,11 @@ class LibrusMessagesGetList(override val data: DataLibrus, private val type: Int TYPE_RECEIVED -> data.setSyncNext(ENDPOINT_LIBRUS_MESSAGES_RECEIVED, SYNC_ALWAYS) Message.TYPE_SENT -> data.setSyncNext(ENDPOINT_LIBRUS_MESSAGES_SENT, DAY, DRAWER_ITEM_MESSAGES) } - onSuccess() + onSuccess(endpointId) } } else { data.error(TAG, ERROR_NOT_IMPLEMENTED) - onSuccess() + onSuccess(endpointId) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt index 55df232c..824fdc5e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt @@ -11,10 +11,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages import pl.szczodrzynski.edziennik.data.api.events.MessageGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_RECEIVED import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_SENT -import pl.szczodrzynski.edziennik.data.db.full.MessageFull -import pl.szczodrzynski.edziennik.data.db.full.MessageRecipientFull import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.data.db.full.MessageFull +import pl.szczodrzynski.edziennik.data.db.full.MessageRecipientFull import pl.szczodrzynski.edziennik.fixName import pl.szczodrzynski.edziennik.isNotNullNorEmpty import pl.szczodrzynski.edziennik.notEmptyOrNull @@ -22,11 +22,10 @@ import pl.szczodrzynski.edziennik.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date import java.nio.charset.Charset -class LibrusMessagesGetMessage( - override val data: DataLibrus, - private val messageObject: MessageFull, - val onSuccess: () -> Unit -) : LibrusMessages(data) { +class LibrusMessagesGetMessage(override val data: DataLibrus, + private val messageObject: MessageFull, + val onSuccess: () -> Unit +) : LibrusMessages(data, null) { companion object { const val TAG = "LibrusMessagesGetMessage" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt index 52814e4d..053258d8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt @@ -15,8 +15,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages import pl.szczodrzynski.edziennik.data.api.events.RecipientListGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Teacher -class LibrusMessagesGetRecipientList( - override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusMessages(data) { +class LibrusMessagesGetRecipientList(override val data: DataLibrus, + val onSuccess: () -> Unit +) : LibrusMessages(data, null) { companion object { private const val TAG = "LibrusMessagesGetRecipientList" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt index 52d681f3..02215dea 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt @@ -16,13 +16,12 @@ import pl.szczodrzynski.edziennik.getJsonObject import pl.szczodrzynski.edziennik.getLong import pl.szczodrzynski.edziennik.getString -class LibrusMessagesSendMessage( - override val data: DataLibrus, - val recipients: List, - val subject: String, - val text: String, - val onSuccess: () -> Unit -) : LibrusMessages(data) { +class LibrusMessagesSendMessage(override val data: DataLibrus, + val recipients: List, + val subject: String, + val text: String, + val onSuccess: () -> Unit +) : LibrusMessages(data, null) { companion object { const val TAG = "LibrusMessages" } @@ -48,7 +47,7 @@ class LibrusMessagesSendMessage( return@messagesGetJson } - LibrusMessagesGetList(data, type = Message.TYPE_SENT) { + LibrusMessagesGetList(data, type = Message.TYPE_SENT, lastSync = null) { val message = data.messageIgnoreList.firstOrNull { it.type == Message.TYPE_SENT && it.id == id } val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == message?.id } val event = MessageSentEvent(data.profileId, message, metadata?.addedDate) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesTemplate.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesTemplate.kt index 797bb2ca..6115e136 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesTemplate.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesTemplate.kt @@ -7,7 +7,9 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.messages import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages -class LibrusMessagesTemplate(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusMessages(data) { +class LibrusMessagesTemplate(override val data: DataLibrus, + val onSuccess: () -> Unit +) : LibrusMessages(data, null) { companion object { const val TAG = "LibrusMessages" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt index 7f997f88..4a9aa470 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt @@ -18,7 +18,10 @@ import pl.szczodrzynski.edziennik.get import pl.szczodrzynski.edziennik.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date -class LibrusSynergiaHomework(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) { +class LibrusSynergiaHomework(override val data: DataLibrus, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusSynergia(data, lastSync) { companion object { const val TAG = "LibrusSynergiaHomework" } @@ -98,9 +101,9 @@ class LibrusSynergiaHomework(override val data: DataLibrus, val onSuccess: () -> data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_HOMEWORK)) - // because this requires a synergia login (2 more requests) sync this every two hours or if explicit :D - data.setSyncNext(ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK, 2 * HOUR, DRAWER_ITEM_HOMEWORK) - onSuccess() + // because this requires a synergia login (2 more requests!!!) sync this every few hours or if explicit :D + data.setSyncNext(ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK, 5 * HOUR, DRAWER_ITEM_HOMEWORK) + onSuccess(ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK) } - } ?: onSuccess() } + } ?: onSuccess(ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt index 3ccb230f..66e11785 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt @@ -10,7 +10,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_SYNERGIA_INFO import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusSynergia -class LibrusSynergiaInfo(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) { +class LibrusSynergiaInfo(override val data: DataLibrus, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : LibrusSynergia(data, lastSync) { companion object { const val TAG = "LibrusSynergiaInfo" } @@ -28,7 +31,7 @@ class LibrusSynergiaInfo(override val data: DataLibrus, val onSuccess: () -> Uni } data.setSyncNext(ENDPOINT_LIBRUS_SYNERGIA_INFO, MONTH) - onSuccess() + onSuccess(ENDPOINT_LIBRUS_SYNERGIA_INFO) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaMarkAllAnnouncementsAsRead.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaMarkAllAnnouncementsAsRead.kt index 2c96f757..04a7f5b6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaMarkAllAnnouncementsAsRead.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaMarkAllAnnouncementsAsRead.kt @@ -8,7 +8,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusSynergia import pl.szczodrzynski.edziennik.data.db.entity.Metadata -class LibrusSynergiaMarkAllAnnouncementsAsRead(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) { +class LibrusSynergiaMarkAllAnnouncementsAsRead(override val data: DataLibrus, + val onSuccess: () -> Unit +) : LibrusSynergia(data, null) { companion object { const val TAG = "LibrusSynergiaMarkAllAnnouncementsAsRead" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaTemplate.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaTemplate.kt index af519128..ddfb4457 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaTemplate.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaTemplate.kt @@ -7,7 +7,9 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.synergia import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusSynergia -class LibrusSynergiaTemplate(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) { +class LibrusSynergiaTemplate(override val data: DataLibrus, + val onSuccess: () -> Unit +) : LibrusSynergia(data, null) { companion object { const val TAG = "LibrusSynergia" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt index 65a55838..f834f54f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt @@ -18,7 +18,7 @@ class LibrusFirstLogin(val data: DataLibrus, val onSuccess: () -> Unit) { } private val portal = LibrusPortal(data) - private val api = LibrusApi(data) + private val api = LibrusApi(data, null) private val profileList = mutableListOf() init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt index 4ee10e82..00883ddb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt @@ -18,7 +18,7 @@ import pl.szczodrzynski.edziennik.getUnixDate import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection -class LibrusLoginSynergia(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusApi(data) { +class LibrusLoginSynergia(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusApi(data, null) { companion object { private const val TAG = "LoginLibrusSynergia" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikData.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikData.kt index 565f96b7..d7a7e4f4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikData.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikData.kt @@ -29,56 +29,58 @@ class MobidziennikData(val data: DataMobidziennik, val onSuccess: () -> Unit) { onSuccess() return } - useEndpoint(data.targetEndpointIds.removeAt(0)) { + useEndpoint(data.targetEndpointIds.firstKey()) { endpointId -> + data.targetEndpointIds.remove(endpointId) data.progress(data.progressStep) nextEndpoint(onSuccess) } } - private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) { - Utils.d(TAG, "Using endpoint $endpointId") + private fun useEndpoint(endpointId: Int, onSuccess: (endpointId: Int) -> Unit) { + val lastSync = data.targetEndpointIds[endpointId] + Utils.d(TAG, "Using endpoint $endpointId. Last sync time = $lastSync") when (endpointId) { ENDPOINT_MOBIDZIENNIK_API_MAIN -> { data.startProgress(R.string.edziennik_progress_endpoint_data) - MobidziennikApi(data, onSuccess) + MobidziennikApi(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_API2_MAIN -> { data.startProgress(R.string.edziennik_progress_endpoint_push_config) - MobidziennikApi2Main(data, onSuccess) + MobidziennikApi2Main(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX -> { data.startProgress(R.string.edziennik_progress_endpoint_messages_inbox) - MobidziennikWebMessagesInbox(data) { onSuccess() } + MobidziennikWebMessagesInbox(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL -> { data.startProgress(R.string.edziennik_progress_endpoint_messages) - MobidziennikWebMessagesAll(data) { onSuccess() } + MobidziennikWebMessagesAll(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_WEB_CALENDAR -> { data.startProgress(R.string.edziennik_progress_endpoint_calendar) - MobidziennikWebCalendar(data) { onSuccess() } + MobidziennikWebCalendar(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_WEB_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_grades) - MobidziennikWebGrades(data) { onSuccess() } + MobidziennikWebGrades(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL -> { data.startProgress(R.string.edziennik_progress_endpoint_account_details) - MobidziennikWebAccountEmail(data) { onSuccess() } + MobidziennikWebAccountEmail(data, lastSync, onSuccess) }/* ENDPOINT_MOBIDZIENNIK_WEB_NOTICES -> { data.startProgress(R.string.edziennik_progress_endpoint_behaviour) - MobidziennikWebNotices(data) { onSuccess() } + MobidziennikWebNotices(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_WEB_ATTENDANCE -> { data.startProgress(R.string.edziennik_progress_endpoint_attendance) - MobidziennikWebAttendance(data) { onSuccess() } + MobidziennikWebAttendance(data, lastSync, onSuccess) } ENDPOINT_MOBIDZIENNIK_WEB_MANUALS -> { data.startProgress(R.string.edziennik_progress_endpoint_lucky_number) - MobidziennikWebManuals(data) { onSuccess() } + MobidziennikWebManuals(data, lastSync, onSuccess) }*/ - else -> onSuccess() + else -> onSuccess(endpointId) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikWeb.kt index 721d3090..c549cee3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/MobidziennikWeb.kt @@ -15,7 +15,7 @@ import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.utils.Utils.d import java.io.File -open class MobidziennikWeb(open val data: DataMobidziennik) { +open class MobidziennikWeb(open val data: DataMobidziennik, open val lastSync: Long?) { companion object { private const val TAG = "MobidziennikWeb" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApi.kt index 21e2394f..d1305a7b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApi.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class MobidziennikApi(override val data: DataMobidziennik, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : MobidziennikWeb(data, lastSync) { companion object { private const val TAG = "MobidziennikApi" } @@ -47,7 +49,7 @@ class MobidziennikApi(override val data: DataMobidziennik, } data.setSyncNext(ENDPOINT_MOBIDZIENNIK_API_MAIN, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_API_MAIN) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt index 187b1d59..70d32b18 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt @@ -19,7 +19,9 @@ import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.utils.Utils class MobidziennikApi2Main(val data: DataMobidziennik, - val onSuccess: () -> Unit) { + val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) { companion object { private const val TAG = "MobidziennikApi2Main" } @@ -62,7 +64,7 @@ class MobidziennikApi2Main(val data: DataMobidziennik, data.setSyncNext(ENDPOINT_MOBIDZIENNIK_API2_MAIN, SYNC_ALWAYS) data.app.config.sync.tokenMobidziennikList = data.app.config.sync.tokenMobidziennikList + profileId - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_API2_MAIN) } override fun onFailure(response: Response?, throwable: Throwable?) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt index 86eb026b..ef4c2847 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.Mobidzien import pl.szczodrzynski.edziennik.get class MobidziennikWebAccountEmail(override val data: DataMobidziennik, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : MobidziennikWeb(data, lastSync) { companion object { private const val TAG = "MobidziennikWebAccountEmail" } @@ -25,7 +27,7 @@ class MobidziennikWebAccountEmail(override val data: DataMobidziennik, data.loginEmail = email data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL, if (email == null) 3*DAY else 7*DAY) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt index 7dfe2861..9664a68b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt @@ -18,7 +18,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import java.util.* class MobidziennikWebCalendar(override val data: DataMobidziennik, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : MobidziennikWeb(data, lastSync) { companion object { private const val TAG = "MobidziennikWebCalendar" } @@ -95,7 +97,7 @@ class MobidziennikWebCalendar(override val data: DataMobidziennik, } data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_CALENDAR, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_CALENDAR) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetAttachment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetAttachment.kt index 484619ab..80803441 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetAttachment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetAttachment.kt @@ -12,9 +12,12 @@ import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.utils.Utils import java.io.File -class MobidziennikWebGetAttachment( - override val data: DataMobidziennik, val message: Message, val attachmentId: Long, - val attachmentName: String, val onSuccess: () -> Unit) : MobidziennikWeb(data) { +class MobidziennikWebGetAttachment(override val data: DataMobidziennik, + val message: Message, + val attachmentId: Long, + val attachmentName: String, + val onSuccess: () -> Unit +) : MobidziennikWeb(data, null) { companion object { private const val TAG = "MobidziennikWebGetAttachment" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt index 272c6425..e4ddcc52 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt @@ -22,10 +22,10 @@ import pl.szczodrzynski.edziennik.utils.Utils.monthFromName import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time -class MobidziennikWebGetMessage( - override val data: DataMobidziennik, - private val message: MessageFull, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { +class MobidziennikWebGetMessage(override val data: DataMobidziennik, + private val message: MessageFull, + val onSuccess: () -> Unit +) : MobidziennikWeb(data, null) { companion object { private const val TAG = "MobidziennikWebGetMessage" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt index 8fe4f517..1118da48 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt @@ -16,8 +16,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.Mobidzien import pl.szczodrzynski.edziennik.data.api.events.RecipientListGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Teacher -class MobidziennikWebGetRecipientList( - override val data: DataMobidziennik, val onSuccess: () -> Unit) : MobidziennikWeb(data) { +class MobidziennikWebGetRecipientList(override val data: DataMobidziennik, + val onSuccess: () -> Unit +) : MobidziennikWeb(data, null) { companion object { private const val TAG = "MobidziennikWebGetRecipientList" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt index 8866f884..f0073af1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt @@ -21,7 +21,9 @@ import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time class MobidziennikWebGrades(override val data: DataMobidziennik, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : MobidziennikWeb(data, lastSync) { companion object { private const val TAG = "MobidziennikWebGrades" } @@ -148,7 +150,7 @@ class MobidziennikWebGrades(override val data: DataMobidziennik, data.toRemove.add(DataRemoveModel.Grades.semesterWithType(currentSemester, Grade.TYPE_NORMAL)) data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_GRADES) } }} } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt index 5a134cf3..af9dc5f2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt @@ -19,7 +19,9 @@ import pl.szczodrzynski.edziennik.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date class MobidziennikWebMessagesAll(override val data: DataMobidziennik, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : MobidziennikWeb(data, lastSync) { companion object { private const val TAG = "MobidziennikWebMessagesAll" } @@ -33,7 +35,7 @@ class MobidziennikWebMessagesAll(override val data: DataMobidziennik, val listElement = doc.getElementsByClass("spis").first() if (listElement == null) { data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL, 7*DAY) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL) return@webGet } val list = listElement.getElementsByClass("podswietl") @@ -83,10 +85,10 @@ class MobidziennikWebMessagesAll(override val data: DataMobidziennik, data.metadataList.add(Metadata(profileId, Metadata.TYPE_MESSAGE, message.id, true, true, addedDate)) } - // sync every 7 days as we probably don't except more than + // sync every 7 days as we probably don't expect more than // 30 received messages during a week, without any normal sync data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL, 7*DAY) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt index aabb05a1..f87fdfbb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt @@ -17,7 +17,9 @@ import pl.szczodrzynski.edziennik.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date class MobidziennikWebMessagesInbox(override val data: DataMobidziennik, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : MobidziennikWeb(data, lastSync) { companion object { private const val TAG = "MobidziennikWebMessagesInbox" } @@ -28,7 +30,7 @@ class MobidziennikWebMessagesInbox(override val data: DataMobidziennik, if (text.contains("Brak wiadomoĊ›ci odebranych.")) { data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX) return@webGet } @@ -81,7 +83,7 @@ class MobidziennikWebMessagesInbox(override val data: DataMobidziennik, } data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebNotices.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebNotices.kt index 275d876f..abf049a8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebNotices.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebNotices.kt @@ -10,7 +10,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.Mobidzien import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class MobidziennikWebNotices(override val data: DataMobidziennik, - val onSuccess: () -> Unit) : MobidziennikWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : MobidziennikWeb(data, lastSync) { companion object { private const val TAG = "MobidziennikWebNotices" } @@ -18,7 +20,7 @@ class MobidziennikWebNotices(override val data: DataMobidziennik, init { // TODO this does no longer work: Mobidziennik changed their mobile page in 2019.09 data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_NOTICES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_NOTICES) /*webGet(TAG, "/mobile/zachowanie") { text -> MobidziennikLuckyNumberExtractor(data, text) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebSendMessage.kt index 48c775f5..074fb83e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebSendMessage.kt @@ -13,13 +13,12 @@ import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher -class MobidziennikWebSendMessage( - override val data: DataMobidziennik, - val recipients: List, - val subject: String, - val text: String, - val onSuccess: () -> Unit -) : MobidziennikWeb(data) { +class MobidziennikWebSendMessage(override val data: DataMobidziennik, + val recipients: List, + val subject: String, + val text: String, + val onSuccess: () -> Unit +) : MobidziennikWeb(data, null) { companion object { private const val TAG = "MobidziennikWebSendMessage" } @@ -43,7 +42,7 @@ class MobidziennikWebSendMessage( } // TODO create MobidziennikWebMessagesSent and replace this - MobidziennikWebMessagesAll(data) { + MobidziennikWebMessagesAll(data, null) { val message = data.messageIgnoreList.firstOrNull { it.type == Message.TYPE_SENT && it.subject == subject } val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == message?.id } val event = MessageSentEvent(data.profileId, message, metadata?.addedDate) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt index 7a96db27..4857bd09 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt @@ -16,7 +16,7 @@ class MobidziennikFirstLogin(val data: DataMobidziennik, val onSuccess: () -> Un private const val TAG = "MobidziennikFirstLogin" } - private val web = MobidziennikWeb(data) + private val web = MobidziennikWeb(data, null) private val profileList = mutableListOf() init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt index e36a8e6d..d3d4c607 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt @@ -5,13 +5,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.data import com.google.gson.JsonObject +import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.ERROR_TEMPLATE_WEB_OTHER import pl.szczodrzynski.edziennik.data.api.GET import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.currentTimeUnix -open class TemplateApi(open val data: DataTemplate) { +open class TemplateApi(open val data: DataTemplate, open val lastSync: Long?) { companion object { private const val TAG = "TemplateApi" } @@ -34,7 +34,7 @@ open class TemplateApi(open val data: DataTemplate) { json.addProperty("sample", "text") if (currentTimeUnix() % 4L == 0L) { - // let's set a 20% chance of error, just as a test + // let's set a 25% chance of error, just as a test data.error(ApiError(tag, ERROR_TEMPLATE_WEB_OTHER) .withApiResponse("404 Not Found - this is the text returned by the API")) return diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateData.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateData.kt index d0833c02..af81bc43 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateData.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateData.kt @@ -32,28 +32,30 @@ class TemplateData(val data: DataTemplate, val onSuccess: () -> Unit) { onSuccess() return } - useEndpoint(data.targetEndpointIds.removeAt(0)) { + useEndpoint(data.targetEndpointIds.firstKey()) { endpointId -> + data.targetEndpointIds.remove(endpointId) data.progress(data.progressStep) nextEndpoint(onSuccess) } } - private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) { - Utils.d(TAG, "Using endpoint $endpointId") + private fun useEndpoint(endpointId: Int, onSuccess: (endpointId: Int) -> Unit) { + val lastSync = data.targetEndpointIds[endpointId] + Utils.d(TAG, "Using endpoint $endpointId. Last sync time = $lastSync") when (endpointId) { ENDPOINT_TEMPLATE_WEB_SAMPLE -> { data.startProgress(R.string.edziennik_progress_endpoint_student_info) - TemplateWebSample(data) { onSuccess() } + TemplateWebSample(data, lastSync, onSuccess) } ENDPOINT_TEMPLATE_WEB_SAMPLE_2 -> { data.startProgress(R.string.edziennik_progress_endpoint_school_info) - TemplateWebSample2(data) { onSuccess() } + TemplateWebSample2(data, lastSync, onSuccess) } ENDPOINT_TEMPLATE_API_SAMPLE -> { data.startProgress(R.string.edziennik_progress_endpoint_grades) - TemplateApiSample(data) { onSuccess() } + TemplateApiSample(data, lastSync, onSuccess) } - else -> onSuccess() + else -> onSuccess(endpointId) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt index eabe71a6..0db508c7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt @@ -5,13 +5,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.data import com.google.gson.JsonObject +import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.ERROR_TEMPLATE_WEB_OTHER import pl.szczodrzynski.edziennik.data.api.GET import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.currentTimeUnix -open class TemplateWeb(open val data: DataTemplate) { +open class TemplateWeb(open val data: DataTemplate, open val lastSync: Long?) { companion object { private const val TAG = "TemplateWeb" } @@ -34,7 +34,7 @@ open class TemplateWeb(open val data: DataTemplate) { json.addProperty("sample", "text") if (currentTimeUnix() % 4L == 0L) { - // let's set a 20% chance of error, just as a test + // let's set a 25% chance of error, just as a test data.error(ApiError(tag, ERROR_TEMPLATE_WEB_OTHER) .withApiResponse("404 Not Found - this is the text returned by the API")) return diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt index 9678cd16..632a8e74 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.template.data.TemplateApi import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class TemplateApiSample(override val data: DataTemplate, - val onSuccess: () -> Unit) : TemplateApi(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : TemplateApi(data, lastSync) { companion object { private const val TAG = "TemplateApiSample" } @@ -33,7 +35,7 @@ class TemplateApiSample(override val data: DataTemplate, // always, in every sync data.setSyncNext(ENDPOINT_TEMPLATE_API_SAMPLE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_TEMPLATE_API_SAMPLE) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt index 6463ad85..f0ba882e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt @@ -13,7 +13,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.template.data.TemplateWeb import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class TemplateWebSample(override val data: DataTemplate, - val onSuccess: () -> Unit) : TemplateWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : TemplateWeb(data, lastSync) { companion object { private const val TAG = "TemplateWebSample" } @@ -34,7 +36,7 @@ class TemplateWebSample(override val data: DataTemplate, // always, in every sync data.setSyncNext(ENDPOINT_TEMPLATE_WEB_SAMPLE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_TEMPLATE_WEB_SAMPLE) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt index 36e5bfca..02d58231 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt @@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.template.data.TemplateWeb import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS class TemplateWebSample2(override val data: DataTemplate, - val onSuccess: () -> Unit) : TemplateWeb(data) { + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : TemplateWeb(data, lastSync) { companion object { private const val TAG = "TemplateWebSample2" } @@ -33,7 +35,7 @@ class TemplateWebSample2(override val data: DataTemplate, // always, in every sync data.setSyncNext(ENDPOINT_TEMPLATE_WEB_SAMPLE_2, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_TEMPLATE_WEB_SAMPLE_2) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/firstlogin/TemplateFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/firstlogin/TemplateFirstLogin.kt index eaf0bb9d..48cc6f18 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/firstlogin/TemplateFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/firstlogin/TemplateFirstLogin.kt @@ -14,8 +14,8 @@ class TemplateFirstLogin(val data: DataTemplate, val onSuccess: () -> Unit) { private const val TAG = "TemplateFirstLogin" } - private val web = TemplateWeb(data) - private val api = TemplateApi(data) + private val web = TemplateWeb(data, null) + private val api = TemplateApi(data, null) private val profileList = mutableListOf() init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanApi.kt index d024f5b0..95110f82 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanApi.kt @@ -19,7 +19,7 @@ import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection import java.util.* -open class VulcanApi(open val data: DataVulcan) { +open class VulcanApi(open val data: DataVulcan, open val lastSync: Long?) { companion object { const val TAG = "VulcanApi" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanData.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanData.kt index c24de472..5035fcc9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanData.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanData.kt @@ -27,60 +27,62 @@ class VulcanData(val data: DataVulcan, val onSuccess: () -> Unit) { onSuccess() return } - useEndpoint(data.targetEndpointIds.removeAt(0)) { + useEndpoint(data.targetEndpointIds.firstKey()) { endpointId -> + data.targetEndpointIds.remove(endpointId) data.progress(data.progressStep) nextEndpoint(onSuccess) } } - private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) { - Utils.d(TAG, "Using endpoint $endpointId") + private fun useEndpoint(endpointId: Int, onSuccess: (endpointId: Int) -> Unit) { + val lastSync = data.targetEndpointIds[endpointId] + Utils.d(TAG, "Using endpoint $endpointId. Last sync time = $lastSync") when (endpointId) { ENDPOINT_VULCAN_API_UPDATE_SEMESTER -> { data.startProgress(R.string.edziennik_progress_endpoint_student_info) - VulcanApiUpdateSemester(data, onSuccess) + VulcanApiUpdateSemester(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_DICTIONARIES -> { data.startProgress(R.string.edziennik_progress_endpoint_dictionaries) - VulcanApiDictionaries(data, onSuccess) + VulcanApiDictionaries(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_GRADES -> { data.startProgress(R.string.edziennik_progress_endpoint_grades) - VulcanApiGrades(data, onSuccess) + VulcanApiGrades(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_GRADES_SUMMARY -> { data.startProgress(R.string.edziennik_progress_endpoint_proposed_grades) - VulcanApiProposedGrades(data, onSuccess) + VulcanApiProposedGrades(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_EVENTS -> { data.startProgress(R.string.edziennik_progress_endpoint_events) - VulcanApiEvents(data, isHomework = false, onSuccess = onSuccess) + VulcanApiEvents(data, isHomework = false, lastSync = lastSync, onSuccess = onSuccess) } ENDPOINT_VULCAN_API_HOMEWORK -> { data.startProgress(R.string.edziennik_progress_endpoint_homework) - VulcanApiEvents(data, isHomework = true, onSuccess = onSuccess) + VulcanApiEvents(data, isHomework = true, lastSync = lastSync, onSuccess = onSuccess) } ENDPOINT_VULCAN_API_NOTICES -> { data.startProgress(R.string.edziennik_progress_endpoint_notices) - VulcanApiNotices(data, onSuccess) + VulcanApiNotices(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_ATTENDANCE -> { data.startProgress(R.string.edziennik_progress_endpoint_attendance) - VulcanApiAttendance(data, onSuccess) + VulcanApiAttendance(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_TIMETABLE -> { data.startProgress(R.string.edziennik_progress_endpoint_timetable) - VulcanApiTimetable(data, onSuccess) + VulcanApiTimetable(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_MESSAGES_INBOX -> { data.startProgress(R.string.edziennik_progress_endpoint_messages_inbox) - VulcanApiMessagesInbox(data, onSuccess) + VulcanApiMessagesInbox(data, lastSync, onSuccess) } ENDPOINT_VULCAN_API_MESSAGES_SENT -> { data.startProgress(R.string.edziennik_progress_endpoint_messages_outbox) - VulcanApiMessagesSent(data, onSuccess) + VulcanApiMessagesSent(data, lastSync, onSuccess) } - else -> onSuccess() + else -> onSuccess(endpointId) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiAttendance.kt index f51adbea..2ec240a4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiAttendance.kt @@ -6,13 +6,16 @@ import pl.szczodrzynski.edziennik.data.api.VULCAN_API_ENDPOINT_ATTENDANCE import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_ATTENDANCE import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.Attendance.TYPE_PRESENT import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.utils.models.Date -class VulcanApiAttendance(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiAttendance(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiAttendance" } @@ -72,7 +75,7 @@ class VulcanApiAttendance(override val data: DataVulcan, val onSuccess: () -> Un } data.setSyncNext(ENDPOINT_VULCAN_API_ATTENDANCE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_ATTENDANCE) } - } ?: onSuccess()} + } ?: onSuccess(ENDPOINT_VULCAN_API_ATTENDANCE) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiDictionaries.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiDictionaries.kt index 2edc89d0..76f53cf5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiDictionaries.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiDictionaries.kt @@ -10,16 +10,13 @@ import pl.szczodrzynski.edziennik.data.api.VULCAN_API_ENDPOINT_DICTIONARIES import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_DICTIONARIES import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi -import pl.szczodrzynski.edziennik.data.db.entity.Attendance -import pl.szczodrzynski.edziennik.data.db.entity.AttendanceType -import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory -import pl.szczodrzynski.edziennik.data.db.entity.LessonRange -import pl.szczodrzynski.edziennik.data.db.entity.NoticeType -import pl.szczodrzynski.edziennik.data.db.entity.Subject -import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.data.db.entity.* import pl.szczodrzynski.edziennik.utils.models.Time -class VulcanApiDictionaries(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiDictionaries(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiDictionaries" } @@ -36,7 +33,7 @@ class VulcanApiDictionaries(override val data: DataVulcan, val onSuccess: () -> elements?.getJsonArray("KategorieFrekwencji")?.forEach { saveAttendanceType(it.asJsonObject) } data.setSyncNext(ENDPOINT_VULCAN_API_DICTIONARIES, 4 * DAY) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_DICTIONARIES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiEvents.kt index dc62744d..c55dac5d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiEvents.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiEvents.kt @@ -11,16 +11,20 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_HOMEWORK import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.getBoolean import pl.szczodrzynski.edziennik.getJsonArray import pl.szczodrzynski.edziennik.getLong import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.utils.models.Date -class VulcanApiEvents(override val data: DataVulcan, private val isHomework: Boolean, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiEvents(override val data: DataVulcan, + override val lastSync: Long?, + private val isHomework: Boolean, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiEvents" } @@ -102,7 +106,7 @@ class VulcanApiEvents(override val data: DataVulcan, private val isHomework: Boo data.setSyncNext(ENDPOINT_VULCAN_API_EVENTS, SYNC_ALWAYS) } } - onSuccess() + onSuccess(if (isHomework) ENDPOINT_VULCAN_API_HOMEWORK else ENDPOINT_VULCAN_API_EVENTS) } - } ?: onSuccess()} + } ?: onSuccess(if (isHomework) ENDPOINT_VULCAN_API_HOMEWORK else ENDPOINT_VULCAN_API_EVENTS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiGrades.kt index f6bc27ca..e6b939d0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiGrades.kt @@ -10,13 +10,16 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_GRADES import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi 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.Metadata +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import java.text.DecimalFormat import kotlin.math.roundToInt -class VulcanApiGrades(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiGrades(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiGrades" } @@ -112,7 +115,7 @@ class VulcanApiGrades(override val data: DataVulcan, val onSuccess: () -> Unit) data.toRemove.add(DataRemoveModel.Grades.semesterWithType(data.studentSemesterNumber, Grade.TYPE_NORMAL)) data.setSyncNext(ENDPOINT_VULCAN_API_GRADES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_GRADES) } - } ?: onSuccess()} + } ?: onSuccess(ENDPOINT_VULCAN_API_GRADES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesChangeStatus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesChangeStatus.kt index abe3cb8c..3a72c963 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesChangeStatus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesChangeStatus.kt @@ -14,11 +14,10 @@ import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.full.MessageFull -class VulcanApiMessagesChangeStatus( - override val data: DataVulcan, - private val messageObject: MessageFull, - val onSuccess: () -> Unit -) : VulcanApi(data) { +class VulcanApiMessagesChangeStatus(override val data: DataVulcan, + private val messageObject: MessageFull, + val onSuccess: () -> Unit +) : VulcanApi(data, null) { companion object { const val TAG = "VulcanApiMessagesChangeStatus" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesInbox.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesInbox.kt index 905504a4..e78b157e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesInbox.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesInbox.kt @@ -15,7 +15,10 @@ import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date import kotlin.text.replace -class VulcanApiMessagesInbox(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiMessagesInbox(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiMessagesInbox" } @@ -95,8 +98,8 @@ class VulcanApiMessagesInbox(override val data: DataVulcan, val onSuccess: () -> } data.setSyncNext(ENDPOINT_VULCAN_API_MESSAGES_INBOX, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_MESSAGES_INBOX) } - } ?: onSuccess() + } ?: onSuccess(ENDPOINT_VULCAN_API_MESSAGES_INBOX) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesSent.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesSent.kt index 4949d867..7437aab4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesSent.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiMessagesSent.kt @@ -19,7 +19,10 @@ import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date import kotlin.text.replace -class VulcanApiMessagesSent(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiMessagesSent(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiMessagesSent" } @@ -110,7 +113,7 @@ class VulcanApiMessagesSent(override val data: DataVulcan, val onSuccess: () -> } data.setSyncNext(ENDPOINT_VULCAN_API_MESSAGES_SENT, 1 * DAY, DRAWER_ITEM_MESSAGES) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_MESSAGES_SENT) } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiNotices.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiNotices.kt index 0c1180ac..b2202981 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiNotices.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiNotices.kt @@ -9,16 +9,19 @@ import pl.szczodrzynski.edziennik.data.api.VULCAN_API_ENDPOINT_NOTICES import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_NOTICES import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi -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.getJsonArray import pl.szczodrzynski.edziennik.getLong import pl.szczodrzynski.edziennik.getString import pl.szczodrzynski.edziennik.toSparseArray import pl.szczodrzynski.edziennik.utils.models.Date -class VulcanApiNotices(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiNotices(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiNotices" } @@ -61,7 +64,7 @@ class VulcanApiNotices(override val data: DataVulcan, val onSuccess: () -> Unit) } data.setSyncNext(ENDPOINT_VULCAN_API_NOTICES, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_NOTICES) } - } ?: onSuccess()} + } ?: onSuccess(ENDPOINT_VULCAN_API_NOTICES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiProposedGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiProposedGrades.kt index a4c0c292..e5c73cae 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiProposedGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiProposedGrades.kt @@ -2,18 +2,21 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.api import com.google.gson.JsonArray import pl.szczodrzynski.edziennik.HOUR +import pl.szczodrzynski.edziennik.asJsonObjectList import pl.szczodrzynski.edziennik.data.api.VULCAN_API_ENDPOINT_GRADES_PROPOSITIONS import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_GRADES_SUMMARY import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi -import pl.szczodrzynski.edziennik.asJsonObjectList import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.getJsonArray import pl.szczodrzynski.edziennik.getJsonObject import pl.szczodrzynski.edziennik.utils.Utils -class VulcanApiProposedGrades(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiProposedGrades(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiProposedGrades" } @@ -35,9 +38,9 @@ class VulcanApiProposedGrades(override val data: DataVulcan, val onSuccess: () - } data.setSyncNext(ENDPOINT_VULCAN_API_GRADES_SUMMARY, 6*HOUR) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_GRADES_SUMMARY) } - } ?: onSuccess()} + } ?: onSuccess(ENDPOINT_VULCAN_API_GRADES_SUMMARY) } private fun processGradeList(grades: JsonArray, isFinal: Boolean) { grades.asJsonObjectList()?.forEach { grade -> diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiSendMessage.kt index db3fe345..c7f7b29e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiSendMessage.kt @@ -14,13 +14,12 @@ import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher -class VulcanApiSendMessage( - override val data: DataVulcan, - val recipients: List, - val subject: String, - val text: String, - val onSuccess: () -> Unit -) : VulcanApi(data) { +class VulcanApiSendMessage(override val data: DataVulcan, + val recipients: List, + val subject: String, + val text: String, + val onSuccess: () -> Unit +) : VulcanApi(data, null) { companion object { private const val TAG = "VulcanApiSendMessage" } @@ -52,7 +51,7 @@ class VulcanApiSendMessage( return@apiGet } - VulcanApiMessagesSent(data) { + VulcanApiMessagesSent(data, null) { val message = data.messageIgnoreList.firstOrNull { it.type == Message.TYPE_SENT && it.subject == subject } val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == messageId } val event = MessageSentEvent(data.profileId, message, metadata?.addedDate) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTemplate.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTemplate.kt index adda3dd0..4148be44 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTemplate.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTemplate.kt @@ -7,7 +7,10 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.api import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi -class VulcanApiTemplate(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiTemplate(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApi" } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTimetable.kt index 6c4aba9d..ac621ec7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiTimetable.kt @@ -12,17 +12,16 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_API_TIMETABLE import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel -import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.data.db.entity.Subject -import pl.szczodrzynski.edziennik.data.db.entity.Team -import pl.szczodrzynski.edziennik.data.db.entity.Lesson +import pl.szczodrzynski.edziennik.data.db.entity.* import pl.szczodrzynski.edziennik.utils.Utils.crc16 import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Week -class VulcanApiTimetable(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiTimetable(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiTimetable" } @@ -207,7 +206,7 @@ class VulcanApiTimetable(override val data: DataVulcan, val onSuccess: () -> Uni data.toRemove.add(DataRemoveModel.Timetable.between(weekStart, weekEnd)) data.setSyncNext(ENDPOINT_VULCAN_API_TIMETABLE, SYNC_ALWAYS) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_TIMETABLE) } }} } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiUpdateSemester.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiUpdateSemester.kt index a5ce9189..1f03484c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiUpdateSemester.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/api/VulcanApiUpdateSemester.kt @@ -13,7 +13,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanApi import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.utils.models.Date -class VulcanApiUpdateSemester(override val data: DataVulcan, val onSuccess: () -> Unit) : VulcanApi(data) { +class VulcanApiUpdateSemester(override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanApi(data, lastSync) { companion object { const val TAG = "VulcanApiUpdateSemester" } @@ -68,7 +71,7 @@ class VulcanApiUpdateSemester(override val data: DataVulcan, val onSuccess: () - } data.setSyncNext(ENDPOINT_VULCAN_API_UPDATE_SEMESTER, if (data.studentSemesterNumber == 2) 7*DAY else 2*DAY) - onSuccess() + onSuccess(ENDPOINT_VULCAN_API_UPDATE_SEMESTER) } - } ?: onSuccess()} + } ?: onSuccess(ENDPOINT_VULCAN_API_UPDATE_SEMESTER) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt index f8d317ac..291cb37b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt @@ -20,7 +20,7 @@ class VulcanFirstLogin(val data: DataVulcan, val onSuccess: () -> Unit) { const val TAG = "VulcanFirstLogin" } - private val api = VulcanApi(data) + private val api = VulcanApi(data, null) private val profileList = mutableListOf() init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginApi.kt index cd83c926..231afaed 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginApi.kt @@ -54,7 +54,7 @@ class VulcanLoginApi(val data: DataVulcan, val onSuccess: () -> Unit) { && data.symbol.isNotNullNorEmpty()) { // (see data.isApiLoginValid()) // the semester end date is over - VulcanApiUpdateSemester(data, onSuccess) + VulcanApiUpdateSemester(data, null) { onSuccess() } return@run } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt index 0292499f..482eb9f8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt @@ -55,10 +55,10 @@ abstract class Data(val app: App, val profile: Profile?, val loginStore: LoginSt */ var targetLoginMethodIds = mutableListOf() /** - * A list of endpoint IDs that are still pending + * A map of endpoint ID to last sync time, that are still pending * to run. */ - var targetEndpointIds = mutableListOf() + var targetEndpointIds = sortedMapOf() /** * A count of all network requests to do. */