aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/Files
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-14 09:56:46 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-14 09:56:46 -0800
commitda1d7001f5132115bfdbe19cd95e73b04ba76c95 (patch)
treeba9b446db9a15e4b32d9101be518bdf65ac105a2 /Hotline/macOS/Files
parent46384d99b78cca150aa720eb915d161b5be8c08d (diff)
Add kick and improve client info display. Also improve error messages when can't connect (server down) or can't login (show server message).
Diffstat (limited to 'Hotline/macOS/Files')
-rw-r--r--Hotline/macOS/Files/FileDetailsSheet.swift43
-rw-r--r--Hotline/macOS/Files/FilesView.swift38
2 files changed, 45 insertions, 36 deletions
diff --git a/Hotline/macOS/Files/FileDetailsSheet.swift b/Hotline/macOS/Files/FileDetailsSheet.swift
index e86bf28..1bfacb2 100644
--- a/Hotline/macOS/Files/FileDetailsSheet.swift
+++ b/Hotline/macOS/Files/FileDetailsSheet.swift
@@ -14,7 +14,7 @@ struct FileDetailsSheet: View {
var body: some View {
VStack(alignment: .leading, spacing: 16) {
HStack(alignment: .center, spacing: 16){
- if self.details.type == "Folder" {
+ if self.isFolder {
FolderIconView()
.frame(width: 32, height: 32)
}
@@ -22,6 +22,7 @@ struct FileDetailsSheet: View {
FileIconView(filename: self.details.name, fileType: nil)
.frame(width: 32, height: 32)
}
+
TextField("File Name", text: $filename)
.disabled(!self.canRename)
}
@@ -114,6 +115,28 @@ struct FileDetailsSheet: View {
}
}
+ private var isFolder: Bool {
+ self.details.type == "Folder" || self.details.type == "fldr"
+ }
+
+ private func isEdited() -> Bool {
+ return self.filename != self.details.name || self.comment != self.details.comment
+ }
+
+ private var canRename: Bool {
+ if self.isFolder {
+ return self.model.access?.contains(.canRenameFolders) == true
+ }
+ return self.model.access?.contains(.canRenameFiles) == true
+ }
+
+ private var canSetComment: Bool {
+ if self.isFolder {
+ return self.model.access?.contains(.canSetFolderComment) == true
+ }
+ return self.model.access?.contains(.canSetFileComment) == true
+ }
+
static var dateFormatter: DateFormatter = {
var dateFormatter = DateFormatter()
dateFormatter.dateStyle = .long
@@ -142,24 +165,6 @@ struct FileDetailsSheet: View {
let formattedByteCount = Self.byteCountSizeFormatter.string(from: NSNumber(value:byteCount)) ?? "0"
return "\(FileItemView.byteFormatter.string(fromByteCount: Int64(byteCount))) (\(formattedByteCount) bytes)"
}
-
- private func isEdited() -> Bool {
- return self.filename != self.details.name || self.comment != self.details.comment
- }
-
- private var canRename: Bool {
- if self.details.type == "fldr" || self.details.type == "Folder" {
- return self.model.access?.contains(.canRenameFolders) == true
- }
- return self.model.access?.contains(.canRenameFiles) == true
- }
-
- private var canSetComment: Bool {
- if self.details.type == "fldr" || self.details.type == "Folder" {
- return self.model.access?.contains(.canSetFolderComment) == true
- }
- return self.model.access?.contains(.canSetFileComment) == true
- }
}
//#Preview {
diff --git a/Hotline/macOS/Files/FilesView.swift b/Hotline/macOS/Files/FilesView.swift
index 1ae99d9..c9c4c24 100644
--- a/Hotline/macOS/Files/FilesView.swift
+++ b/Hotline/macOS/Files/FilesView.swift
@@ -198,28 +198,32 @@ struct FilesView: View {
ToolbarSpacer()
}
- ToolbarItem {
- Button {
- self.newFolderShown = true
- } label: {
- Label("New Folder", systemImage: "folder.badge.plus")
- }
- .help("New Folder")
- .popover(isPresented: self.$newFolderShown, arrowEdge: .bottom) {
- NewFolderPopover { folderName in
- self.newFolder(name: folderName, parent: self.selection)
+ if self.model.access?.contains(.canCreateFolders) == true {
+ ToolbarItem {
+ Button {
+ self.newFolderShown = true
+ } label: {
+ Label("New Folder", systemImage: "folder.badge.plus")
+ }
+ .help("New Folder")
+ .popover(isPresented: self.$newFolderShown, arrowEdge: .bottom) {
+ NewFolderPopover { folderName in
+ self.newFolder(name: folderName, parent: self.selection)
+ }
}
}
}
- ToolbarItem {
- Button {
- self.confirmDeleteShown = true
- } label: {
- Label("Delete", systemImage: "trash")
+ if self.model.access?.contains(.canDeleteFiles) == true || self.model.access?.contains(.canDeleteFolders) == true {
+ ToolbarItem {
+ Button {
+ self.confirmDeleteShown = true
+ } label: {
+ Label("Delete", systemImage: "trash")
+ }
+ .disabled(self.selection == nil)
+ .help("Delete")
}
- .disabled(self.selection == nil)
- .help("Delete")
}
}
}