diff options
| author | Christian Cleberg <[email protected]> | 2026-03-22 20:42:53 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-03-22 20:42:53 -0500 |
| commit | 82e54ad018ae5fa5cdf90c0d763e09e99bc0e933 (patch) | |
| tree | cafdbc8f4116af5cc6e0ca706e05ced599e26570 /Hutch/Views/Pastes/PasteListViewModel.swift | |
| parent | 1f8b7a23529462c3c332753d33810b5c9f692bbc (diff) | |
| download | hutch-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.swift | 41 |
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 |
