This commit is contained in:
Vladimir Dubovik
2025-04-04 11:01:33 +03:00
parent 14c229175c
commit edfe97c6dc
13 changed files with 169 additions and 69 deletions

View File

@ -9,6 +9,7 @@ import SwiftUI
struct FavGroupsView: View {
@ObservedObject var vm: ScheduleViewModel
@ObservedObject var networkMonitor: NetworkMonitor
var firstFavGroup = (UserDefaults.standard.string(forKey: "group") ?? "")
var secondFavGroup = (UserDefaults.standard.string(forKey: "group2") ?? "")
var thirdFavGroup = (UserDefaults.standard.string(forKey: "group3") ?? "")
@ -74,7 +75,7 @@ struct FavGroupsView: View {
HStack {
Spacer()
if firstFavGroup == "" || secondFavGroup == "" || thirdFavGroup == "" {
NavigationLink(destination: SelectingGroupView(vm: vm, firstFavGroup: firstFavGroup, secondFavGroup: secondFavGroup, thirdFavGroup: thirdFavGroup)) {
NavigationLink(destination: SelectingGroupView(vm: vm, networkMonitor: networkMonitor, firstFavGroup: firstFavGroup, secondFavGroup: secondFavGroup, thirdFavGroup: thirdFavGroup)) {
HStack {
Image(systemName: "plus")
.foregroundColor(.white)
@ -87,7 +88,7 @@ struct FavGroupsView: View {
}
}
}
.padding(.bottom, 50)
.padding(.bottom, 90)
}
.background(Color("background"))
}
@ -95,5 +96,6 @@ struct FavGroupsView: View {
#Preview {
@Previewable @StateObject var vm = ScheduleViewModel()
FavGroupsView(vm: vm)
@Previewable @StateObject var vm2 = NetworkMonitor()
FavGroupsView(vm: vm, networkMonitor: vm2)
}

View File

@ -2,13 +2,14 @@
// FavGroupsView.swift
// Schedule ICTIS
//
// Created by G412 on 05.03.2025.
// Created by Egor Mironov on 05.03.2025.
//
import SwiftUI
struct FavVPKView: View {
@ObservedObject var vm: ScheduleViewModel
@ObservedObject var networkMonitor: NetworkMonitor
var firstFavVPK = (UserDefaults.standard.string(forKey: "vpk1") ?? "")
var secondFavVPK = (UserDefaults.standard.string(forKey: "vpk2") ?? "")
var thirdFavVPK = (UserDefaults.standard.string(forKey: "vpk3") ?? "")
@ -74,7 +75,7 @@ struct FavVPKView: View {
HStack {
Spacer()
if firstFavVPK == "" || secondFavVPK == "" || thirdFavVPK == "" {
NavigationLink(destination: SelectingVPKView(vm: vm, firstFavVPK: firstFavVPK, secondFavVPK: secondFavVPK, thirdFavVPK: thirdFavVPK)) {
NavigationLink(destination: SelectingVPKView(vm: vm, networkMonitor: networkMonitor, firstFavVPK: firstFavVPK, secondFavVPK: secondFavVPK, thirdFavVPK: thirdFavVPK)) {
HStack {
Image(systemName: "plus")
.foregroundColor(.white)
@ -87,7 +88,7 @@ struct FavVPKView: View {
}
}
}
.padding(.bottom, 50)
.padding(.bottom, 90)
}
.background(Color("background"))
}
@ -95,5 +96,6 @@ struct FavVPKView: View {
#Preview {
@Previewable @StateObject var vm = ScheduleViewModel()
FavVPKView(vm: vm)
@Previewable @StateObject var vm2 = NetworkMonitor()
FavVPKView(vm: vm, networkMonitor: vm2)
}

View File

@ -9,9 +9,10 @@ import SwiftUI
struct ScheduleGroupSettings: View {
@ObservedObject var vm: ScheduleViewModel
@ObservedObject var networkMonitor: NetworkMonitor
var body: some View {
VStack {
NavigationLink(destination: FavGroupsView(vm: vm)) {
NavigationLink(destination: FavGroupsView(vm: vm, networkMonitor: networkMonitor)) {
HStack {
Text("Избранное расписание")
.font(.custom("Montserrat-Medium", fixedSize: 17))
@ -27,7 +28,7 @@ struct ScheduleGroupSettings: View {
.foregroundColor(Color("customGray1"))
.frame(height: 1)
.padding(.horizontal)
NavigationLink(destination: FavVPKView(vm: vm)) {
NavigationLink(destination: FavVPKView(vm: vm, networkMonitor: networkMonitor)) {
HStack {
Text("ВПК")
.font(.custom("Montserrat-Medium", fixedSize: 17))

View File

@ -12,6 +12,7 @@ struct SelectingGroupView: View {
@FocusState private var isFocused: Bool
@State private var text: String = ""
@ObservedObject var vm: ScheduleViewModel
@ObservedObject var networkMonitor: NetworkMonitor
@State private var isLoading = false
@State private var searchTask: DispatchWorkItem?
@StateObject private var serchGroupsVM = SearchGroupsViewModel()
@ -93,9 +94,9 @@ struct SelectingGroupView: View {
)
Spacer()
if isLoading {
LoadingView(isLoading: $isLoading)
}
//if isFocused {
LoadingView()
Spacer()
} else if networkMonitor.isConnected {
ScrollView(.vertical, showsIndicators: true) {
ForEach(serchGroupsVM.groups) { item in
if item.name.starts(with: "КТ") { //Отображаем только группы(без аудиторий и преподавателей)
@ -134,7 +135,9 @@ struct SelectingGroupView: View {
}
}
}
//}
} else {
NetworkErrorView(message: "Восстановите подключение к интернету чтобы мы смогли загрузить список групп")
}
}
.padding(.horizontal, 10)
.background(Color("background"))
@ -146,5 +149,6 @@ struct SelectingGroupView: View {
#Preview {
@Previewable @StateObject var vm = ScheduleViewModel()
SelectingGroupView(vm: vm, firstFavGroup: "", secondFavGroup: "", thirdFavGroup: "")
@Previewable @StateObject var vm2 = NetworkMonitor()
SelectingGroupView(vm: vm, networkMonitor: vm2, firstFavGroup: "", secondFavGroup: "", thirdFavGroup: "")
}

View File

@ -12,6 +12,7 @@ struct SelectingVPKView: View {
@FocusState private var isFocused: Bool
@State private var text: String = ""
@ObservedObject var vm: ScheduleViewModel
@ObservedObject var networkMonitor: NetworkMonitor
@State private var isLoading = false
@State private var searchTask: DispatchWorkItem?
@StateObject private var serchGroupsVM = SearchGroupsViewModel()
@ -94,9 +95,13 @@ struct SelectingVPKView: View {
)
Spacer()
if isLoading {
LoadingView(isLoading: $isLoading)
LoadingView()
Spacer()
} else if networkMonitor.isConnected {
ListOfGroupsView(vm: vm, serchGroupsVM: serchGroupsVM, firstFavVPK: firstFavVPK, secondFavVPK: secondFavVPK, thirdFavVPK: thirdFavVPK)
} else {
ConnectingToNetworkView()
}
ListOfGroupsView(vm: vm, serchGroupsVM: serchGroupsVM, firstFavVPK: firstFavVPK, secondFavVPK: secondFavVPK, thirdFavVPK: thirdFavVPK)
}
.padding(.horizontal, 10)
.background(Color("background"))
@ -108,5 +113,6 @@ struct SelectingVPKView: View {
#Preview {
@Previewable @StateObject var vm = ScheduleViewModel()
SelectingVPKView(vm: vm, firstFavVPK: "", secondFavVPK: "", thirdFavVPK: "")
@Previewable @StateObject var vm2 = NetworkMonitor()
SelectingVPKView(vm: vm, networkMonitor: vm2, firstFavVPK: "", secondFavVPK: "", thirdFavVPK: "")
}

View File

@ -9,6 +9,7 @@ import SwiftUI
struct SettingsView: View {
@ObservedObject var vm: ScheduleViewModel
@ObservedObject var networkMonitor: NetworkMonitor
@State private var selectedTheme = "Светлая"
@State private var selectedLanguage = "Русский"
var body: some View {
@ -28,7 +29,7 @@ struct SettingsView: View {
.font(.custom("Montserrat-Medium", fixedSize: 18))
.foregroundColor(Color("customGray3"))
.padding(.horizontal)
ScheduleGroupSettings(vm: vm)
ScheduleGroupSettings(vm: vm, networkMonitor: networkMonitor)
}
.padding(.top, 20)
}
@ -42,5 +43,6 @@ struct SettingsView: View {
#Preview {
@Previewable @StateObject var vm = ScheduleViewModel()
SettingsView(vm: vm)
@Previewable @StateObject var vm2 = NetworkMonitor()
SettingsView(vm: vm, networkMonitor: vm2)
}