summaryrefslogtreecommitdiff
path: root/Sora/Views/Settings/Collections/SettingsCollectionsView.swift
blob: a7ce5a72e6860add42b33fb88075139deac154ee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import SwiftUI

struct SettingsCollectionsView: View {
  @EnvironmentObject private var settings: SettingsManager

  @State private var isDeleteConfirmationPresented = false
  @State private var isRenameAlertPresented = false
  @State private var newCollectionName = ""
  let folder: SettingsFolder

  var body: some View {
    Form {
      Section(header: Text("Actions")) {
        Button(action: {
          newCollectionName = folder.name
          isRenameAlertPresented = true
        }) {
          Label("Rename", systemImage: "pencil")
        }

        Button(
          role: .destructive,
          action: {
            isDeleteConfirmationPresented = true
          }
        ) {
          Label("Delete", systemImage: "trash")
        }
      }
    }
    .navigationTitle(folder.name)
    .alert(
      "Rename Collection",
      isPresented: $isRenameAlertPresented
    ) {
      TextField("Collection Name", text: $newCollectionName)

      Button("Cancel", role: .cancel) {
        newCollectionName = ""
        isRenameAlertPresented = false
      }

      Button("Rename") {
        settings.renameFolder(folder, to: newCollectionName)

        newCollectionName = ""
        isRenameAlertPresented = false
      }
    }
    .alert(
      "Are you sure you want to delete this collection?",
      isPresented: $isDeleteConfirmationPresented
    ) {
      Button("Delete", role: .destructive) {
        settings.folders.removeAll { $0.id == folder.id }
      }

      Button("Cancel", role: .cancel) { () }
    }
  }
}