field_ios

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

Nostr.swift (1860B)


      1 import Foundation
      2 
      3 public struct NostrEventId: Hashable, Sendable {
      4     public let rawValue: String
      5 
      6     public init(_ rawValue: String) {
      7         self.rawValue = rawValue
      8     }
      9 }
     10 
     11 public extension NostrPostEventMetadata {
     12     var eventId: NostrEventId {
     13         NostrEventId(id)
     14     }
     15 }
     16 
     17 public extension NostrProfileEventMetadata {
     18     var eventId: NostrEventId {
     19         NostrEventId(id)
     20     }
     21 }
     22 
     23 public extension FieldRuntimeService {
     24     func nostrPostProfile(
     25         name: String? = nil,
     26         displayName: String? = nil,
     27         nip05: String? = nil,
     28         about: String? = nil
     29     ) async throws -> NostrEventId {
     30         let id = try await run {
     31             try $0.nostrPostProfile(
     32                 name: name,
     33                 displayName: displayName,
     34                 nip05: nip05,
     35                 about: about
     36             )
     37         }
     38         return NostrEventId(id)
     39     }
     40 
     41     func nostrPostTextNote(content: String) async throws -> NostrEventId {
     42         let id = try await run { try $0.nostrPostTextNote(content: content) }
     43         return NostrEventId(id)
     44     }
     45 
     46     func nostrPostReply(
     47         parentEventIdHex: String,
     48         parentAuthorHex: String,
     49         content: String,
     50         rootEventIdHex: String? = nil
     51     ) async throws -> NostrEventId {
     52         let id = try await run {
     53             try $0.nostrPostReply(
     54                 parentEventIdHex: parentEventIdHex,
     55                 parentAuthorHex: parentAuthorHex,
     56                 content: content,
     57                 rootEventIdHex: rootEventIdHex
     58             )
     59         }
     60         return NostrEventId(id)
     61     }
     62 
     63     func nostrStartPostStream(sinceUnix: UInt64? = nil) async throws {
     64         try await run { try $0.nostrStartPostEventStream(sinceUnix: sinceUnix) }
     65     }
     66 
     67     func nostrStopPostStream() async throws {
     68         try await run { try $0.nostrStopPostEventStream() }
     69     }
     70 }