diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Constants.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Constants.kt index dda53fd9..8eeefdb9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Constants.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Constants.kt @@ -127,6 +127,7 @@ const val VULCAN_WEB_ENDPOINT_LUCKY_NUMBER = "Start.mvc/GetKidsLuckyNumbers" const val VULCAN_WEB_ENDPOINT_REGISTER_DEVICE = "RejestracjaUrzadzeniaToken.mvc/Get" const val VULCAN_HEBE_ENDPOINT_REGISTER_NEW = "api/mobile/register/new" const val VULCAN_HEBE_ENDPOINT_MAIN = "api/mobile/register/hebe" +const val VULCAN_HEBE_ENDPOINT_PUSH_ALL = "api/mobile/push/all" const val VULCAN_HEBE_ENDPOINT_TIMETABLE = "api/mobile/schedule" const val VULCAN_HEBE_ENDPOINT_TIMETABLE_CHANGES = "api/mobile/schedule/changes" const val VULCAN_HEBE_ENDPOINT_ADDRESSBOOK = "api/mobile/addressbook" diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/VulcanFeatures.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/VulcanFeatures.kt index 9444c224..1d305a9e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/VulcanFeatures.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/VulcanFeatures.kt @@ -19,8 +19,11 @@ const val ENDPOINT_VULCAN_API_NOTICES = 1070 const val ENDPOINT_VULCAN_API_ATTENDANCE = 1080 const val ENDPOINT_VULCAN_API_MESSAGES_INBOX = 1090 const val ENDPOINT_VULCAN_API_MESSAGES_SENT = 1100 + const val ENDPOINT_VULCAN_WEB_LUCKY_NUMBERS = 2010 + const val ENDPOINT_VULCAN_HEBE_MAIN = 3000 +const val ENDPOINT_VULCAN_HEBE_PUSH_CONFIG = 3005 const val ENDPOINT_VULCAN_HEBE_ADDRESSBOOK = 3010 const val ENDPOINT_VULCAN_HEBE_TIMETABLE = 3020 const val ENDPOINT_VULCAN_HEBE_EXAMS = 3030 @@ -92,6 +95,11 @@ val VulcanFeatures = listOf( ), listOf(LOGIN_METHOD_VULCAN_API)).withShouldSync { data -> !data.app.config.sync.tokenVulcanList.contains(data.profileId) }, + Feature(LOGIN_TYPE_VULCAN, FEATURE_PUSH_CONFIG, listOf( + ENDPOINT_VULCAN_HEBE_PUSH_CONFIG to LOGIN_METHOD_VULCAN_HEBE + ), listOf(LOGIN_METHOD_VULCAN_HEBE)).withShouldSync { data -> + !data.app.config.sync.tokenVulcanList.contains(data.profileId) + }, /** * Lucky number - using WEB Main. 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 79310249..0105abc2 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 @@ -148,6 +148,10 @@ class VulcanData(val data: DataVulcan, val onSuccess: () -> Unit) { onSuccess(ENDPOINT_VULCAN_HEBE_MAIN) } } + ENDPOINT_VULCAN_HEBE_PUSH_CONFIG -> { + data.startProgress(R.string.edziennik_progress_endpoint_push_config) + VulcanHebePushConfig(data, lastSync, onSuccess) + } ENDPOINT_VULCAN_HEBE_ADDRESSBOOK -> { data.startProgress(R.string.edziennik_progress_endpoint_teachers) VulcanHebeAddressbook(data, lastSync, onSuccess) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebePushConfig.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebePushConfig.kt new file mode 100644 index 00000000..fdf81bcb --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebePushConfig.kt @@ -0,0 +1,36 @@ +/* + * Copyright (c) Kuba SzczodrzyƄski 2021-2-22. + */ + +package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.hebe + +import com.google.gson.JsonPrimitive +import pl.szczodrzynski.edziennik.data.api.VULCAN_HEBE_ENDPOINT_PUSH_ALL +import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan +import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_HEBE_PUSH_CONFIG +import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe +import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS + +class VulcanHebePushConfig( + override val data: DataVulcan, + override val lastSync: Long?, + val onSuccess: (endpointId: Int) -> Unit +) : VulcanHebe(data, lastSync) { + companion object { + const val TAG = "VulcanHebePushConfig" + } + + init { + apiPost( + TAG, + VULCAN_HEBE_ENDPOINT_PUSH_ALL, + payload = JsonPrimitive("on") + ) { _: Boolean, _ -> + // sync always: this endpoint has .shouldSync set + data.setSyncNext(ENDPOINT_VULCAN_HEBE_PUSH_CONFIG, SYNC_ALWAYS) + data.app.config.sync.tokenVulcanList = + data.app.config.sync.tokenVulcanList + profileId + onSuccess(ENDPOINT_VULCAN_HEBE_PUSH_CONFIG) + } + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt index b7d3af9e..06c2f171 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt @@ -29,6 +29,7 @@ class SzkolnyVulcanFirebase(val app: App, val profiles: List, val messa val data = message.data.getString("data")?.toJsonObject() ?: return@run val type = data.getString("table") ?: return@run val studentId = data.getInt("pupilid") + val loginId = data.getInt("loginid") /* pl.vulcan.uonetmobile.auxilary.enums.CDCPushEnum */ val viewIdPair = when (type.toLowerCase(Locale.ROOT)) { @@ -42,8 +43,9 @@ class SzkolnyVulcanFirebase(val app: App, val profiles: List, val messa } val tasks = profiles.filter { - it.loginStoreType == LOGIN_TYPE_VULCAN && - it.getStudentData("studentId", 0) == studentId + it.loginStoreType == LOGIN_TYPE_VULCAN + && (it.getStudentData("studentId", 0) == studentId + || it.getStudentData("studentLoginId", 0) == loginId) }.map { EdziennikTask.syncProfile(it.id, listOf(viewIdPair)) }