field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

TeraAuthorVisibility.swift (1448B)


      1 import Foundation
      2 
      3 enum TeraAuthorVisibility: String, Sendable, Equatable {
      4   case visible, muted, blocked
      5 }
      6 
      7 struct TeraAuthorVisibilityEntry: Sendable, Equatable, Identifiable, CustomDebugStringConvertible {
      8   let author: String
      9   let visibility: TeraAuthorVisibility
     10   var debugDescription: String {
     11     "AuthorVisibilityEntry"
     12   }
     13 
     14   var id: String {
     15     author
     16   }
     17 }
     18 
     19 struct TeraAuthorVisibilityPolicy: Sendable, Equatable, CustomDebugStringConvertible {
     20   let revision: UInt64
     21   let entries: [TeraAuthorVisibilityEntry]
     22   var debugDescription: String {
     23     "AuthorVisibilityPolicy(revision: \(revision), entries: \(entries.count))"
     24   }
     25 }
     26 
     27 extension TeraRuntimeBackend {
     28   func authorVisibility() async throws -> TeraAuthorVisibilityPolicy {
     29     throw TeraComposerAcknowledgment.unconfirmed
     30   }
     31 
     32   func setAuthorVisibility(author _: String, visibility _: TeraAuthorVisibility) async throws -> TeraAuthorVisibilityPolicy {
     33     throw TeraComposerAcknowledgment.unconfirmed
     34   }
     35 }
     36 
     37 extension TeraRuntimeClient {
     38   func authorVisibility() async throws -> TeraAuthorVisibilityPolicy {
     39     try await supportOperation("runtime.visibility.read") { try await $0.authorVisibility() }
     40   }
     41 
     42   func setAuthorVisibility(author: String, visibility: TeraAuthorVisibility) async throws -> TeraAuthorVisibilityPolicy {
     43     try await supportOperation("runtime.visibility.change") { try await $0.setAuthorVisibility(author: author, visibility: visibility) }
     44   }
     45 }