11 Commits
Author SHA1 Message Date
Sweetbread 9e94a67a85 fix: network connectivity related issues 2026-09-17 14:11:34 +03:00
Sweetbread b7183805c2 fix: download recent news 2026-09-17 13:47:10 +03:00
Sweetbread ad64fdf4c5 feat: update GroupsNameText.kt to the new API 2026-09-17 13:07:02 +03:00
Sweetbread d66ffaae7b ref: models.kt 2026-09-17 13:01:54 +03:00
Sweetbread e9151f281b ref: remove files from ui 2026-09-16 11:54:00 +03:00
Sweetbread 05ec933b15 chore: cleanup 2026-09-15 15:51:49 +03:00
Sweetbread bf530b6214 ref: db 2026-09-12 00:29:36 +03:00
Sweetbread b7647d7267 ref: blogposts 2026-09-11 01:56:10 +03:00
Sweetbread 5b76f55cb7 deps: update 2026-09-09 15:20:02 +03:00
Sweetbread d5194c2e6f feat: offline-first 2026-09-07 19:39:45 +03:00
Sweetbread 008ec3030b ref: rewrite code architecture for Schedule 2026-09-06 20:42:32 +03:00
3 changed files with 10 additions and 29 deletions
@@ -44,7 +44,6 @@ 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.app.UNNApp
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.Auditorium
@@ -54,10 +53,7 @@ import ru.sweetbread.unn.model.KindOfWork
import ru.sweetbread.unn.model.Lecturer import ru.sweetbread.unn.model.Lecturer
import ru.sweetbread.unn.model.LecturerRank import ru.sweetbread.unn.model.LecturerRank
import ru.sweetbread.unn.model.ScheduleUnit import ru.sweetbread.unn.model.ScheduleUnit
import ru.sweetbread.unn.model.Student
import ru.sweetbread.unn.model.Type
import ru.sweetbread.unn.ui.theme.UNNTheme import ru.sweetbread.unn.ui.theme.UNNTheme
import splitties.init.appCtx
import splitties.resources.appStr import splitties.resources.appStr
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
@@ -117,9 +113,6 @@ fun ScheduleDay(modifier: Modifier = Modifier, viewModel: ScheduleViewModel) {
@Composable @Composable
fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Boolean = false) { fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Boolean = false) {
val me = (appCtx as UNNApp).container.sessionManager.user.collectAsState().value
val currentGroup = if (me?.type == Type.Student) (me as Student).group else null
fun getRatio(): Float { fun getRatio(): Float {
val begin = LocalDateTime.of(unit.date, unit.begin).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond() val begin = LocalDateTime.of(unit.date, unit.begin).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond()
val end = LocalDateTime.of(unit.date, unit.end).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond() val end = LocalDateTime.of(unit.date, unit.end).atZone(ZoneId.of("Europe/Moscow")).toEpochSecond()
@@ -209,9 +202,7 @@ fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Bo
AnimatedVisibility (expanded) { AnimatedVisibility (expanded) {
GroupsNameText( GroupsNameText(
unit.stream, unit.stream,
highlightColor = MaterialTheme.colorScheme.inversePrimary, highlightColor = MaterialTheme.colorScheme.inversePrimary
currentGroupName = currentGroup,
currentGroupColor = MaterialTheme.colorScheme.inverseSurface
) )
} }
} }
@@ -20,11 +20,9 @@ import androidx.compose.ui.unit.dp
fun GroupsNameText( fun GroupsNameText(
text: String, text: String,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
highlightColor: Color = MaterialTheme.colorScheme.tertiaryContainer, highlightColor: Color = MaterialTheme.colorScheme.secondaryContainer,
highlightPadding: PaddingValues = PaddingValues(horizontal = 6.dp, vertical = 2.dp), highlightPadding: PaddingValues = PaddingValues(horizontal = 6.dp, vertical = 2.dp),
highlightShape: Shape = MaterialTheme.shapes.small, highlightShape: Shape = MaterialTheme.shapes.small,
currentGroupName: String? = null,
currentGroupColor: Color = MaterialTheme.colorScheme.secondaryContainer,
horizontalArrangement: Arrangement.Horizontal = Arrangement.Start, horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
) { ) {
val suffix = if (text.endsWith("-В-OUP")) "-В-OUP" else null val suffix = if (text.endsWith("-В-OUP")) "-В-OUP" else null
@@ -49,10 +47,7 @@ fun GroupsNameText(
Box( Box(
modifier = Modifier modifier = Modifier
.padding(end = 2.dp) .padding(end = 2.dp)
.background( .background(highlightColor, highlightShape)
if (currentGroupName == block) currentGroupColor
else highlightColor, highlightShape
)
.padding(highlightPadding) .padding(highlightPadding)
) { ) {
Text(text = block) Text(text = block)
@@ -46,17 +46,17 @@ open class User(
companion object { companion object {
fun fromProfile(json: JSONObject): User { fun fromProfile(json: JSONObject): User {
val userField = json.getJSONObject("user") val user = json.getJSONObject("user")
val user = User( return User(
userField.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
}, },
userField.getString("email"), user.getString("email"),
userField.getString("fullname"), user.getString("fullname"),
userField.getString("fullname_en"), user.getString("fullname_en"),
userField.getJSONObject("photo").let { user.getJSONObject("photo").let {
AvatarSet( AvatarSet(
it.getString("orig"), it.getString("orig"),
it.getString("thumbnail"), it.getString("thumbnail"),
@@ -64,11 +64,6 @@ open class User(
) )
} }
) )
if (user.type == Type.Student)
user = Student()
return user
} }
fun getPlaceholder() = User( fun getPlaceholder() = User(