mirror of
git://jb55.com/damus
synced 2024-09-21 04:27:31 +00:00
50 lines
1.7 KiB
Swift
50 lines
1.7 KiB
Swift
|
//
|
|||
|
// NostrEventInfoFromPushNotification.swift
|
|||
|
// DamusNotificationService
|
|||
|
//
|
|||
|
// Created by Daniel D’Aquino on 2023-11-13.
|
|||
|
//
|
|||
|
|
|||
|
import Foundation
|
|||
|
|
|||
|
/// The representation of a JSON-encoded Nostr Event used by the push notification server
|
|||
|
/// Needs to match with https://gitlab.com/soapbox-pub/strfry-policies/-/raw/433459d8084d1f2d6500fdf916f22caa3b4d7be5/src/types.ts
|
|||
|
struct NostrEventInfoFromPushNotification: Codable {
|
|||
|
let id: String // Hex-encoded
|
|||
|
let sig: String // Hex-encoded
|
|||
|
let kind: NostrKind
|
|||
|
let tags: [[String]]
|
|||
|
let pubkey: String // Hex-encoded
|
|||
|
let content: String
|
|||
|
let created_at: Int
|
|||
|
|
|||
|
static func from(dictionary: [AnyHashable: Any]) -> NostrEventInfoFromPushNotification? {
|
|||
|
guard let id = dictionary["id"] as? String,
|
|||
|
let sig = dictionary["sig"] as? String,
|
|||
|
let kind_int = dictionary["kind"] as? UInt32,
|
|||
|
let kind = NostrKind(rawValue: kind_int),
|
|||
|
let tags = dictionary["tags"] as? [[String]],
|
|||
|
let pubkey = dictionary["pubkey"] as? String,
|
|||
|
let content = dictionary["content"] as? String,
|
|||
|
let created_at = dictionary["created_at"] as? Int else {
|
|||
|
return nil
|
|||
|
}
|
|||
|
return NostrEventInfoFromPushNotification(id: id, sig: sig, kind: kind, tags: tags, pubkey: pubkey, content: content, created_at: created_at)
|
|||
|
}
|
|||
|
|
|||
|
func reactionEmoji() -> String? {
|
|||
|
guard self.kind == NostrKind.like else {
|
|||
|
return nil
|
|||
|
}
|
|||
|
|
|||
|
switch self.content {
|
|||
|
case "", "+":
|
|||
|
return "❤️"
|
|||
|
case "-":
|
|||
|
return "👎"
|
|||
|
default:
|
|||
|
return self.content
|
|||
|
}
|
|||
|
}
|
|||
|
}
|