Bug fixes and UI polish

This commit is contained in:
VincentMeilinger
2024-03-10 11:56:51 +01:00
parent 29872611da
commit 2c749754f4
8 changed files with 45 additions and 14 deletions

View File

@@ -37,7 +37,7 @@ struct RecipeListView: View {
}
}
.navigationDestination(for: Recipe.self) { recipe in
RecipeView(isPresented: .constant(true), viewModel: RecipeView.ViewModel(recipe: recipe))
RecipeView(viewModel: RecipeView.ViewModel(recipe: recipe))
.environmentObject(appState)
.environmentObject(groceryList)
}

View File

@@ -11,8 +11,10 @@ import SwiftUI
struct RecipeView: View {
@EnvironmentObject var appState: AppState
@Binding var isPresented: Bool
@Environment(\.dismiss) private var dismiss
@StateObject var viewModel: ViewModel
@GestureState private var dragOffset = CGSize.zero
var imageHeight: CGFloat {
if let image = viewModel.recipeImage {
return image.size.height < 350 ? image.size.height : 350
@@ -115,8 +117,9 @@ struct RecipeView: View {
.toolbar(.visible, for: .navigationBar)
//.toolbarTitleDisplayMode(.inline)
.navigationTitle(viewModel.showTitle ? viewModel.recipe.name : "")
.toolbar {
RecipeViewToolBar(isPresented: $isPresented, viewModel: viewModel)
RecipeViewToolBar(viewModel: viewModel)
}
.sheet(isPresented: $viewModel.presentShareSheet) {
ShareView(recipeDetail: viewModel.observableRecipeDetail.toRecipeDetail(),
@@ -313,16 +316,18 @@ extension RecipeView {
struct RecipeViewToolBar: ToolbarContent {
@EnvironmentObject var appState: AppState
@Binding var isPresented: Bool
@Environment(\.dismiss) private var dismiss
@ObservedObject var viewModel: RecipeView.ViewModel
var body: some ToolbarContent {
if viewModel.editMode {
ToolbarItemGroup(placement: .topBarLeading){
ToolbarItemGroup(placement: .topBarLeading) {
Button("Cancel") {
viewModel.editMode = false
isPresented = false
if viewModel.newRecipe {
dismiss()
}
}
if !viewModel.newRecipe {
@@ -407,9 +412,10 @@ struct RecipeViewToolBar: ToolbarContent {
await appState.getCategories()
await appState.getCategory(named: viewModel.observableRecipeDetail.recipeCategory, fetchMode: .preferServer)
if let id = Int(viewModel.observableRecipeDetail.id) {
await appState.getRecipe(id: id, fetchMode: .onlyServer, save: true)
let _ = await appState.getRecipe(id: id, fetchMode: .onlyServer, save: true)
}
viewModel.editMode = false
viewModel.presentAlert(RecipeAlert.UPLOAD_SUCCESS)
}
func handleDelete() async {
@@ -424,7 +430,8 @@ struct RecipeViewToolBar: ToolbarContent {
}
await appState.getCategories()
await appState.getCategory(named: category, fetchMode: .preferServer)
self.isPresented = false
viewModel.presentAlert(RecipeAlert.DELETE_SUCCESS)
dismiss()
}
func recipeValid() -> RecipeAlert? {

View File

@@ -227,10 +227,12 @@ extension SettingsView {
func getUserData() async {
let (data, _) = await NextcloudApi.getAvatar()
avatarImage = data
let (userData, _) = await NextcloudApi.getHoverCard()
self.userData = userData
DispatchQueue.main.async {
self.avatarImage = data
self.userData = userData
}
}
}
}

View File

@@ -54,7 +54,7 @@ struct RecipeTabView: View {
.environmentObject(appState)
}
.navigationDestination(isPresented: $viewModel.presentEditView) {
RecipeView(isPresented: $viewModel.presentEditView, viewModel: RecipeView.ViewModel())
RecipeView(viewModel: RecipeView.ViewModel())
.environmentObject(appState)
.environmentObject(groceryList)
}

View File

@@ -34,7 +34,7 @@ struct SearchTabView: View {
}
}
.navigationDestination(for: Recipe.self) { recipe in
RecipeView(isPresented: .constant(true), viewModel: RecipeView.ViewModel(recipe: recipe))
RecipeView(viewModel: RecipeView.ViewModel(recipe: recipe))
}
.searchable(text: $viewModel.searchText, prompt: "Search recipes/keywords")
}