ref: models.kt

This commit is contained in:
2026-09-17 13:01:54 +03:00
parent e9151f281b
commit d66ffaae7b
14 changed files with 93 additions and 98 deletions
@@ -7,6 +7,7 @@ import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties import android.security.keystore.KeyProperties
import android.util.Base64 import android.util.Base64
import androidx.core.content.edit import androidx.core.content.edit
import java.security.GeneralSecurityException
import java.security.KeyStore import java.security.KeyStore
import javax.crypto.Cipher import javax.crypto.Cipher
import javax.crypto.KeyGenerator import javax.crypto.KeyGenerator
@@ -97,6 +98,7 @@ class CredentialsStore(
} }
fun get(): Credentials? { fun get(): Credentials? {
return try {
val encryptedString = val encryptedString =
prefs.getString("data", null) prefs.getString("data", null)
?: return null ?: return null
@@ -130,12 +132,18 @@ class CredentialsStore(
val parts = plainText.split('\u0000', limit = 2) val parts = plainText.split('\u0000', limit = 2)
if (parts.size != 2) if (parts.size != 2)
return null null
else Credentials(
return Credentials(
login = parts[0], login = parts[0],
password = parts[1] password = parts[1]
) )
} catch (_: GeneralSecurityException) {
clear()
null
} catch (_: IllegalArgumentException) {
clear()
null
}
} }
fun clear() { fun clear() {
@@ -6,8 +6,8 @@ import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import androidx.room.withTransaction import androidx.room.withTransaction
import ru.sweetbread.unn.api.Auditorium
import ru.sweetbread.unn.core.db.AppDatabase import ru.sweetbread.unn.core.db.AppDatabase
import ru.sweetbread.unn.model.Auditorium
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -5,7 +5,7 @@ package ru.sweetbread.unn.core.db.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import ru.sweetbread.unn.api.Building import ru.sweetbread.unn.model.Building
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -5,7 +5,7 @@ package ru.sweetbread.unn.core.db.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import ru.sweetbread.unn.api.Discipline import ru.sweetbread.unn.model.Discipline
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -5,7 +5,7 @@ package ru.sweetbread.unn.core.db.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import ru.sweetbread.unn.api.KindOfWork import ru.sweetbread.unn.model.KindOfWork
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -5,8 +5,8 @@ package ru.sweetbread.unn.core.db.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import ru.sweetbread.unn.api.Lecturer import ru.sweetbread.unn.model.Lecturer
import ru.sweetbread.unn.api.LecturerRank import ru.sweetbread.unn.model.LecturerRank
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -6,8 +6,8 @@ import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import androidx.room.withTransaction import androidx.room.withTransaction
import ru.sweetbread.unn.api.ScheduleUnit
import ru.sweetbread.unn.core.db.AppDatabase import ru.sweetbread.unn.core.db.AppDatabase
import ru.sweetbread.unn.model.ScheduleUnit
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.LocalTime import java.time.LocalTime
@@ -6,7 +6,7 @@ import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import io.ktor.util.reflect.instanceOf import io.ktor.util.reflect.instanceOf
import ru.sweetbread.unn.api.AvatarSet import ru.sweetbread.unn.model.AvatarSet
import ru.sweetbread.unn.model.Student import ru.sweetbread.unn.model.Student
import ru.sweetbread.unn.model.Type import ru.sweetbread.unn.model.Type
import ru.sweetbread.unn.model.User import ru.sweetbread.unn.model.User
@@ -11,15 +11,15 @@ import io.ktor.client.statement.bodyAsText
import io.ktor.http.parameters import io.ktor.http.parameters
import org.json.JSONArray import org.json.JSONArray
import org.json.JSONObject import org.json.JSONObject
import ru.sweetbread.unn.api.Auditorium
import ru.sweetbread.unn.api.Building
import ru.sweetbread.unn.api.Discipline
import ru.sweetbread.unn.api.KindOfWork
import ru.sweetbread.unn.api.Lecturer
import ru.sweetbread.unn.api.LecturerRank
import ru.sweetbread.unn.api.ScheduleUnit
import ru.sweetbread.unn.core.SessionManager import ru.sweetbread.unn.core.SessionManager
import ru.sweetbread.unn.model.Auditorium
import ru.sweetbread.unn.model.Building
import ru.sweetbread.unn.model.Discipline
import ru.sweetbread.unn.model.KindOfWork
import ru.sweetbread.unn.model.Lecturer
import ru.sweetbread.unn.model.LecturerRank
import ru.sweetbread.unn.model.NewsDto import ru.sweetbread.unn.model.NewsDto
import ru.sweetbread.unn.model.ScheduleUnit
import ru.sweetbread.unn.model.User import ru.sweetbread.unn.model.User
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
@@ -44,15 +44,15 @@ import androidx.compose.ui.zIndex
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import ru.sweetbread.unn.R import ru.sweetbread.unn.R
import ru.sweetbread.unn.api.Auditorium
import ru.sweetbread.unn.api.Building
import ru.sweetbread.unn.api.Discipline
import ru.sweetbread.unn.api.KindOfWork
import ru.sweetbread.unn.api.Lecturer
import ru.sweetbread.unn.api.LecturerRank
import ru.sweetbread.unn.api.ScheduleUnit
import ru.sweetbread.unn.feature.schedule.components.BoundedWeekPicker import ru.sweetbread.unn.feature.schedule.components.BoundedWeekPicker
import ru.sweetbread.unn.feature.schedule.components.GroupsNameText import ru.sweetbread.unn.feature.schedule.components.GroupsNameText
import ru.sweetbread.unn.model.Auditorium
import ru.sweetbread.unn.model.Building
import ru.sweetbread.unn.model.Discipline
import ru.sweetbread.unn.model.KindOfWork
import ru.sweetbread.unn.model.Lecturer
import ru.sweetbread.unn.model.LecturerRank
import ru.sweetbread.unn.model.ScheduleUnit
import ru.sweetbread.unn.ui.theme.UNNTheme import ru.sweetbread.unn.ui.theme.UNNTheme
import splitties.resources.appStr import splitties.resources.appStr
import java.time.LocalDate import java.time.LocalDate
@@ -5,12 +5,11 @@ package ru.sweetbread.unn.feature.schedule
import androidx.room.withTransaction import androidx.room.withTransaction
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import ru.sweetbread.unn.api.ScheduleUnit
import ru.sweetbread.unn.core.SessionManager
import ru.sweetbread.unn.core.db.AppDatabase import ru.sweetbread.unn.core.db.AppDatabase
import ru.sweetbread.unn.core.db.entity.cacheSchedule import ru.sweetbread.unn.core.db.entity.cacheSchedule
import ru.sweetbread.unn.core.db.entity.toModel import ru.sweetbread.unn.core.db.entity.toModel
import ru.sweetbread.unn.core.network.PortalApi import ru.sweetbread.unn.core.network.PortalApi
import ru.sweetbread.unn.model.ScheduleUnit
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import ru.sweetbread.unn.app.UNNApp import ru.sweetbread.unn.app.UNNApp
import ru.sweetbread.unn.api.ScheduleUnit import ru.sweetbread.unn.model.ScheduleUnit
import java.time.LocalDate import java.time.LocalDate
data class ScheduleUiState( data class ScheduleUiState(
@@ -1,19 +1,12 @@
// Copyright (c) 2026 Gleb Zaharov. License: GPLv3 (see LICENSE). // Copyright (c) 2026 Gleb Zaharov. License: GPLv3 (see LICENSE).
package ru.sweetbread.unn.api package ru.sweetbread.unn.model
import ru.sweetbread.unn.R import ru.sweetbread.unn.R
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.LocalTime import java.time.LocalTime
enum class LecturerRank(val id: Int) {
Assistant(R.string.assistant),
Lecturer(R.string.lecturer),
SLecturer(R.string.slecturer),
AProfessor(R.string.aprofessor)
}
class ScheduleUnit( class ScheduleUnit(
val oid: Int, val oid: Int,
val auditorium: Auditorium, val auditorium: Auditorium,
@@ -27,6 +20,13 @@ class ScheduleUnit(
val lastUpdated: LocalDateTime, val lastUpdated: LocalDateTime,
) )
enum class LecturerRank(val id: Int) {
Assistant(R.string.assistant),
Lecturer(R.string.lecturer),
SLecturer(R.string.slecturer),
AProfessor(R.string.aprofessor)
}
class Auditorium( class Auditorium(
val name: String, val name: String,
val oid: Int, val oid: Int,
@@ -60,18 +60,3 @@ class Lecturer(
val unnId: Int, val unnId: Int,
val uid: String val uid: String
) )
class Post(
val id: Int,
val authorId: Int,
val enableComments: Boolean,
val numComments: Int,
val date: LocalDateTime,
val content: String
)
class AvatarSet(
val original: String,
val thumbnail: String,
val small: String
)
@@ -4,15 +4,12 @@ package ru.sweetbread.unn.model
import org.json.JSONObject import org.json.JSONObject
import ru.sweetbread.unn.R import ru.sweetbread.unn.R
import ru.sweetbread.unn.api.AvatarSet
import splitties.resources.appStr import splitties.resources.appStr
enum class Type(val s: String) { enum class Type(val s: String) {
student(appStr(R.string.student)), Student(appStr(R.string.student)),
// group("group"), Lecturer(appStr(R.string.lecturer)),
lecturer(appStr(R.string.lecturer)), Employee(appStr(R.string.employee))
// auditorium("auditorium"),
employee(appStr(R.string.employee))
} }
open class User( open class User(
@@ -32,8 +29,8 @@ open class User(
.getJSONObject(0) .getJSONObject(0)
.getString("type") .getString("type")
) { ) {
"student" -> Type.student "student" -> Type.Student
else -> Type.employee else -> Type.Employee
}, },
json.getString("email"), json.getString("email"),
json.getString("fullname"), json.getString("fullname"),
@@ -53,8 +50,8 @@ open class User(
return User( return User(
user.getInt("id"), user.getInt("id"),
when (json.getString("type")) { when (json.getString("type")) {
"student" -> Type.student "student" -> Type.Student
else -> Type.employee else -> Type.Employee
}, },
user.getString("email"), user.getString("email"),
user.getString("fullname"), user.getString("fullname"),
@@ -71,7 +68,7 @@ open class User(
fun getPlaceholder() = User( fun getPlaceholder() = User(
0, 0,
Type.employee, Type.Employee,
"", "",
"Удалённый пользователь", "Удалённый пользователь",
"Deleted user", "Deleted user",
@@ -108,3 +105,9 @@ class Student(
group group
) )
} }
class AvatarSet(
val original: String,
val thumbnail: String,
val small: String
)