damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit f8185d0ca5740d3b9c7ddac777cd5e7a3d3b98fb
parent eb995845018f10adf77b1fa7f354a04aeb79402e
Author: William Casarin <jb55@jb55.com>
Date:   Thu, 13 Feb 2025 13:57:50 -0800

fixes

Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
Mdamus.xcodeproj/project.pbxproj | 207+++++++++++++++++++++++++++-----------------------------------------------------
Mdamus/Core/Types/Block.swift | 17++++++++++++++++-
Mdamus/Features/Chat/ChatEventView.swift | 2+-
Mdamus/Features/Posting/Models/DraftsModel.swift | 21++++++++++++---------
Mdamus/Shared/Utilities/Bech32Object.swift | 17+++++++++++++++--
Mnostrdb/Ndb.swift | 2+-
Mnostrdb/src/nostrdb.h | 4++--
7 files changed, 116 insertions(+), 154 deletions(-)

diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj @@ -153,6 +153,40 @@ 4C32B95E2A9AD44700DC3548 /* FlatBufferObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B9492A9AD44700DC3548 /* FlatBufferObject.swift */; }; 4C32B95F2A9AD44700DC3548 /* Enum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B94A2A9AD44700DC3548 /* Enum.swift */; }; 4C32B9602A9AD44700DC3548 /* Struct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B94B2A9AD44700DC3548 /* Struct.swift */; }; + 4C36245B2D5E9B2F00DD066E /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */; }; + 4C36245C2D5E9B4400DD066E /* NdbBlocksIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480562B633F2600F2B2C0 /* NdbBlocksIterator.swift */; }; + 4C36245D2D5E9B4400DD066E /* NdbBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */; }; + 4C36245E2D5E9B5F00DD066E /* NdbBlocksIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480562B633F2600F2B2C0 /* NdbBlocksIterator.swift */; }; + 4C36245F2D5E9B5F00DD066E /* NdbBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */; }; + 4C3624602D5E9EB800DD066E /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */; }; + 4C3624612D5E9FFD00DD066E /* wasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480532B631C4F00F2B2C0 /* wasm.c */; }; + 4C3624622D5EA00300DD066E /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */; }; + 4C3624632D5EA01100DD066E /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDF2B631C0100F2B2C0 /* block.c */; }; + 4C3624642D5EA01600DD066E /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E72CAB688500989CEF /* tal.c */; }; + 4C3624652D5EA06400DD066E /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801E2B631C0100F2B2C0 /* bech32.c */; }; + 4C3624662D5EA07000DD066E /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9A42CAB688500989CEF /* sha256.c */; }; + 4C3624672D5EA0B100DD066E /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9D82CAB688500989CEF /* take.c */; }; + 4C3624682D5EA0BC00DD066E /* nostr_bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */; }; + 4C3624692D5EA0C200DD066E /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BF2CAB688500989CEF /* list.c */; }; + 4C36246A2D5EA0CB00DD066E /* content_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FF62B631C0100F2B2C0 /* content_parser.c */; }; + 4C36246B2D5EA0D700DD066E /* invoice.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480372B631C0100F2B2C0 /* invoice.c */; }; + 4C36246C2D5EA0E500DD066E /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480102B631C0100F2B2C0 /* bolt11.c */; }; + 4C36246E2D5EA10400DD066E /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */; }; + 4C36246F2D5EA16A00DD066E /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E22CAB688500989CEF /* str.c */; }; + 4C3624702D5EA17700DD066E /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9F02CAB688500989CEF /* utf8.c */; }; + 4C3624712D5EA18300DD066E /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480262B631C0100F2B2C0 /* error.c */; }; + 4C3624722D5EA18E00DD066E /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480252B631C0100F2B2C0 /* amount.c */; }; + 4C3624732D5EA1BE00DD066E /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */; }; + 4C3624742D5EA1D700DD066E /* wasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480532B631C4F00F2B2C0 /* wasm.c */; }; + 4C3624752D5EA1E000DD066E /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDF2B631C0100F2B2C0 /* block.c */; }; + 4C3624762D5EA1F600DD066E /* content_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FF62B631C0100F2B2C0 /* content_parser.c */; }; + 4C3624772D5EA1FA00DD066E /* nostr_bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */; }; + 4C3624782D5EA1FE00DD066E /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480262B631C0100F2B2C0 /* error.c */; }; + 4C3624792D5EA20200DD066E /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480102B631C0100F2B2C0 /* bolt11.c */; }; + 4C36247A2D5EA20C00DD066E /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801E2B631C0100F2B2C0 /* bech32.c */; }; + 4C36247B2D5EA21200DD066E /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */; }; + 4C36247C2D5EA21F00DD066E /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480252B631C0100F2B2C0 /* amount.c */; }; + 4C36247D2D5EA22300DD066E /* invoice.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480372B631C0100F2B2C0 /* invoice.c */; }; 4C363A8428233689006E126D /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8328233689006E126D /* Parser.swift */; }; 4C363A8C28236B92006E126D /* PubkeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8B28236B92006E126D /* PubkeyView.swift */; }; 4C363A8E28236FE4006E126D /* NoteContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8D28236FE4006E126D /* NoteContentView.swift */; }; @@ -342,10 +376,6 @@ 4CC6AA0E2CAB688500989CEF /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CB2CAB688500989CEF /* debug.c */; }; 4CC6AA0F2CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CE2CAB688500989CEF /* str.c */; }; 4CC6AA122CAB688500989CEF /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9D82CAB688500989CEF /* take.c */; }; - 4CC6AA302CAB688500989CEF /* _info in Resources */ = {isa = PBXBuildFile; fileRef = 4CC6A9DF2CAB688500989CEF /* _info */; }; - 4CC6AA362CAB688500989CEF /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E02CAB688500989CEF /* LICENSE */; }; - 4CC6AA612CAB688500989CEF /* _info in Resources */ = {isa = PBXBuildFile; fileRef = 4CC6A9DF2CAB688500989CEF /* _info */; }; - 4CC6AA672CAB688500989CEF /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E02CAB688500989CEF /* LICENSE */; }; 4CC6AA752CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E22CAB688500989CEF /* str.c */; }; 4CC6AA762CAB688500989CEF /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E72CAB688500989CEF /* tal.c */; }; 4CC6AA782CAB688500989CEF /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9C42CAB688500989CEF /* mem.c */; }; @@ -357,8 +387,6 @@ 4CC6AA892CAB688500989CEF /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CB2CAB688500989CEF /* debug.c */; }; 4CC6AA8A2CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CE2CAB688500989CEF /* str.c */; }; 4CC6AA8D2CAB688500989CEF /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9D82CAB688500989CEF /* take.c */; }; - 4CC6AAAB2CAB688500989CEF /* _info in Resources */ = {isa = PBXBuildFile; fileRef = 4CC6A9DF2CAB688500989CEF /* _info */; }; - 4CC6AAB12CAB688500989CEF /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E02CAB688500989CEF /* LICENSE */; }; 4CC6AABF2CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E22CAB688500989CEF /* str.c */; }; 4CC6AAC02CAB688500989CEF /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E72CAB688500989CEF /* tal.c */; }; 4CC6AAC22CAB688500989CEF /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9C42CAB688500989CEF /* mem.c */; }; @@ -409,8 +437,6 @@ 4CE879552996BAB900F758CC /* RelayPaidDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE879542996BAB900F758CC /* RelayPaidDetail.swift */; }; 4CE879582996C45300F758CC /* ZapsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE879572996C45300F758CC /* ZapsView.swift */; }; 4CE8795B2996C47A00F758CC /* ZapsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8795A2996C47A00F758CC /* ZapsModel.swift */; }; - 4CE9FBBA2A6B3C63007E485C /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CE9FBB82A6B3B26007E485C /* nostrdb.c */; settings = {COMPILER_FLAGS = "-w"; }; }; - 4CED18FD2C84B28F006AF665 /* PostingTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C8711DD2C460C06007879C2 /* PostingTimelineView.swift */; }; 4CEE2AED2805B22500AB5EEF /* NostrRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE2AEC2805B22500AB5EEF /* NostrRequest.swift */; }; 4CEE2AF1280B216B00AB5EEF /* EventDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE2AF0280B216B00AB5EEF /* EventDetailView.swift */; }; 4CEE2AF3280B25C500AB5EEF /* ProfilePicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE2AF2280B25C500AB5EEF /* ProfilePicView.swift */; }; @@ -442,11 +468,7 @@ 4CF480422B631C0100F2B2C0 /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */; }; 4CF480442B631C0100F2B2C0 /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480102B631C0100F2B2C0 /* bolt11.c */; }; 4CF480472B631C0100F2B2C0 /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */; }; - 4CF480482B631C0100F2B2C0 /* talstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801C2B631C0100F2B2C0 /* talstr.c */; }; - 4CF480492B631C0100F2B2C0 /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801D2B631C0100F2B2C0 /* utf8.c */; }; 4CF4804A2B631C0100F2B2C0 /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801E2B631C0100F2B2C0 /* bech32.c */; }; - 4CF4804B2B631C0100F2B2C0 /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801F2B631C0100F2B2C0 /* tal.c */; }; - 4CF4804C2B631C0100F2B2C0 /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480232B631C0100F2B2C0 /* take.c */; }; 4CF4804D2B631C0100F2B2C0 /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480252B631C0100F2B2C0 /* amount.c */; }; 4CF4804E2B631C0100F2B2C0 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480262B631C0100F2B2C0 /* error.c */; }; 4CF4804F2B631C0100F2B2C0 /* bech32_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480282B631C0100F2B2C0 /* bech32_util.c */; }; @@ -564,7 +586,6 @@ 82D6FABB2CD99F7900C925F4 /* emitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792CF2A9939BD00489948 /* emitter.c */; }; 82D6FABC2CD99F7900C925F4 /* refmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D12A9939BD00489948 /* refmap.c */; }; 82D6FABD2CD99F7900C925F4 /* verifier.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D42A9939BD00489948 /* verifier.c */; }; - 82D6FABE2CD99F7900C925F4 /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C478E2C2A9935D300489948 /* NdbProfile.swift */; }; 82D6FABF2CD99F7900C925F4 /* NdbTagIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9054882A6AED4700811EEC /* NdbTagIterator.swift */; }; 82D6FAC02CD99F7900C925F4 /* NdbNote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C90548A2A6AEDEE00811EEC /* NdbNote.swift */; }; 82D6FAC12CD99F7900C925F4 /* AsciiCharacter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5D5C9C2A6B2CB40024563C /* AsciiCharacter.swift */; }; @@ -572,30 +593,11 @@ 82D6FAC32CD99F7900C925F4 /* Ndb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C478E242A9932C100489948 /* Ndb.swift */; }; 82D6FAC42CD99F7900C925F4 /* NdbTagsIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDD1AE12A6B3074001CD4DF /* NdbTagsIterator.swift */; }; 82D6FAC52CD99F7900C925F4 /* NdbTxn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3DCC752A9FC2030091E592 /* NdbTxn.swift */; }; - 82D6FAC62CD99F7900C925F4 /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CE9FBB82A6B3B26007E485C /* nostrdb.c */; }; 82D6FAC72CD99F7900C925F4 /* midl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793032A993DB900489948 /* midl.c */; }; 82D6FAC82CD99F7900C925F4 /* mdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793002A993B9A00489948 /* mdb.c */; }; 82D6FAC92CD99F7900C925F4 /* NdbNote+.swift in Sources */ = {isa = PBXBuildFile; fileRef = D798D2272B085CDA00234419 /* NdbNote+.swift */; }; 82D6FACA2CD99F7900C925F4 /* NostrScript.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C19AE4C2A5CEF7C00C90DB7 /* NostrScript.swift */; }; 82D6FACB2CD99F7900C925F4 /* nostrscript.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F14A92A2A71AB0045A0B9 /* nostrscript.c */; }; - 82D6FACC2CD99F7900C925F4 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C9146FF2A2A891E00DDEA40 /* error.c */; }; - 82D6FACD2CD99F7900C925F4 /* wasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CA9276E2A2A5D110098A105 /* wasm.c */; }; - 82D6FACE2CD99F7900C925F4 /* damus.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C06670A28FDE64700038D2A /* damus.c */; }; - 82D6FACF2CD99F7900C925F4 /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C06670D28FDEAA000038D2A /* utf8.c */; }; - 82D6FAD02CD99F7900C925F4 /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA63C28FF52D600C48A62 /* bolt11.c */; }; - 82D6FAD12CD99F7900C925F4 /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA64028FF553900C48A62 /* hash_u5.c */; }; - 82D6FAD22CD99F7900C925F4 /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA64328FF558100C48A62 /* sha256.c */; }; - 82D6FAD32CD99F7900C925F4 /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA64828FF597700C48A62 /* bech32.c */; }; - 82D6FAD42CD99F7900C925F4 /* bech32_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA64B28FF59AC00C48A62 /* bech32_util.c */; }; - 82D6FAD52CD99F7900C925F4 /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA64E28FF59F200C48A62 /* tal.c */; }; - 82D6FAD62CD99F7900C925F4 /* node_id.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA65F28FF5E7700C48A62 /* node_id.c */; }; - 82D6FAD72CD99F7900C925F4 /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA66428FF5F6800C48A62 /* mem.c */; }; - 82D6FAD82CD99F7900C925F4 /* hex.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA66728FF5F9900C48A62 /* hex.c */; }; - 82D6FAD92CD99F7900C925F4 /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA66C28FF782800C48A62 /* amount.c */; }; - 82D6FADA2CD99F7900C925F4 /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA67428FF7A5A00C48A62 /* take.c */; }; - 82D6FADB2CD99F7900C925F4 /* talstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA67628FF7A9800C48A62 /* talstr.c */; }; - 82D6FADC2CD99F7900C925F4 /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C3EA67828FF7ABF00C48A62 /* list.c */; }; - 82D6FADD2CD99F7900C925F4 /* nostr_bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C8D00CE29E38B950036AF10 /* nostr_bech32.c */; }; 82D6FADE2CD99F7900C925F4 /* ThreadReply.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C45E5012BED4D000025A428 /* ThreadReply.swift */; }; 82D6FADF2CD99F7900C925F4 /* AttachedWalletNotify.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C86F7C52A76C51100EC0817 /* AttachedWalletNotify.swift */; }; 82D6FAE02CD99F7900C925F4 /* DisplayTabBarNotify.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9D6D152B1AA9C6004E5CD9 /* DisplayTabBarNotify.swift */; }; @@ -1047,7 +1049,6 @@ D703D74C2C6709CE00A400EA /* Zaps.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB883A72975FC1800DC99E7 /* Zaps.swift */; }; D703D74D2C6709D400A400EA /* Zap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7AAE6297EFA7B00430951 /* Zap.swift */; }; D703D74E2C6709DA00A400EA /* Pubkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC14FF02A73FCDB007AEB17 /* Pubkey.swift */; }; - D703D74F2C6709ED00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; D703D7502C6709F500A400EA /* NdbTxn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3DCC752A9FC2030091E592 /* NdbTxn.swift */; }; D703D7512C6709FB00A400EA /* Nostr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C75EFA527FF87A20006080F /* Nostr.swift */; }; D703D7522C670A1400A400EA /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C2B10272A7B0F5C008AA43E /* Log.swift */; }; @@ -1081,7 +1082,6 @@ D703D76E2C670B4900A400EA /* NdbTagsIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDD1AE12A6B3074001CD4DF /* NdbTagsIterator.swift */; }; D703D76F2C670B5200A400EA /* NostrResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C75EFB028049D510006080F /* NostrResponse.swift */; }; D703D7702C670B5F00A400EA /* UserStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5E54022A9522F600FF6E60 /* UserStatus.swift */; }; - D703D7712C670B6D00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; D703D7722C670B8000A400EA /* FlatBufferBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B93B2A9AD44700DC3548 /* FlatBufferBuilder.swift */; }; D703D7732C670B8500A400EA /* Offset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B9382A9AD44700DC3548 /* Offset.swift */; }; D703D7742C670B8A00A400EA /* FbConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B9372A9AD44700DC3548 /* FbConstants.swift */; }; @@ -1099,7 +1099,6 @@ D703D7802C670C2500A400EA /* NIP05.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB8838529656C8B00DC99E7 /* NIP05.swift */; }; D703D7812C670C2B00A400EA /* Bech32.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C90BD19283AA67F008EE7EF /* Bech32.swift */; }; D703D7822C670C3400A400EA /* InsertSort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363AA728297703006E126D /* InsertSort.swift */; }; - D703D7832C670C3900A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; D703D7842C670C4700A400EA /* SequenceUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7EDED202B117DCA0018B19C /* SequenceUtils.swift */; }; D703D7852C670C6100A400EA /* Notify.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA3529F2A76AE80003BB08B /* Notify.swift */; }; D703D7862C670C6500A400EA /* NewUnmutesNotify.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA352AB2A76C07F003BB08B /* NewUnmutesNotify.swift */; }; @@ -1115,23 +1114,6 @@ D703D7902C670D1600A400EA /* NewEventsBits.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CB5D4D2B11728000AD4105 /* NewEventsBits.swift */; }; D703D7912C670D1E00A400EA /* DisplayName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BB83029C0ED4F00FC4E37 /* DisplayName.swift */; }; D703D7922C670D2900A400EA /* RelayURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7FF93FF2AC7AC5200FD969D /* RelayURL.swift */; }; - D703D7932C670DAF00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7942C670DE300A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7952C670DE600A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7962C670DEA00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7972C670DED00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7982C670DF200A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7992C670DF900A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D79A2C670DFD00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D79B2C670E0000A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D79C2C670E0300A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D79D2C670E0700A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D79E2C670E0F00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D79F2C670E1200A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7A02C670E1500A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7A12C670E1700A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7A22C670E1A00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; - D703D7A32C670E1D00A400EA /* (null) in Sources */ = {isa = PBXBuildFile; }; D703D7A42C670E3C00A400EA /* midl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793032A993DB900489948 /* midl.c */; }; D703D7A52C670E3E00A400EA /* mdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793002A993B9A00489948 /* mdb.c */; }; D703D7A62C670E5200A400EA /* builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792942A9939BD00489948 /* builder.c */; }; @@ -2365,8 +2347,6 @@ 4CC6A9D32CAB688500989CEF /* structeq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = structeq.h; sourceTree = "<group>"; }; 4CC6A9D72CAB688500989CEF /* take.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = take.h; sourceTree = "<group>"; }; 4CC6A9D82CAB688500989CEF /* take.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = take.c; sourceTree = "<group>"; }; - 4CC6A9DF2CAB688500989CEF /* _info */ = {isa = PBXFileReference; lastKnownFileType = text; path = _info; sourceTree = "<group>"; }; - 4CC6A9E02CAB688500989CEF /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; }; 4CC6A9E12CAB688500989CEF /* str.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = str.h; sourceTree = "<group>"; }; 4CC6A9E22CAB688500989CEF /* str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = str.c; sourceTree = "<group>"; }; 4CC6A9E62CAB688500989CEF /* tal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tal.h; sourceTree = "<group>"; }; @@ -2442,15 +2422,12 @@ 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nostrdb.c; sourceTree = "<group>"; }; 4CF47FDF2B631C0100F2B2C0 /* block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block.c; sourceTree = "<group>"; }; 4CF47FE02B631C0100F2B2C0 /* str_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = str_block.h; sourceTree = "<group>"; }; - 4CF47FE12B631C0100F2B2C0 /* compiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = "<group>"; }; 4CF47FE22B631C0100F2B2C0 /* threadpool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threadpool.h; sourceTree = "<group>"; }; 4CF47FE32B631C0100F2B2C0 /* typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = "<group>"; }; 4CF47FE42B631C0100F2B2C0 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; }; 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nostr_bech32.c; sourceTree = "<group>"; }; - 4CF47FE62B631C0100F2B2C0 /* endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endian.h; sourceTree = "<group>"; }; 4CF47FE72B631C0100F2B2C0 /* jsmn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jsmn.h; sourceTree = "<group>"; }; 4CF47FE82B631C0100F2B2C0 /* memchr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memchr.h; sourceTree = "<group>"; }; - 4CF47FE92B631C0100F2B2C0 /* sha256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha256.h; sourceTree = "<group>"; }; 4CF47FEA2B631C0100F2B2C0 /* invoice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = invoice.h; sourceTree = "<group>"; }; 4CF47FEB2B631C0100F2B2C0 /* cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursor.h; sourceTree = "<group>"; }; 4CF47FEC2B631C0100F2B2C0 /* nostrdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nostrdb.h; sourceTree = "<group>"; }; @@ -2461,7 +2438,6 @@ 4CF47FF22B631C0100F2B2C0 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = "<group>"; }; 4CF47FF32B631C0100F2B2C0 /* print_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = print_util.h; sourceTree = "<group>"; }; 4CF47FF42B631C0100F2B2C0 /* block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block.h; sourceTree = "<group>"; }; - 4CF47FF52B631C0100F2B2C0 /* sha256.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sha256.c; sourceTree = "<group>"; }; 4CF47FF62B631C0100F2B2C0 /* content_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = content_parser.c; sourceTree = "<group>"; }; 4CF47FFA2B631C0100F2B2C0 /* ndb_profile.rs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ndb_profile.rs; sourceTree = "<group>"; }; 4CF47FFB2B631C0100F2B2C0 /* ndb_meta.rs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ndb_meta.rs; sourceTree = "<group>"; }; @@ -2486,22 +2462,12 @@ 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hash_u5.c; sourceTree = "<group>"; }; 4CF4801B2B631C0100F2B2C0 /* node_id.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node_id.h; sourceTree = "<group>"; }; 4CF4801E2B631C0100F2B2C0 /* bech32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bech32.c; sourceTree = "<group>"; }; - 4CF4801F2B631C0100F2B2C0 /* tal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tal.c; sourceTree = "<group>"; }; - 4CF480202B631C0100F2B2C0 /* list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = "<group>"; }; - 4CF480212B631C0100F2B2C0 /* str_debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = str_debug.h; sourceTree = "<group>"; }; 4CF480222B631C0100F2B2C0 /* bolt11.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bolt11.h; sourceTree = "<group>"; }; 4CF480252B631C0100F2B2C0 /* amount.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amount.c; sourceTree = "<group>"; }; 4CF480262B631C0100F2B2C0 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = "<group>"; }; 4CF480282B631C0100F2B2C0 /* bech32_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bech32_util.c; sourceTree = "<group>"; }; 4CF4802B2B631C0100F2B2C0 /* hash_u5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash_u5.h; sourceTree = "<group>"; }; - 4CF4802C2B631C0100F2B2C0 /* mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = "<group>"; }; - 4CF4802D2B631C0100F2B2C0 /* build_assert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = build_assert.h; sourceTree = "<group>"; }; - 4CF4802E2B631C0100F2B2C0 /* short_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = short_types.h; sourceTree = "<group>"; }; - 4CF4802F2B631C0100F2B2C0 /* tal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tal.h; sourceTree = "<group>"; }; 4CF480302B631C0100F2B2C0 /* bech32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bech32.h; sourceTree = "<group>"; }; - 4CF480312B631C0100F2B2C0 /* check_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = check_type.h; sourceTree = "<group>"; }; - 4CF480322B631C0100F2B2C0 /* utf8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utf8.h; sourceTree = "<group>"; }; - 4CF480332B631C0100F2B2C0 /* talstr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = talstr.h; sourceTree = "<group>"; }; 4CF480342B631C0100F2B2C0 /* node_id.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = node_id.c; sourceTree = "<group>"; }; 4CF480352B631C0100F2B2C0 /* protected_queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protected_queue.h; sourceTree = "<group>"; }; 4CF480362B631C0100F2B2C0 /* random.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = random.h; sourceTree = "<group>"; }; @@ -3485,8 +3451,6 @@ 4CC6A9E32CAB688500989CEF /* str */ = { isa = PBXGroup; children = ( - 4CC6A9DF2CAB688500989CEF /* _info */, - 4CC6A9E02CAB688500989CEF /* LICENSE */, 4CC6A9E12CAB688500989CEF /* str.h */, 4CC6A9E22CAB688500989CEF /* str.c */, ); @@ -3834,15 +3798,12 @@ 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */, 4CF47FDF2B631C0100F2B2C0 /* block.c */, 4CF47FE02B631C0100F2B2C0 /* str_block.h */, - 4CF47FE12B631C0100F2B2C0 /* compiler.h */, 4CF47FE22B631C0100F2B2C0 /* threadpool.h */, 4CF47FE32B631C0100F2B2C0 /* typedefs.h */, 4CF47FE42B631C0100F2B2C0 /* config.h */, 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */, - 4CF47FE62B631C0100F2B2C0 /* endian.h */, 4CF47FE72B631C0100F2B2C0 /* jsmn.h */, 4CF47FE82B631C0100F2B2C0 /* memchr.h */, - 4CF47FE92B631C0100F2B2C0 /* sha256.h */, 4CF47FEA2B631C0100F2B2C0 /* invoice.h */, 4CF47FEB2B631C0100F2B2C0 /* cursor.h */, 4CF47FEC2B631C0100F2B2C0 /* nostrdb.h */, @@ -3853,7 +3814,6 @@ 4CF47FF22B631C0100F2B2C0 /* util.h */, 4CF47FF32B631C0100F2B2C0 /* print_util.h */, 4CF47FF42B631C0100F2B2C0 /* block.h */, - 4CF47FF52B631C0100F2B2C0 /* sha256.c */, 4CF47FF62B631C0100F2B2C0 /* content_parser.c */, 4CF47FF72B631C0100F2B2C0 /* bindings */, 4CF4800B2B631C0100F2B2C0 /* bolt11 */, @@ -3921,22 +3881,12 @@ 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */, 4CF4801B2B631C0100F2B2C0 /* node_id.h */, 4CF4801E2B631C0100F2B2C0 /* bech32.c */, - 4CF4801F2B631C0100F2B2C0 /* tal.c */, - 4CF480202B631C0100F2B2C0 /* list.h */, - 4CF480212B631C0100F2B2C0 /* str_debug.h */, 4CF480222B631C0100F2B2C0 /* bolt11.h */, 4CF480252B631C0100F2B2C0 /* amount.c */, 4CF480262B631C0100F2B2C0 /* error.c */, 4CF480282B631C0100F2B2C0 /* bech32_util.c */, 4CF4802B2B631C0100F2B2C0 /* hash_u5.h */, - 4CF4802C2B631C0100F2B2C0 /* mem.h */, - 4CF4802D2B631C0100F2B2C0 /* build_assert.h */, - 4CF4802E2B631C0100F2B2C0 /* short_types.h */, - 4CF4802F2B631C0100F2B2C0 /* tal.h */, 4CF480302B631C0100F2B2C0 /* bech32.h */, - 4CF480312B631C0100F2B2C0 /* check_type.h */, - 4CF480322B631C0100F2B2C0 /* utf8.h */, - 4CF480332B631C0100F2B2C0 /* talstr.h */, 4CF480342B631C0100F2B2C0 /* node_id.c */, ); path = bolt11; @@ -5331,8 +5281,6 @@ 4C1D4FB42A7967990024F453 /* build-git-hash.txt in Resources */, D7FB14222BE5970000398331 /* PrivacyInfo.xcprivacy in Resources */, 3ACB685F297633BC00C46468 /* Localizable.strings in Resources */, - 4CC6AA612CAB688500989CEF /* _info in Resources */, - 4CC6AA672CAB688500989CEF /* LICENSE in Resources */, 4CE6DEEE27F7A08200C66700 /* Preview Assets.xcassets in Resources */, 3ACB685C297633BC00C46468 /* InfoPlist.strings in Resources */, 50DA11262A16A23F00236234 /* Launch.storyboard in Resources */, @@ -5377,8 +5325,6 @@ buildActionMask = 2147483647; files = ( D7C970202C89100200C56602 /* Localizable.strings in Resources */, - 4CC6AA302CAB688500989CEF /* _info in Resources */, - 4CC6AA362CAB688500989CEF /* LICENSE in Resources */, D7C970212C89100200C56602 /* Localizable.stringsdict in Resources */, D73E5F982C6AA847007EB227 /* Assets.xcassets in Resources */, D703D72B2C66F29500A400EA /* getSelection.js in Resources */, @@ -5393,8 +5339,6 @@ D7C9701F2C890FEB00C56602 /* Localizable.stringsdict in Resources */, D7C9701E2C890FC500C56602 /* Localizable.strings in Resources */, D7FB14252BE5A9A800398331 /* PrivacyInfo.xcprivacy in Resources */, - 4CC6AAAB2CAB688500989CEF /* _info in Resources */, - 4CC6AAB12CAB688500989CEF /* LICENSE in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5454,7 +5398,6 @@ D7CBD1D42B8D21DC00BFD889 /* DamusPurpleNotificationManagement.swift in Sources */, 4C32B9572A9AD44700DC3548 /* Root.swift in Sources */, 5C8498032D5D150000F74FEB /* ZapExplainer.swift in Sources */, - 4CF4804B2B631C0100F2B2C0 /* tal.c in Sources */, 504323A72A34915F006AE6DC /* RelayModel.swift in Sources */, 3A2BAC5C2DD7E4C400EBB4CC /* NIP05DomainTimelineHeaderView.swift in Sources */, 4CF0ABF62985CD5500D66079 /* UserSearch.swift in Sources */, @@ -5514,7 +5457,6 @@ 4C285C8A2838B985008A31F1 /* ProfilePictureSelector.swift in Sources */, 4CFD502F2A2DA45800A229DB /* MediaView.swift in Sources */, D7373BA62B688EA300F7783D /* DamusPurpleTranslationSetupView.swift in Sources */, - 4CF480482B631C0100F2B2C0 /* talstr.c in Sources */, 4C9F18E429ABDE6D008C55EC /* MaybeAnonPfpView.swift in Sources */, 4CA5588329F33F5B00DC6A45 /* StringCodable.swift in Sources */, 4C75EFB92804A2740006080F /* EventView.swift in Sources */, @@ -5524,7 +5466,6 @@ 4C687C272A6039500092C550 /* TestData.swift in Sources */, 50C3E08A2AA8E3F7006A4BC0 /* AVPlayer+Additions.swift in Sources */, 4C198DF229F88C6B004C165C /* BlurHashDecode.swift in Sources */, - 4CF480492B631C0100F2B2C0 /* utf8.c in Sources */, F75BA12F29A18EF500E10810 /* BookmarksView.swift in Sources */, 5C0567552C8B60C20073F23A /* OffsetExtension.swift in Sources */, 4CB883B6297730E400DC99E7 /* LNUrls.swift in Sources */, @@ -5597,8 +5538,6 @@ 4CB8838B296F6E1E00DC99E7 /* NIP05Badge.swift in Sources */, 4CA3FA1029F593D000FDB3C3 /* ZapTypePicker.swift in Sources */, 4C32B95D2A9AD44700DC3548 /* Documentation.docc in Sources */, - 4C3EA66828FF5F9900C48A62 /* hex.c in Sources */, - E9E4ED0B295867B900DD7078 /* ThreadView.swift in Sources */, 4CD348EF29C3659D00497EB2 /* ImageUploadModel.swift in Sources */, 4C3BEFDC281DCE6100B3DE84 /* Liked.swift in Sources */, 4CF0ABE7298444FD00D66079 /* EventMutingContainerView.swift in Sources */, @@ -5667,7 +5606,6 @@ 4C7D09722A0AEF5E00943473 /* DamusGradient.swift in Sources */, 4C463CBF2B960B96008A8C36 /* PurpleBackdrop.swift in Sources */, BAB68BED29543FA3007BA466 /* SelectWalletView.swift in Sources */, - 4CF4804C2B631C0100F2B2C0 /* take.c in Sources */, 3169CAE6294E69C000EE4006 /* EmptyTimelineView.swift in Sources */, 4CF4803A2B631C0100F2B2C0 /* nostr_bech32.c in Sources */, 4C32B9602A9AD44700DC3548 /* Struct.swift in Sources */, @@ -5772,7 +5710,7 @@ 4CB88396296F7F8B00DC99E7 /* ReactionView.swift in Sources */, 50A16FFD2AA7525700DFEC1F /* DamusVideoPlayer.swift in Sources */, 4CF480552B631C4F00F2B2C0 /* wasm.c in Sources */, - 50A16FFD2AA7525700DFEC1F /* DamusVideoPlayerViewModel.swift in Sources */, + 50A16FFD2AA7525700DFEC1F /* DamusVideoPlayer.swift in Sources */, 4CFF8F6B29CD0079008DB934 /* RepostedEvent.swift in Sources */, D78CD5982B8990300014D539 /* DamusAppNotificationView.swift in Sources */, D724D8272B64B40B00ABE789 /* DamusPurpleAccountView.swift in Sources */, @@ -5866,7 +5804,6 @@ 5C09FD132DF283D700823661 /* FollowPackModel.swift in Sources */, 4C3AC79B28306D7B00E1F516 /* Contacts.swift in Sources */, D71AD8FF2CEC176A002E2C3C /* AppAccessibilityIdentifiers.swift in Sources */, - 4C3EA63D28FF52D600C48A62 /* bolt11.c in Sources */, D76BE18D2E0CF3DA004AD0C6 /* Interests.swift in Sources */, 4C9BB83129C0ED4F00FC4E37 /* DisplayName.swift in Sources */, 7CFF6317299FEFE5005D382A /* SelectableText.swift in Sources */, @@ -6028,6 +5965,26 @@ buildActionMask = 2147483647; files = ( 5C4FA7FB2DC29C3800CE658C /* FollowPackView.swift in Sources */, + 4C3624722D5EA18E00DD066E /* amount.c in Sources */, + 4C3624712D5EA18300DD066E /* error.c in Sources */, + 4C3624702D5EA17700DD066E /* utf8.c in Sources */, + 4C36246F2D5EA16A00DD066E /* str.c in Sources */, + 4C36246E2D5EA10400DD066E /* hash_u5.c in Sources */, + 4C36246C2D5EA0E500DD066E /* bolt11.c in Sources */, + 4C36246B2D5EA0D700DD066E /* invoice.c in Sources */, + 4C36246A2D5EA0CB00DD066E /* content_parser.c in Sources */, + 4C3624692D5EA0C200DD066E /* list.c in Sources */, + 4C3624682D5EA0BC00DD066E /* nostr_bech32.c in Sources */, + 4C3624672D5EA0B100DD066E /* take.c in Sources */, + 4C3624662D5EA07000DD066E /* sha256.c in Sources */, + 4C3624652D5EA06400DD066E /* bech32.c in Sources */, + 4C3624642D5EA01600DD066E /* tal.c in Sources */, + 4C3624632D5EA01100DD066E /* block.c in Sources */, + 4C3624622D5EA00300DD066E /* nostrdb.c in Sources */, + 4C3624612D5E9FFD00DD066E /* wasm.c in Sources */, + 4C36245C2D5E9B4400DD066E /* NdbBlocksIterator.swift in Sources */, + 4C36245D2D5E9B4400DD066E /* NdbBlock.swift in Sources */, + 4C36245B2D5E9B2F00DD066E /* NdbProfile.swift in Sources */, D7F360262CEBBD8B009D34DA /* PresentFullScreenItemNotify.swift in Sources */, 82D6FA9A2CD9820500C925F4 /* ShareViewController.swift in Sources */, 82D6FAA92CD99F7900C925F4 /* FbConstants.swift in Sources */, @@ -6052,7 +6009,6 @@ 82D6FABB2CD99F7900C925F4 /* emitter.c in Sources */, 82D6FABC2CD99F7900C925F4 /* refmap.c in Sources */, 82D6FABD2CD99F7900C925F4 /* verifier.c in Sources */, - 82D6FABE2CD99F7900C925F4 /* NdbProfile.swift in Sources */, D78F08112D7F78F900FC6C75 /* Response.swift in Sources */, 82D6FABF2CD99F7900C925F4 /* NdbTagIterator.swift in Sources */, 82D6FAC02CD99F7900C925F4 /* NdbNote.swift in Sources */, @@ -6061,31 +6017,12 @@ 82D6FAC32CD99F7900C925F4 /* Ndb.swift in Sources */, 82D6FAC42CD99F7900C925F4 /* NdbTagsIterator.swift in Sources */, 82D6FAC52CD99F7900C925F4 /* NdbTxn.swift in Sources */, - 82D6FAC62CD99F7900C925F4 /* nostrdb.c in Sources */, 82D6FAC72CD99F7900C925F4 /* midl.c in Sources */, 82D6FAC82CD99F7900C925F4 /* mdb.c in Sources */, 82D6FAC92CD99F7900C925F4 /* NdbNote+.swift in Sources */, 82D6FACA2CD99F7900C925F4 /* NostrScript.swift in Sources */, 82D6FACB2CD99F7900C925F4 /* nostrscript.c in Sources */, - 82D6FACC2CD99F7900C925F4 /* error.c in Sources */, - 82D6FACD2CD99F7900C925F4 /* wasm.c in Sources */, D73C7EDA2DE51690001F9392 /* OnboardingSuggestionsView.swift in Sources */, - 82D6FACE2CD99F7900C925F4 /* damus.c in Sources */, - 82D6FACF2CD99F7900C925F4 /* utf8.c in Sources */, - 82D6FAD02CD99F7900C925F4 /* bolt11.c in Sources */, - 82D6FAD12CD99F7900C925F4 /* hash_u5.c in Sources */, - 82D6FAD22CD99F7900C925F4 /* sha256.c in Sources */, - 82D6FAD32CD99F7900C925F4 /* bech32.c in Sources */, - 82D6FAD42CD99F7900C925F4 /* bech32_util.c in Sources */, - 82D6FAD52CD99F7900C925F4 /* tal.c in Sources */, - 82D6FAD62CD99F7900C925F4 /* node_id.c in Sources */, - 82D6FAD72CD99F7900C925F4 /* mem.c in Sources */, - 82D6FAD82CD99F7900C925F4 /* hex.c in Sources */, - 82D6FAD92CD99F7900C925F4 /* amount.c in Sources */, - 82D6FADA2CD99F7900C925F4 /* take.c in Sources */, - 82D6FADB2CD99F7900C925F4 /* talstr.c in Sources */, - 82D6FADC2CD99F7900C925F4 /* list.c in Sources */, - 82D6FADD2CD99F7900C925F4 /* nostr_bech32.c in Sources */, 82D6FADE2CD99F7900C925F4 /* ThreadReply.swift in Sources */, 82D6FADF2CD99F7900C925F4 /* AttachedWalletNotify.swift in Sources */, 82D6FAE02CD99F7900C925F4 /* DisplayTabBarNotify.swift in Sources */, @@ -6541,6 +6478,20 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C36247D2D5EA22300DD066E /* invoice.c in Sources */, + 4C36247C2D5EA21F00DD066E /* amount.c in Sources */, + 4C36247B2D5EA21200DD066E /* hash_u5.c in Sources */, + 4C36247A2D5EA20C00DD066E /* bech32.c in Sources */, + 4C3624792D5EA20200DD066E /* bolt11.c in Sources */, + 4C3624782D5EA1FE00DD066E /* error.c in Sources */, + 4C3624772D5EA1FA00DD066E /* nostr_bech32.c in Sources */, + 4C3624762D5EA1F600DD066E /* content_parser.c in Sources */, + 4C3624752D5EA1E000DD066E /* block.c in Sources */, + 4C3624742D5EA1D700DD066E /* wasm.c in Sources */, + 4C3624732D5EA1BE00DD066E /* nostrdb.c in Sources */, + 4C3624602D5E9EB800DD066E /* NdbProfile.swift in Sources */, + 4C36245E2D5E9B5F00DD066E /* NdbBlocksIterator.swift in Sources */, + 4C36245F2D5E9B5F00DD066E /* NdbBlock.swift in Sources */, D73E5E202C6A97F4007EB227 /* AttachedWalletNotify.swift in Sources */, D73E5E212C6A97F4007EB227 /* DisplayTabBarNotify.swift in Sources */, D73E5E222C6A97F4007EB227 /* BroadcastNotify.swift in Sources */, @@ -6924,9 +6875,7 @@ D703D7602C670AAB00A400EA /* MigratedTypes.swift in Sources */, D73E5F742C6A9890007EB227 /* damusApp.swift in Sources */, D73E5E192C6A965A007EB227 /* DamusState.swift in Sources */, - D703D74F2C6709ED00A400EA /* (null) in Sources */, D73E5F872C6AA639007EB227 /* ImageCarousel.swift in Sources */, - D703D7932C670DAF00A400EA /* (null) in Sources */, D703D7732C670B8500A400EA /* Offset.swift in Sources */, D703D7572C670A5A00A400EA /* IdType.swift in Sources */, D703D7542C670A2A00A400EA /* MediaUploader.swift in Sources */, @@ -6936,14 +6885,10 @@ D703D7552C670A3700A400EA /* DamusUserDefaults.swift in Sources */, 5C4FA8002DC5119300CE658C /* FollowPackPreview.swift in Sources */, 5C8498042D5D150000F74FEB /* ZapExplainer.swift in Sources */, - D703D7A32C670E1D00A400EA /* (null) in Sources */, - D703D7992C670DF900A400EA /* (null) in Sources */, - D703D7972C670DED00A400EA /* (null) in Sources */, D703D7842C670C4700A400EA /* SequenceUtils.swift in Sources */, D703D7912C670D1E00A400EA /* DisplayName.swift in Sources */, D703D7B02C6710A500A400EA /* Root.swift in Sources */, D703D7822C670C3400A400EA /* InsertSort.swift in Sources */, - D703D79E2C670E0F00A400EA /* (null) in Sources */, D703D7B12C6710AB00A400EA /* LocalizationUtil.swift in Sources */, D703D74D2C6709D400A400EA /* Zap.swift in Sources */, D73E5E1C2C6A9677007EB227 /* DirectMessagesModel.swift in Sources */, @@ -6956,7 +6901,6 @@ D703D77E2C670C1100A400EA /* NostrKind.swift in Sources */, D73E5F972C6AA7B7007EB227 /* SuggestedHashtagsView.swift in Sources */, D703D7B22C6710AF00A400EA /* ContentParsing.swift in Sources */, - D703D79F2C670E1200A400EA /* (null) in Sources */, D703D7522C670A1400A400EA /* Log.swift in Sources */, D73E5E1B2C6A9672007EB227 /* LikeCounter.swift in Sources */, D703D7A92C670E5A00A400EA /* refmap.c in Sources */, @@ -6964,20 +6908,16 @@ D703D77B2C670BF000A400EA /* TableVerifier.swift in Sources */, 3ACF94442DA9FCAB00971A4E /* NIP05DomainTimelineView.swift in Sources */, D703D76D2C670B4500A400EA /* ZapDataModel.swift in Sources */, - D703D79D2C670E0700A400EA /* (null) in Sources */, - D703D79B2C670E0000A400EA /* (null) in Sources */, D703D75D2C670A8E00A400EA /* ReferencedId.swift in Sources */, D703D7772C670BCE00A400EA /* Verifiable.swift in Sources */, D703D7642C670AE300A400EA /* StringCodable.swift in Sources */, D703D7A52C670E3E00A400EA /* mdb.c in Sources */, D703D76B2C670B3100A400EA /* Referenced.swift in Sources */, D73BDB192D71311900D69970 /* UserRelayListErrors.swift in Sources */, - D703D7952C670DE600A400EA /* (null) in Sources */, D703D7582C670A6000A400EA /* Id.swift in Sources */, 5C05675A2C8FBDE70073F23A /* NDBSearchView.swift in Sources */, D703D76E2C670B4900A400EA /* NdbTagsIterator.swift in Sources */, D78BA6672DD7DFB9000AE62C /* InterestSelectionView.swift in Sources */, - D703D7A02C670E1500A400EA /* (null) in Sources */, D703D7692C670B2600A400EA /* Block.swift in Sources */, D703D77D2C670C0300A400EA /* FlatbuffersErrors.swift in Sources */, D703D7A62C670E5200A400EA /* builder.c in Sources */, @@ -6993,13 +6933,9 @@ D703D7882C670C8200A400EA /* FriendFilter.swift in Sources */, D703D7562C670A4C00A400EA /* TranslationService.swift in Sources */, D703D7A72C670E5500A400EA /* json_parser.c in Sources */, - D703D79C2C670E0300A400EA /* (null) in Sources */, - D703D7712C670B6D00A400EA /* (null) in Sources */, - D703D7A22C670E1A00A400EA /* (null) in Sources */, D703D7A42C670E3C00A400EA /* midl.c in Sources */, D7DB1FE02D5A78CE00CF06DA /* NIP44.swift in Sources */, D706C5B02D5D31C20027C627 /* AutoSaveIndicatorView.swift in Sources */, - D703D7982C670DF200A400EA /* utf8.c in Sources */, D703D78B2C670C9500A400EA /* MakeZapRequest.swift in Sources */, D703D7862C670C6500A400EA /* NewUnmutesNotify.swift in Sources */, D703D7662C670AFC00A400EA /* AsciiCharacter.swift in Sources */, @@ -7007,17 +6943,14 @@ D703D7432C67084F00A400EA /* Ndb.swift in Sources */, D703D7B32C6710BF00A400EA /* NewMutesNotify.swift in Sources */, D703D78C2C670CAB00A400EA /* ProofOfWork.swift in Sources */, - D703D7A12C670E1700A400EA /* (null) in Sources */, D703D7782C670BD900A400EA /* LNUrlPayRequest.swift in Sources */, D703D7612C670AC000A400EA /* FlatBufferObject.swift in Sources */, - D703D7942C670DE300A400EA /* (null) in Sources */, D703D74A2C6709C200A400EA /* MuteItem.swift in Sources */, D703D77C2C670BFB00A400EA /* Enum.swift in Sources */, D73E5E1F2C6A969E007EB227 /* RelayModelCache.swift in Sources */, D703D7AB2C670F6900A400EA /* UnmuteThreadNotify.swift in Sources */, D703D7702C670B5F00A400EA /* UserStatus.swift in Sources */, D703D7752C670BBF00A400EA /* Constants.swift in Sources */, - D703D7832C670C3900A400EA /* (null) in Sources */, D73E5E172C6A962A007EB227 /* ImageUploadModel.swift in Sources */, D703D76A2C670B2C00A400EA /* Bech32Object.swift in Sources */, D73E5E162C6A9619007EB227 /* PostView.swift in Sources */, @@ -7037,10 +6970,8 @@ D703D7A82C670E5800A400EA /* emitter.c in Sources */, D703D76F2C670B5200A400EA /* NostrResponse.swift in Sources */, D703D7902C670D1600A400EA /* NewEventsBits.swift in Sources */, - D703D7962C670DEA00A400EA /* (null) in Sources */, D703D75E2C670A9A00A400EA /* NdbTagElem.swift in Sources */, D703D7622C670ACB00A400EA /* ByteBuffer.swift in Sources */, - D703D79A2C670DFD00A400EA /* (null) in Sources */, D703D7B62C67118200A400EA /* String+extension.swift in Sources */, D74EA08A2D2BF2A7002290DD /* URLHandler.swift in Sources */, D703D76C2C670B3900A400EA /* Post.swift in Sources */, diff --git a/damus/Core/Types/Block.swift b/damus/Core/Types/Block.swift @@ -115,11 +115,26 @@ fileprivate extension Block { fileprivate extension Block { /// Failable initializer for the C-backed type `invoice_block_t`. init?(invoice: ndb_invoice_block) { - guard let invoice = invoice.as_invoice() else { return nil } + + guard let invoice = invoice_block_as_invoice(invoice) else { return nil } self = .invoice(invoice) } } +func invoice_block_as_invoice(_ invoice: ndb_invoice_block) -> Invoice? { + let invstr = invoice.invstr.as_str() + let b11 = invoice.invoice + + guard let description = convert_invoice_description(b11: b11) else { + return nil + } + + let amount: Amount = b11.amount == 0 ? .any : .specific(Int64(b11.amount)) + + return Invoice(description: description, amount: amount, string: invstr, expiry: b11.expiry, created_at: b11.timestamp) + +} + fileprivate extension Block { /// Failable initializer for the C-backed type `mention_bech32_block_t`. This initializer will inspect the /// bech32 type code and build the appropriate enum type. diff --git a/damus/Features/Chat/ChatEventView.swift b/damus/Features/Chat/ChatEventView.swift @@ -144,7 +144,7 @@ struct ChatEventView: View { let blur_images = should_blur_images(settings: damus_state.settings, contacts: damus_state.contacts, ev: event, our_pubkey: damus_state.pubkey) NoteContentView(damus_state: damus_state, event: event, blur_images: blur_images, size: .normal, options: [.truncate_content]) .padding(2) - if let mention = first_eref_mention(ev: event, keypair: damus_state.keypair) { + if let mention = first_eref_mention(ndb: damus_state.ndb, ev: event, keypair: damus_state.keypair) { MentionView(damus_state: damus_state, mention: mention) .background(DamusColors.adaptableWhite) .clipShape(RoundedRectangle(cornerSize: CGSize(width: 10, height: 10))) diff --git a/damus/Features/Posting/Models/DraftsModel.swift b/damus/Features/Posting/Models/DraftsModel.swift @@ -93,8 +93,10 @@ class DraftArtifacts: Equatable { /// - draft_id: The unique ID of this draft, used for keeping draft identities stable. UUIDs are recommended but not required. /// - damus_state: The user's Damus state, used for fetching profiles in NostrDB /// - Returns: The draft that can be loaded into `PostView`. - static func from(event: NostrEvent, draft_id: String, damus_state: DamusState) -> DraftArtifacts { - let parsed_blocks = parse_note_content(content: .init(note: event, keypair: damus_state.keypair)) + static func from(event: NostrEvent, draft_id: String, damus_state: DamusState) -> DraftArtifacts? { + guard let parsed_blocks = parse_note_content(content: .init(note: event, keypair: damus_state.keypair)) else { + return nil + } return Self.from(parsed_blocks: parsed_blocks, references: Array(event.references), draft_id: draft_id, damus_state: damus_state) } @@ -112,7 +114,7 @@ class DraftArtifacts: Equatable { for block in parsed_blocks.blocks { switch block { case .mention(let mention): - if case .pubkey(let pubkey) = mention.ref { + if let pubkey = mention.ref.nip19.pubkey() { // A profile reference, format things properly. let profile = damus_state.ndb.lookup_profile(pubkey)?.unsafeUnownedValue?.profile let profile_name = DisplayName(profile: profile, pubkey: pubkey).username @@ -128,12 +130,10 @@ class DraftArtifacts: Equatable { ] ) rich_text_content.append(attributed_string) - } - else if case .note(_) = mention.ref { + } else if case .note(_) = mention.ref.nip19 { // These note references occur when we quote a note, and since that is tracked via `PostAction` in `PostView`, ignore it here to avoid attaching the same event twice in a note continue - } - else { + } else { // Other references rich_text_content.append(.init(string: block.asString)) } @@ -195,7 +195,10 @@ class Drafts: ObservableObject { ) else { return } // Find out where to place these drafts - let blocks = parse_note_content(content: .note(nip37_draft.unwrapped_note)) + guard let blocks = parse_note_content(content: .note(nip37_draft.unwrapped_note)) else { + return + } + switch known_kind { case .text: if let replied_to_note_id = nip37_draft.unwrapped_note.direct_replies() { @@ -204,7 +207,7 @@ class Drafts: ObservableObject { else { for block in blocks.blocks { if case .mention(let mention) = block { - if case .note(let note_id) = mention.ref { + if case .note(let note_id) = mention.ref.nip19 { self.quotes[note_id] = draft_artifacts return } diff --git a/damus/Shared/Utilities/Bech32Object.swift b/damus/Shared/Utilities/Bech32Object.swift @@ -102,6 +102,19 @@ enum Bech32Object : Equatable, Hashable { case nrelay(String) case naddr(NAddr) + func pubkey() -> Pubkey? { + switch self { + case .nprofile(let nprofile): return nprofile.author + case .npub(let pubkey): return pubkey + case .nevent(let ev): return ev.author + case .naddr(let naddr): return naddr.author + case .nscript: return nil + case .nsec: return nil // TODO privkey_to_pubkey ? + case .note: return nil + case .nrelay: return nil + } + } + init?(block: ndb_mention_bech32_block) { let b32 = block.bech32 switch block.bech32_type { @@ -124,7 +137,7 @@ enum Bech32Object : Equatable, Hashable { author = Pubkey(nevent.pubkey.as_data(size: 32)) } var kind: UInt32? = nil - if nevent.has_kind != 0 { + if nevent.has_kind { kind = nevent.kind } @@ -199,7 +212,7 @@ func decodeCBech32(_ b: nostr_bech32_t) -> Bech32Object? { case NOSTR_BECH32_NEVENT: let note_id = NoteId(Data(bytes: b.nevent.event_id, count: 32)) let pubkey = b.nevent.pubkey != nil ? Pubkey(Data(bytes: b.nevent.pubkey, count: 32)) : nil - let kind: UInt32? = b.nevent.has_kind == 0 ? nil : b.nevent.kind + let kind: UInt32? = !b.nevent.has_kind ? nil : b.nevent.kind let relays = b.nevent.relays.as_urls() return .nevent(NEvent(noteid: note_id, relays: relays, author: pubkey, kind: kind)) case NOSTR_BECH32_NPUB: diff --git a/nostrdb/Ndb.swift b/nostrdb/Ndb.swift @@ -112,7 +112,7 @@ class Ndb { while !ok && mapsize > 1024 * 1024 * 700 { var cfg = ndb_config(flags: 0, ingester_threads: ingest_threads, mapsize: mapsize, filter_context: nil, ingest_filter: nil, sub_cb_ctx: nil, sub_cb: nil) let res = ndb_init(&ndb_p, testdir, &cfg); - let ok = res != 0; + ok = res != 0; if !ok { Log.error("ndb_init failed: %d, reducing mapsize from %d to %d", for: .storage, res, mapsize, mapsize / 2) mapsize /= 2 diff --git a/nostrdb/src/nostrdb.h b/nostrdb/src/nostrdb.h @@ -390,7 +390,7 @@ struct bech32_nrelay { struct ndb_str_block relay; }; -struct nostr_bech32 { +typedef struct nostr_bech32 { enum nostr_bech32_type type; union { @@ -402,7 +402,7 @@ struct nostr_bech32 { struct bech32_naddr naddr; struct bech32_nrelay nrelay; }; -}; +} nostr_bech32_t; struct ndb_mention_bech32_block {