Compare commits

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 kotlinx.coroutines.delay
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.GroupsNameText
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.LecturerRank
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 splitties.init.appCtx
import splitties.resources.appStr
import java.time.LocalDate
import java.time.LocalDateTime
@@ -117,9 +113,6 @@ fun ScheduleDay(modifier: Modifier = Modifier, viewModel: ScheduleViewModel) {
@Composable
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 {
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()
@@ -209,9 +202,7 @@ fun ScheduleItem(modifier: Modifier = Modifier, unit: ScheduleUnit, expanded: Bo
AnimatedVisibility (expanded) {
GroupsNameText(
unit.stream,
highlightColor = MaterialTheme.colorScheme.inversePrimary,
currentGroupName = currentGroup,
currentGroupColor = MaterialTheme.colorScheme.inverseSurface
highlightColor = MaterialTheme.colorScheme.inversePrimary
)
}
}
@@ -20,11 +20,9 @@ import androidx.compose.ui.unit.dp
fun GroupsNameText(
text: String,
modifier: Modifier = Modifier,
highlightColor: Color = MaterialTheme.colorScheme.tertiaryContainer,
highlightColor: Color = MaterialTheme.colorScheme.secondaryContainer,
highlightPadding: PaddingValues = PaddingValues(horizontal = 6.dp, vertical = 2.dp),
highlightShape: Shape = MaterialTheme.shapes.small,
currentGroupName: String? = null,
currentGroupColor: Color = MaterialTheme.colorScheme.secondaryContainer,
horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
) {
val suffix = if (text.endsWith("-В-OUP")) "-В-OUP" else null
@@ -49,10 +47,7 @@ fun GroupsNameText(
Box(
modifier = Modifier
.padding(end = 2.dp)
.background(
if (currentGroupName == block) currentGroupColor
else highlightColor, highlightShape
)
.background(highlightColor, highlightShape)
.padding(highlightPadding)
) {
Text(text = block)
@@ -46,17 +46,17 @@ open class User(
companion object {
fun fromProfile(json: JSONObject): User {
val userField = json.getJSONObject("user")
val user = User(
userField.getInt("id"),
val user = json.getJSONObject("user")
return User(
user.getInt("id"),
when (json.getString("type")) {
"student" -> Type.Student
else -> Type.Employee
},
userField.getString("email"),
userField.getString("fullname"),
userField.getString("fullname_en"),
userField.getJSONObject("photo").let {
user.getString("email"),
user.getString("fullname"),
user.getString("fullname_en"),
user.getJSONObject("photo").let {
AvatarSet(
it.getString("orig"),
it.getString("thumbnail"),
@@ -64,11 +64,6 @@ open class User(
)
}
)
if (user.type == Type.Student)
user = Student()
return user
}
fun getPlaceholder() = User(