diff --git a/app/build.gradle b/app/build.gradle index 2c525d23..57334e8f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,9 +70,11 @@ android { sourceSets { unofficial { java.srcDirs = ["src/main/java", "src/play-not/java"] + manifest.srcFile("src/play-not/AndroidManifest.xml") } official { java.srcDirs = ["src/main/java", "src/play-not/java"] + manifest.srcFile("src/play-not/AndroidManifest.xml") } play { java.srcDirs = ["src/main/java", "src/play/java"] diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2635faf7..c5c273b4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,7 +3,6 @@ xmlns:tools="http://schemas.android.com/tools" package="pl.szczodrzynski.edziennik"> - diff --git a/app/src/main/assets/pl-changelog.html b/app/src/main/assets/pl-changelog.html index 3164d7dc..2548b456 100644 --- a/app/src/main/assets/pl-changelog.html +++ b/app/src/main/assets/pl-changelog.html @@ -1,6 +1,7 @@ -

Wersja 4.11.8, 2022-09-17

+

Wersja 4.12.1, 2022-09-23

  • Vulcan UONET+: naprawiono działanie systemu wiadomości. @Antoni-Czaplicki
  • +
  • Vulcan UONET+: naprawiono błędy wersji 4.11.9 i starszych.
  • Poprawiono wyświetlanie lekcji odwołanych na stronie głównej.
  • Dodano dostęp do Laboratorium na ekranie logowania.
  • Usunięto obsługę dziennika EduDziennik. [*]
  • diff --git a/app/src/main/cpp/szkolny-signing.cpp b/app/src/main/cpp/szkolny-signing.cpp index 35e96eb0..639ca56e 100644 --- a/app/src/main/cpp/szkolny-signing.cpp +++ b/app/src/main/cpp/szkolny-signing.cpp @@ -9,7 +9,7 @@ /*secret password - removed for source code publication*/ static toys AES_IV[16] = { - 0xb2, 0x96, 0xab, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + 0xdf, 0xe4, 0x2d, 0xa3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; unsigned char *agony(unsigned int laugh, unsigned char *box, unsigned char *heat); 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 857a596e..4def0214 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 @@ -12,7 +12,7 @@ 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_ADDRESSBOOK_2 = 3011 +const val ENDPOINT_VULCAN_HEBE_ADDRESSBOOK_2 = 3501 // after message boxes (3500) const val ENDPOINT_VULCAN_HEBE_TIMETABLE = 3020 const val ENDPOINT_VULCAN_HEBE_EXAMS = 3030 const val ENDPOINT_VULCAN_HEBE_GRADES = 3040 @@ -87,8 +87,8 @@ val VulcanFeatures = listOf( Feature(LOGIN_TYPE_VULCAN, FEATURE_ALWAYS_NEEDED, listOf( ENDPOINT_VULCAN_HEBE_MAIN to LOGIN_METHOD_VULCAN_HEBE, ENDPOINT_VULCAN_HEBE_ADDRESSBOOK to LOGIN_METHOD_VULCAN_HEBE, - ENDPOINT_VULCAN_HEBE_ADDRESSBOOK_2 to LOGIN_METHOD_VULCAN_HEBE, ENDPOINT_VULCAN_HEBE_TEACHERS to LOGIN_METHOD_VULCAN_HEBE, ENDPOINT_VULCAN_HEBE_MESSAGE_BOXES to LOGIN_METHOD_VULCAN_HEBE, + ENDPOINT_VULCAN_HEBE_ADDRESSBOOK_2 to LOGIN_METHOD_VULCAN_HEBE, ), listOf(LOGIN_METHOD_VULCAN_HEBE)) ) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook2.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook2.kt index 1a6606d0..2ac843a2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook2.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook2.kt @@ -14,6 +14,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Teacher.Companion.TYPE_PARENT import pl.szczodrzynski.edziennik.data.db.entity.Teacher.Companion.TYPE_STUDENT import pl.szczodrzynski.edziennik.data.db.entity.Teacher.Companion.TYPE_TEACHER import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.MINUTE import pl.szczodrzynski.edziennik.ext.getString class VulcanHebeAddressbook2( @@ -25,7 +26,13 @@ class VulcanHebeAddressbook2( const val TAG = "VulcanHebeAddressbook2" } - init { + init { let { + if (data.messageBoxKey == null) { + data.setSyncNext(ENDPOINT_VULCAN_HEBE_ADDRESSBOOK_2, 30 * MINUTE) + onSuccess(ENDPOINT_VULCAN_HEBE_ADDRESSBOOK_2) + return@let + } + apiGetList( TAG, VULCAN_HEBE_ENDPOINT_MESSAGEBOX_ADDRESSBOOK, @@ -50,5 +57,5 @@ class VulcanHebeAddressbook2( data.setSyncNext(ENDPOINT_VULCAN_HEBE_ADDRESSBOOK_2, 2 * DAY) onSuccess(ENDPOINT_VULCAN_HEBE_ADDRESSBOOK_2) } - } + }} } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessageBoxes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessageBoxes.kt index e1c03aff..df6613ba 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessageBoxes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessageBoxes.kt @@ -26,16 +26,24 @@ class VulcanHebeMessageBoxes( VULCAN_HEBE_ENDPOINT_MESSAGEBOX, lastSync = lastSync ) { list, _ -> + var found = false for (messageBox in list) { val name = messageBox.getString("Name") ?: continue val studentName = profile?.studentNameLong ?: continue - if (!name.startsWith(studentName)) + if (!name.contains(studentName)) continue data.messageBoxKey = messageBox.getString("GlobalKey") data.messageBoxName = name + found = true break } + if (!found && list.isNotEmpty()) { + list.firstOrNull()?.let { messageBox -> + data.messageBoxKey = messageBox.getString("GlobalKey") + data.messageBoxName = messageBox.getString("Name") + } + } data.setSyncNext(ENDPOINT_VULCAN_HEBE_MESSAGE_BOXES, 7 * DAY) onSuccess(ENDPOINT_VULCAN_HEBE_MESSAGE_BOXES) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt index 29f37e62..affca1e1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt @@ -98,9 +98,6 @@ class VulcanHebeMessages( val receivers = message.getJsonArray("Receiver") ?.asJsonObjectList() ?: return@forEach - val receiverReadDate = - if (receivers.size == 1) readDate - else -1 for (receiver in receivers) { val recipientId = if (messageType == TYPE_SENT) @@ -108,6 +105,8 @@ class VulcanHebeMessages( else -1 + val receiverReadDate = receiver.getLong("HasRead", -1) + val messageRecipientObject = MessageRecipient( profileId, recipientId, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt index f0090a9c..2144a768 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt @@ -24,7 +24,7 @@ class VulcanHebeMessagesChangeStatus( } init { let { - val messageKey = messageObject.body?.let { data.parseMessageMeta(it) }?.get("globalKey") ?: run { + val messageKey = messageObject.body?.let { data.parseMessageMeta(it) }?.get("uuid") ?: run { EventBus.getDefault().postSticky(MessageGetEvent(messageObject)) onSuccess() return@let diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt index d4cff130..24f28c3c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt @@ -46,6 +46,6 @@ object Signing { /*fun provideKey(param1: String, param2: Long): ByteArray {*/ fun pleaseStopRightNow(param1: String, param2: Long): ByteArray { - return "$param1.MTIzNDU2Nzg5MDYFZwkReL===.$param2".sha256() + return "$param1.MTIzNDU2Nzg5MDJgAI/q8c===.$param2".sha256() } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt index 819acbbd..3c5a26ca 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt @@ -156,12 +156,12 @@ class LoginFormFragment : Fragment(), CoroutineScope { } if (credential.qrDecoderClass != null) { + b.textLayout.endIconMode = TextInputLayout.END_ICON_CUSTOM b.textLayout.endIconDrawable = IconicsDrawable(activity).apply { icon = CommunityMaterial.Icon3.cmd_qrcode sizeDp = 24 colorAttr(activity, R.attr.colorOnBackground) } - b.textLayout.endIconMode = TextInputLayout.END_ICON_CUSTOM b.textLayout.setEndIconOnClickListener { scanQrCode(credential) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt index 87da09a8..60eeb6cc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt @@ -409,7 +409,7 @@ class WidgetTimetableProvider : AppWidgetProvider() { // create an intent used to display the lesson details dialog val itemIntent = Intent(app, LessonDialogActivity::class.java) itemIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK/* or Intent.FLAG_ACTIVITY_CLEAR_TASK*/) - val itemPendingIntent = PendingIntent.getActivity(app, appWidgetId, itemIntent, pendingIntentFlag()) + val itemPendingIntent = PendingIntent.getActivity(app, appWidgetId, itemIntent, PendingIntent.FLAG_MUTABLE) views.setPendingIntentTemplate(R.id.widgetTimetableListView, itemPendingIntent) if (!unified) diff --git a/app/src/play-not/AndroidManifest.xml b/app/src/play-not/AndroidManifest.xml new file mode 100644 index 00000000..a8cdcffd --- /dev/null +++ b/app/src/play-not/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/build.gradle b/build.gradle index 3088163b..7b8133d1 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,8 @@ buildscript { kotlin_version = '1.6.10' release = [ - versionName: "4.11.8", - versionCode: 4110899 + versionName: "4.12.1", + versionCode: 4120199 ] setup = [