summaryrefslogtreecommitdiff
path: root/Hutch/Views/Pastes/PasteListViewModel.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-03-22 20:42:53 -0500
committerChristian Cleberg <[email protected]>2026-03-22 20:42:53 -0500
commit82e54ad018ae5fa5cdf90c0d763e09e99bc0e933 (patch)
treecafdbc8f4116af5cc6e0ca706e05ced599e26570 /Hutch/Views/Pastes/PasteListViewModel.swift
parent1f8b7a23529462c3c332753d33810b5c9f692bbc (diff)
downloadhutch-82e54ad018ae5fa5cdf90c0d763e09e99bc0e933.tar.gz
hutch-82e54ad018ae5fa5cdf90c0d763e09e99bc0e933.tar.bz2
hutch-82e54ad018ae5fa5cdf90c0d763e09e99bc0e933.zip
feat: swipe actions on tickets, pastes, builds, and home dashboard
Diffstat (limited to 'Hutch/Views/Pastes/PasteListViewModel.swift')
-rw-r--r--Hutch/Views/Pastes/PasteListViewModel.swift41
1 files changed, 41 insertions, 0 deletions
diff --git a/Hutch/Views/Pastes/PasteListViewModel.swift b/Hutch/Views/Pastes/PasteListViewModel.swift
index d41cf96..b521e18 100644
--- a/Hutch/Views/Pastes/PasteListViewModel.swift
+++ b/Hutch/Views/Pastes/PasteListViewModel.swift
@@ -107,6 +107,47 @@ final class PasteListViewModel {
}
}
+ func deletePaste(_ paste: Paste) async {
+ do {
+ _ = try await service.deletePaste(id: paste.id)
+ removePaste(id: paste.id)
+ } catch {
+ self.error = error.userFacingMessage
+ }
+ }
+
+ func cycleVisibility(for paste: Paste) async {
+ let next: Visibility
+ switch paste.visibility {
+ case .public:
+ next = .unlisted
+ case .unlisted:
+ next = .private
+ case .private:
+ next = .public
+ }
+
+ let original = pastes
+ if let index = pastes.firstIndex(where: { $0.id == paste.id }) {
+ pastes[index] = Paste(
+ id: paste.id,
+ created: paste.created,
+ visibility: next,
+ files: paste.files,
+ user: paste.user
+ )
+ }
+
+ do {
+ if let updated = try await service.updateVisibility(id: paste.id, visibility: next) {
+ upsertPaste(updated)
+ }
+ } catch {
+ pastes = original
+ self.error = error.userFacingMessage
+ }
+ }
+
func upsertPaste(_ paste: Paste) {
if let index = pastes.firstIndex(where: { $0.id == paste.id }) {
pastes[index] = paste