Skip to content

Commit 54693bf

Browse files
committed
Merge branch 'develop-v4'
2 parents f2a20c3 + 02a9724 commit 54693bf

36 files changed

+877
-96
lines changed

.github/workflows/_build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ jobs:
183183
run: python $GITHUB_WORKSPACE/.github/utils/webhook_discord.py $GITHUB_WORKSPACE >> $GITHUB_OUTPUT
184184

185185
- name: Upload workflow artifact
186-
uses: actions/upload-artifact@v2
186+
uses: actions/upload-artifact@v4
187187
if: always()
188188
with:
189189
name: ${{ steps.changelog.outputs.appVersionName }}

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Release
22
on:
33
push:
4-
tags: ["v*.*.*"]
4+
tags: ["v*.*"]
55
jobs:
66
build:
77
name: Build release (APK)
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
<h3>Wersja 4.13.7, 2024-07-08</h3>
1+
<h3>Wersja 4.14, 2025-02-02</h3>
22
<ul>
3-
<li>Dodano opcję uruchomienia aplikacji bez logowania.</li>
3+
<li>USOS: <b>dodano obsługę ocen</b>.</li>
4+
<li>USOS: obliczanie średniej za studia oraz punktów ECTS.</li>
5+
<li>USOS: poprawiono brak planu zajęć po rozpoczęciu roku.</li>
6+
<li>Wyłączono archiwizator profili.</li>
47
</ul>
58
<br>
69
<br>
710
Dzięki za korzystanie ze Szkolnego!<br>
8-
<i>&copy; [Kuba Szczodrzyński](@kuba2k2) 2023</i>
11+
<i>&copy; [Kuba Szczodrzyński](@kuba2k2) 2025</i>

app/src/main/cpp/szkolny-signing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/*secret password - removed for source code publication*/
1111
static toys AES_IV[16] = {
12-
0x0e, 0x87, 0x6d, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
12+
0xee, 0x23, 0xf1, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
1313

1414
unsigned char *agony(unsigned int laugh, unsigned char *box, unsigned char *heat);
1515

app/src/main/java/pl/szczodrzynski/edziennik/App.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,14 @@ class App : MultiDexApplication(), Configuration.Provider, CoroutineScope {
241241
withContext(Dispatchers.Default) {
242242
config.migrate(this@App)
243243

244+
if (config.appVersionCore < BuildConfig.VERSION_CODE) {
245+
// force syncing all endpoints on update
246+
db.endpointTimerDao().clear()
247+
config.sync.lastAppSync = 0L
248+
config.hash = "invalid"
249+
config.appVersionCore = BuildConfig.VERSION_CODE
250+
}
251+
244252
SSLProviderInstaller.install(applicationContext, this@App::buildHttp)
245253

246254
if (config.devModePassword != null)

app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class Config(db: AppDb) : BaseConfig(db) {
4343
var appInstalledTime by config<Long>(0L)
4444
var appRateSnackbarTime by config<Long>(0L)
4545
var appVersion by config<Int>(BuildConfig.VERSION_CODE)
46+
var appVersionCore by config<Int>(0)
4647
var validation by config<String?>(null, "buildValidation")
4748

4849
var archiverEnabled by config<Boolean>(true)

app/src/main/java/pl/szczodrzynski/edziennik/config/ProfileConfigGrades.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
package pl.szczodrzynski.edziennik.config
66

7+
import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.UNIVERSITY_AVERAGE_MODE_ECTS
78
import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.COLOR_MODE_WEIGHTED
89
import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.YEAR_ALL_GRADES
910

@@ -15,8 +16,11 @@ class ProfileConfigGrades(base: ProfileConfig) {
1516
var dontCountEnabled by base.config<Boolean>(false)
1617
var dontCountGrades by base.config<List<String>> { listOf() }
1718
var hideImproved by base.config<Boolean>(false)
19+
var hideNoGrade by base.config<Boolean>(false)
1820
var hideSticksFromOld by base.config<Boolean>(false)
1921
var minusValue by base.config<Float?>(null)
2022
var plusValue by base.config<Float?>(null)
2123
var yearAverageMode by base.config<Int>(YEAR_ALL_GRADES)
24+
var universityAverageMode by base.config<Int>(UNIVERSITY_AVERAGE_MODE_ECTS)
25+
var countEctsInProgress by base.config<Boolean>(false)
2226
}

app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTa
114114
}
115115
}
116116

117+
if (profile?.empty == true) {
118+
// force app sync on first login
119+
app.config.sync.lastAppSync = 0L
120+
}
121+
117122
edziennikInterface = when (loginStore.type) {
118123
LoginType.LIBRUS -> Librus(app, profile, loginStore, taskCallback)
119124
LoginType.MOBIDZIENNIK -> Mobidziennik(app, profile, loginStore, taskCallback)

app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/usos/DataUsos.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
package pl.szczodrzynski.edziennik.data.api.edziennik.usos
66

7+
import com.google.gson.JsonObject
78
import pl.szczodrzynski.edziennik.App
89
import pl.szczodrzynski.edziennik.data.api.models.Data
910
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
@@ -73,4 +74,9 @@ class DataUsos(
7374
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
7475
set(value) { profile["studentId"] = value; mStudentId = value }
7576
private var mStudentId: Int? = null
77+
78+
var termNames: Map<String, String> = mapOf()
79+
get() { mTermNames = mTermNames ?: profile?.getStudentData("termNames", null)?.let { app.gson.fromJson(it, field.toMutableMap()::class.java) }; return mTermNames ?: mapOf() }
80+
set(value) { profile["termNames"] = app.gson.toJson(value); mTermNames = value }
81+
private var mTermNames: Map<String, String>? = null
7682
}

app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/usos/UsosFeatures.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
1010
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
1111
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
1212

13-
const val ENDPOINT_USOS_API_USER = 7000
14-
const val ENDPOINT_USOS_API_TERMS = 7010
15-
const val ENDPOINT_USOS_API_COURSES = 7020
16-
const val ENDPOINT_USOS_API_TIMETABLE = 7030
13+
const val ENDPOINT_USOS_API_USER = 7000
14+
const val ENDPOINT_USOS_API_TERMS = 7010
15+
const val ENDPOINT_USOS_API_COURSES = 7020
16+
const val ENDPOINT_USOS_API_TIMETABLE = 7030
17+
const val ENDPOINT_USOS_API_ECTS_POINTS = 7040
18+
const val ENDPOINT_USOS_API_EXAM_REPORTS = 7050
1719

1820
val UsosFeatures = listOf(
1921
/*
@@ -39,4 +41,12 @@ val UsosFeatures = listOf(
3941
Feature(LoginType.USOS, FeatureType.TIMETABLE, listOf(
4042
ENDPOINT_USOS_API_TIMETABLE to LoginMethod.USOS_API,
4143
)),
44+
45+
/*
46+
* Grades
47+
*/
48+
Feature(LoginType.USOS, FeatureType.GRADES, listOf(
49+
ENDPOINT_USOS_API_ECTS_POINTS to LoginMethod.USOS_API,
50+
ENDPOINT_USOS_API_EXAM_REPORTS to LoginMethod.USOS_API,
51+
)),
4252
)

0 commit comments

Comments
 (0)