diff --git a/app/src/main/assets/pl-changelog.html b/app/src/main/assets/pl-changelog.html
index af4aaca4..173d3877 100644
--- a/app/src/main/assets/pl-changelog.html
+++ b/app/src/main/assets/pl-changelog.html
@@ -1,8 +1,6 @@
-
Wersja 4.13.6, 2023-03-24
+Wersja 4.13.7, 2024-07-08
- - Naprawiono pobieranie załączników na Androidzie 13 i nowszym.
- - Dodano opcję odświeżenia planu lekcji na wybrany tydzień.
- - Usunięto błędy logowania. @BxOxSxS
+ - Dodano opcję uruchomienia aplikacji bez logowania.
diff --git a/app/src/main/cpp/szkolny-signing.cpp b/app/src/main/cpp/szkolny-signing.cpp
index 9ae8f745..089e9025 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] = {
- 0x6d, 0xa5, 0x32, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+ 0x0e, 0x87, 0x6d, 0xaa, 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/EdziennikTask.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt
index 97c42482..ad52ba1c 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt
@@ -9,6 +9,7 @@ import org.greenrobot.eventbus.EventBus
import pl.szczodrzynski.edziennik.App
import pl.szczodrzynski.edziennik.R
import pl.szczodrzynski.edziennik.data.api.ERROR_PROFILE_ARCHIVED
+import pl.szczodrzynski.edziennik.data.api.edziennik.demo.Demo
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.Librus
import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.Mobidziennik
import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.Podlasie
@@ -120,6 +121,7 @@ open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTa
LoginType.PODLASIE -> Podlasie(app, profile, loginStore, taskCallback)
LoginType.TEMPLATE -> Template(app, profile, loginStore, taskCallback)
LoginType.USOS -> Usos(app, profile, loginStore, taskCallback)
+ LoginType.DEMO -> Demo(app, profile, loginStore, taskCallback)
else -> null
}
if (edziennikInterface == null) {
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/demo/Demo.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/demo/Demo.kt
new file mode 100644
index 00000000..0d24e882
--- /dev/null
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/demo/Demo.kt
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) Kuba Szczodrzyński 2024-7-8.
+ */
+
+package pl.szczodrzynski.edziennik.data.api.edziennik.demo
+
+import com.google.gson.JsonObject
+import org.greenrobot.eventbus.EventBus
+import pl.szczodrzynski.edziennik.App
+import pl.szczodrzynski.edziennik.data.api.events.FirstLoginFinishedEvent
+import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikCallback
+import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface
+import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
+import pl.szczodrzynski.edziennik.data.db.entity.Profile
+import pl.szczodrzynski.edziennik.data.db.entity.Teacher
+import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull
+import pl.szczodrzynski.edziennik.data.db.full.EventFull
+import pl.szczodrzynski.edziennik.data.db.full.MessageFull
+import pl.szczodrzynski.edziennik.data.enums.FeatureType
+import pl.szczodrzynski.edziennik.data.enums.LoginType
+
+class Demo(
+ val app: App,
+ val profile: Profile?,
+ val loginStore: LoginStore,
+ val callback: EdziennikCallback,
+) : EdziennikInterface {
+
+ private fun completed() {
+ callback.onCompleted()
+ }
+
+ override fun sync(
+ featureTypes: Set?,
+ onlyEndpoints: Set?,
+ arguments: JsonObject?,
+ ) = completed()
+
+ override fun getMessage(message: MessageFull) =
+ completed()
+
+ override fun sendMessage(recipients: Set, subject: String, text: String) =
+ completed()
+
+ override fun markAllAnnouncementsAsRead() =
+ completed()
+
+ override fun getAnnouncement(announcement: AnnouncementFull) =
+ completed()
+
+ override fun getAttachment(owner: Any, attachmentId: Long, attachmentName: String) =
+ completed()
+
+ override fun getRecipientList() =
+ completed()
+
+ override fun getEvent(eventFull: EventFull) =
+ completed()
+
+ override fun firstLogin() {
+ val profile = Profile(
+ id = loginStore.id,
+ loginStoreId = loginStore.id,
+ loginStoreType = LoginType.DEMO,
+ name = "Jan Szkolny",
+ subname = "Szkolny.eu",
+ studentNameLong = "Jan Szkolny",
+ studentNameShort = "Jan S.",
+ accountName = null,
+ )
+ profile.apply {
+ empty = false
+ syncEnabled = false
+ registration = Profile.REGISTRATION_DISABLED
+ studentClassName = "1A"
+ userCode = "nologin:1234"
+ dateYearEnd.month = 8
+ }
+ EventBus.getDefault().postSticky(FirstLoginFinishedEvent(listOf(profile), loginStore))
+ completed()
+ }
+
+ override fun cancel() {}
+}
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 0d1fed43..507d2e4c 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
@@ -47,6 +47,6 @@ object Signing {
/*fun provideKey(param1: String, param2: Long): ByteArray {*/
fun pleaseStopRightNow(param1: String, param2: Long): ByteArray {
- return "$param1.MTIzNDU2Nzg5MD01uMP7oW===.$param2".sha256()
+ return "$param1.MTIzNDU2Nzg5MD0WAYwfGc===.$param2".sha256()
}
}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt
index 2bc36605..e590c448 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt
@@ -17,4 +17,5 @@ enum class LoginMode(
VULCAN_HEBE(LoginType.VULCAN, id = 402),
PODLASIE_API(LoginType.PODLASIE, id = 600),
USOS_OAUTH(LoginType.USOS, id = 700),
+ DEMO(LoginType.DEMO, id = 800),
}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt
index 1709d160..f39f42c6 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt
@@ -14,7 +14,7 @@ enum class LoginType(
VULCAN(id = 4, features = FEATURES_VULCAN),
PODLASIE(id = 6, features = FEATURES_PODLASIE),
USOS(id = 7, features = FEATURES_USOS, schoolType = SchoolType.UNIVERSITY),
- DEMO(id = 20, features = setOf()),
+ DEMO(id = 8, features = setOf()),
TEMPLATE(id = 21, features = setOf()),
// the graveyard
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt
index 601b49af..116afc2d 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt
@@ -17,6 +17,7 @@ import pl.szczodrzynski.edziennik.R
import pl.szczodrzynski.edziennik.data.config.AppData
import pl.szczodrzynski.edziennik.data.db.entity.Profile
import pl.szczodrzynski.edziennik.data.enums.FeatureType
+import pl.szczodrzynski.edziennik.data.enums.LoginType
import pl.szczodrzynski.edziennik.utils.ProfileImageHolder
import pl.szczodrzynski.edziennik.utils.models.Date
import pl.szczodrzynski.navlib.ImageHolder
@@ -71,6 +72,8 @@ fun Profile.getAppData() =
if (App.profileId == this.id) App.data else AppData.get(this.loginStoreType)
fun Profile.shouldArchive(): Boolean {
+ if (loginStoreType == LoginType.DEMO)
+ return false
// vulcan hotfix
if (dateYearEnd.month > 6) {
dateYearEnd.month = 6
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt
index f013b218..48853da7 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt
@@ -209,7 +209,7 @@ class LoginChooserFragment : Fragment(), CoroutineScope {
adapter.items.removeAll { it !is LoginInfo.Register }
adapter.items.add(
LoginInfo.Register(
- loginType = LoginType.DEMO,
+ loginType = LoginType.TEMPLATE,
registerName = R.string.eggs,
registerLogo = R.drawable.face_1,
loginModes = listOf(
@@ -253,13 +253,13 @@ class LoginChooserFragment : Fragment(), CoroutineScope {
loginType: LoginInfo.Register,
loginMode: LoginInfo.Mode
) {
- if (loginType.loginType == LoginType.DEMO) {
- nav.navigate(R.id.loginEggsFragment, null, activity.navOptions)
- return
- }
-
if (loginType.loginType == LoginType.TEMPLATE) {
- nav.navigate(R.id.labFragment, null, activity.navOptions)
+ when (loginType.registerName) {
+ R.string.eggs ->
+ nav.navigate(R.id.loginEggsFragment, null, activity.navOptions)
+ R.string.menu_lab ->
+ nav.navigate(R.id.labFragment, null, activity.navOptions)
+ }
return
}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt
index 1dd479dc..7d43dc0a 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt
@@ -328,6 +328,21 @@ object LoginInfo {
),
),
),
+ Register(
+ loginType = LoginType.DEMO,
+ registerName = R.string.login_type_demo,
+ registerLogo = R.mipmap.ic_launcher_v5,
+ loginModes = listOf(
+ Mode(
+ loginMode = LoginMode.DEMO,
+ name = R.string.login_mode_demo,
+ icon = R.mipmap.ic_launcher_v5,
+ guideText = R.string.login_mode_demo,
+ credentials = listOf(),
+ errorCodes = mapOf(),
+ ),
+ ),
+ ),
)
}
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 0fd6ed3d..cc26718f 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -1434,4 +1434,6 @@
Agenda settings
Share notes
All lessons:
+ Use without login
+ Demo version
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3d52b857..2d485468 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1554,6 +1554,8 @@
Wszystkie lekcje:
Wyświetl nazwę przedmiotu zamiast rodzaju
Odśwież wybrany tydzień
+ Użyj bez logowania
+ Wersja demonstracyjna
Zwyczajny
Morski
Zielony
diff --git a/build.gradle b/build.gradle
index d4c8087d..4f0dfc8d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,8 +5,8 @@ buildscript {
kotlin_version = '1.9.24'
release = [
- versionName: "4.13.6",
- versionCode: 4130699
+ versionName: "4.13.7",
+ versionCode: 4130799
]
setup = [