[API] Fix for syncing new profiles after archiving.

This commit is contained in:
Kuba Szczodrzyński 2020-08-27 00:10:19 +02:00
parent e40871c0d0
commit 281b6a95ef
3 changed files with 16 additions and 2 deletions

View File

@ -409,9 +409,10 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
} }
app.db.profileDao().all.observe(this, Observer { profiles -> app.db.profileDao().all.observe(this, Observer { profiles ->
drawer.setProfileList(profiles.filter { it.id >= 0 && !it.archived }.toMutableList()) val allArchived = profiles.all { it.archived }
drawer.setProfileList(profiles.filter { it.id >= 0 && (!it.archived || allArchived) }.toMutableList())
//prepend the archived profile if loaded //prepend the archived profile if loaded
if (app.profile.archived) { if (app.profile.archived && !allArchived) {
drawer.prependProfile(Profile( drawer.prependProfile(Profile(
id = app.profile.id, id = app.profile.id,
loginStoreId = app.profile.loginStoreId, loginStoreId = app.profile.loginStoreId,

View File

@ -65,6 +65,11 @@ class ProfileArchiver(val app: App, val profile: Profile) {
LOGIN_TYPE_VULCAN -> { LOGIN_TYPE_VULCAN -> {
// DataVulcan.isApiLoginValid() returns false so it will update the semester // DataVulcan.isApiLoginValid() returns false so it will update the semester
profile.removeStudentData("currentSemesterEndDate") profile.removeStudentData("currentSemesterEndDate")
profile.removeStudentData("studentSemesterId")
profile.removeStudentData("studentSemesterNumber")
profile.removeStudentData("semester1Id")
profile.removeStudentData("semester2Id")
profile.removeStudentData("studentClassId")
} }
LOGIN_TYPE_IDZIENNIK -> { LOGIN_TYPE_IDZIENNIK -> {
profile.removeStudentData("schoolYearId") profile.removeStudentData("schoolYearId")

View File

@ -70,6 +70,14 @@ class IdziennikLoginWeb(val data: DataIdziennik, val onSuccess: () -> Unit) {
data.webSelectedRegister = registerId data.webSelectedRegister = registerId
} }
// for profiles created after archiving
data.schoolYearId = Regexes.IDZIENNIK_LOGIN_FIRST_SCHOOL_YEAR.find(text)?.let {
it[1].toIntOrNull()
} ?: data.schoolYearId
data.profile?.studentClassName = Regexes.IDZIENNIK_LOGIN_FIRST_STUDENT.findAll(text)
.firstOrNull { it[1].toIntOrNull() == data.registerId }
?.let { "${it[5]} ${it[6]}" } ?: data.profile?.studentClassName
data.profile?.let { profile -> data.profile?.let { profile ->
Regexes.IDZIENNIK_WEB_LUCKY_NUMBER.find(text)?.also { Regexes.IDZIENNIK_WEB_LUCKY_NUMBER.find(text)?.also {
val number = it[1].toIntOrNull() ?: return@also val number = it[1].toIntOrNull() ?: return@also