Skip to content

Commit a68a01c

Browse files
committed
Доработка на экране записей в дневнике
- Скрываем кнопку удаления записи для самой первой записи в дневнике (у нее самый маленький id)
1 parent 30bde6e commit a68a01c

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

SwiftUI-WorkoutApp/Screens/Journals/EntriesList/JournalEntriesList.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ struct JournalEntriesList: View {
3232
JournalEntryCell(
3333
model: $0,
3434
reportClbk: { viewModel.reportEntry($0) },
35+
canDelete: viewModel.checkIfCanDelete(entry: $0),
3536
deleteClbk: initiateDeletion,
3637
editClbk: setupEntryToEdit
3738
)

SwiftUI-WorkoutApp/Screens/Journals/EntriesList/JournalEntriesListViewModel.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ final class JournalEntriesListViewModel: ObservableObject {
3232
if !refresh { isLoading.toggle() }
3333
}
3434

35+
/// Проверяем возможность удаления указанной записи
36+
///
37+
/// Сервер не дает удалить самую первую запись в дневнике
38+
func checkIfCanDelete(entry: JournalEntryResponse) -> Bool {
39+
entry.id != list.map(\.id).min()
40+
}
41+
3542
func delete(_ entryID: Int?, with defaults: DefaultsProtocol) async {
3643
guard let entryID, !isLoading else { return }
3744
isLoading.toggle()

SwiftUI-WorkoutApp/Screens/Journals/EntriesList/JournalEntryCell.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ struct JournalEntryCell: View {
77
@EnvironmentObject private var defaults: DefaultsService
88
let model: JournalEntryResponse
99
let reportClbk: (JournalEntryResponse) -> Void
10+
let canDelete: Bool
1011
let deleteClbk: (Int) -> Void
1112
let editClbk: (JournalEntryResponse) -> Void
1213

@@ -46,10 +47,12 @@ private extension JournalEntryCell {
4647
} label: {
4748
Label("Изменить", systemImage: "rectangle.and.pencil.and.ellipsis")
4849
}
49-
Button(role: .destructive) {
50-
deleteClbk(model.id)
51-
} label: {
52-
Label("Удалить", systemImage: "trash")
50+
if canDelete {
51+
Button(role: .destructive) {
52+
deleteClbk(model.id)
53+
} label: {
54+
Label("Удалить", systemImage: "trash")
55+
}
5356
}
5457
} else {
5558
Button(role: .destructive) {
@@ -78,6 +81,7 @@ struct JournalEntryCell_Previews: PreviewProvider {
7881
JournalEntryCell(
7982
model: .preview,
8083
reportClbk: { _ in },
84+
canDelete: true,
8185
deleteClbk: { _ in },
8286
editClbk: { _ in }
8387
)

0 commit comments

Comments
 (0)