@@ -806,7 +806,7 @@
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
MARKETING_VERSION = 0.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.jb55.damus;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.jb55.damus2;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -841,7 +841,7 @@
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
MARKETING_VERSION = 0.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.jb55.damus;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.jb55.damus2;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
||||
@@ -244,7 +244,7 @@ func make_post_tags(post_blocks: [PostBlock], tags: [[String]]) -> PostTags {
|
||||
blocks.append(block)
|
||||
}
|
||||
case .hashtag(let hashtag):
|
||||
new_tags.append(["hashtag", hashtag])
|
||||
new_tags.append(["hashtag", hashtag.lowercased()])
|
||||
blocks.append(.hashtag(hashtag))
|
||||
case .text(let txt):
|
||||
blocks.append(Block.text(txt))
|
||||
|
||||
@@ -46,7 +46,6 @@ class ProfileModel: ObservableObject {
|
||||
NostrKind.contacts.rawValue,
|
||||
NostrKind.metadata.rawValue,
|
||||
NostrKind.boost.rawValue,
|
||||
NostrKind.like.rawValue
|
||||
])
|
||||
|
||||
profile_filter.authors = [pubkey]
|
||||
@@ -72,7 +71,7 @@ class ProfileModel: ObservableObject {
|
||||
if seen_event.contains(ev.id) {
|
||||
return
|
||||
}
|
||||
if ev.known_kind == .text {
|
||||
if ev.known_kind == .text || ev.known_kind == .boost {
|
||||
let _ = insert_uniq_sorted_event(events: &self.events, new_ev: ev, cmp: { $0.created_at > $1.created_at})
|
||||
} else if ev.known_kind == .contacts {
|
||||
handle_profile_contact_event(ev)
|
||||
@@ -87,7 +86,7 @@ class ProfileModel: ObservableObject {
|
||||
case .nostr_event(let resp):
|
||||
switch resp {
|
||||
case .event(let sid, let ev):
|
||||
if sid != self.sub_id {
|
||||
if sid != self.sub_id && sid != self.prof_subid {
|
||||
return
|
||||
}
|
||||
add_event(ev)
|
||||
|
||||
@@ -81,7 +81,8 @@ func parse_nostr_ref_uri(_ p: Parser) -> ReferencedId? {
|
||||
}
|
||||
|
||||
func decode_nostr_uri(_ s: String) -> NostrLink? {
|
||||
let uri = s.replacingOccurrences(of: "nostr:", with: "")
|
||||
var uri = s.replacingOccurrences(of: "nostr://", with: "")
|
||||
uri = uri.replacingOccurrences(of: "nostr:", with: "")
|
||||
|
||||
let parts = uri.split(separator: ":")
|
||||
.reduce(into: Array<String>()) { acc, str in
|
||||
@@ -93,7 +94,7 @@ func decode_nostr_uri(_ s: String) -> NostrLink? {
|
||||
}
|
||||
|
||||
if parts.count >= 2 && parts[0] == "hashtag" {
|
||||
return .filter(NostrFilter.filter_hashtag([parts[1]]))
|
||||
return .filter(NostrFilter.filter_hashtag([parts[1].lowercased()]))
|
||||
}
|
||||
|
||||
return tag_to_refid(parts).map { .ref($0) }
|
||||
|
||||
@@ -23,6 +23,7 @@ struct ChatroomView: View {
|
||||
next_ev: ind == count-1 ? nil : thread.events[ind+1],
|
||||
damus: damus
|
||||
)
|
||||
.event_context_menu(ev)
|
||||
.onTapGesture {
|
||||
if thread.initial_event.id == ev.id {
|
||||
//dismiss()
|
||||
@@ -56,12 +57,13 @@ struct ChatroomView: View {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
struct ChatroomView_Previews: PreviewProvider {
|
||||
@State var events = [NostrEvent(content: "hello", pubkey: "pubkey")]
|
||||
|
||||
static var previews: some View {
|
||||
ChatroomView(events: events)
|
||||
let state = test_damus_state()
|
||||
ChatroomView(damus: state)
|
||||
.environmentObject(ThreadModel(evid: "&849ab9bb263ed2819db06e05f1a1a3b72878464e8c7146718a2fc1bf1912f893", pool: state.pool))
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -82,6 +82,7 @@ struct EventActionBar: View {
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.top, 1)
|
||||
.onReceive(handle_notify(.liked)) { n in
|
||||
let liked = n.object as! Counted
|
||||
if liked.id != event.id {
|
||||
|
||||
@@ -65,7 +65,7 @@ struct EventView: View {
|
||||
}
|
||||
|
||||
func TextEvent(_ event: NostrEvent) -> some View {
|
||||
return HStack {
|
||||
return HStack(alignment: .top) {
|
||||
let profile = damus.profiles.lookup(id: event.pubkey)
|
||||
VStack {
|
||||
let pmodel = ProfileModel(pubkey: event.pubkey, damus: damus)
|
||||
@@ -110,7 +110,13 @@ struct EventView: View {
|
||||
.id(event.id)
|
||||
.frame(minHeight: PFP_SIZE)
|
||||
.padding([.bottom], 4)
|
||||
.contextMenu {
|
||||
.event_context_menu(event)
|
||||
}
|
||||
}
|
||||
|
||||
extension View {
|
||||
func event_context_menu(_ event: NostrEvent) -> some View {
|
||||
return self.contextMenu {
|
||||
Button {
|
||||
UIPasteboard.general.string = event.content
|
||||
} label: {
|
||||
@@ -141,10 +147,10 @@ struct EventView: View {
|
||||
Label("Broadcast", systemImage: "globe")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func format_relative_time(_ created_at: Int64) -> String
|
||||
{
|
||||
return time_ago_since(Date(timeIntervalSince1970: Double(created_at)))
|
||||
|
||||
@@ -54,26 +54,8 @@ struct PostView: View {
|
||||
}
|
||||
.padding([.top, .bottom], 4)
|
||||
|
||||
HStack(alignment: .top) {
|
||||
ZStack(alignment: .leading) {
|
||||
if self.post == "" {
|
||||
VStack {
|
||||
Text("What's happening?")
|
||||
.foregroundColor(.gray)
|
||||
.padding(6)
|
||||
Spacer()
|
||||
}
|
||||
}
|
||||
|
||||
TextEditor(text: $post)
|
||||
.focused($focus)
|
||||
}
|
||||
|
||||
|
||||
Spacer()
|
||||
}
|
||||
|
||||
Spacer()
|
||||
TextEditor(text: $post)
|
||||
.focused($focus)
|
||||
}
|
||||
.onAppear() {
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
||||
|
||||
@@ -26,7 +26,7 @@ func pfp_line_width(_ h: Highlight) -> CGFloat {
|
||||
switch h {
|
||||
case .reply: return 0
|
||||
case .none: return 0
|
||||
case .main: return 2
|
||||
case .main: return 3
|
||||
case .custom(_, let lw): return CGFloat(lw)
|
||||
}
|
||||
}
|
||||
@@ -58,6 +58,7 @@ struct ProfilePicView: View {
|
||||
return Group {
|
||||
if let img = self.img {
|
||||
img
|
||||
.resizable()
|
||||
.frame(width: size, height: size)
|
||||
.clipShape(Circle())
|
||||
.overlay(Circle().stroke(highlight_color(highlight), lineWidth: pfp_line_width(highlight)))
|
||||
|
||||
@@ -17,7 +17,8 @@ struct ReplyQuoteView: View {
|
||||
|
||||
func MainContent(event: NostrEvent) -> some View {
|
||||
HStack(alignment: .top) {
|
||||
Rectangle().frame(width: 2)
|
||||
Rectangle()
|
||||
.frame(width: 2)
|
||||
.padding([.leading], 4)
|
||||
.foregroundColor(.accentColor)
|
||||
|
||||
@@ -30,9 +31,9 @@ struct ReplyQuoteView: View {
|
||||
.foregroundColor(.gray)
|
||||
}
|
||||
|
||||
Text(event.content)
|
||||
//.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.textSelection(.enabled)
|
||||
NoteContentView(event: event, profiles: profiles, content: event.content)
|
||||
.font(.callout)
|
||||
.foregroundColor(.accentColor)
|
||||
|
||||
//Spacer()
|
||||
}
|
||||
@@ -46,7 +47,7 @@ struct ReplyQuoteView: View {
|
||||
if let event = thread.lookup(event_id) {
|
||||
MainContent(event: event)
|
||||
.padding(4)
|
||||
.frame(maxHeight: 100)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.contentShape(Rectangle())
|
||||
.onTapGesture {
|
||||
NotificationCenter.default.post(name: .select_quote, object: event)
|
||||
@@ -59,10 +60,11 @@ struct ReplyQuoteView: View {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
struct SwiftUIView_Previews: PreviewProvider {
|
||||
struct ReplyQuoteView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
SwiftUIView()
|
||||
let s = test_damus_state()
|
||||
let quoter = NostrEvent(content: "a\nb\nc", pubkey: "pubkey")
|
||||
ReplyQuoteView(quoter: quoter, event_id: "pubkey2", image_cache: s.image_cache, profiles: s.profiles)
|
||||
.environmentObject(ThreadModel(event: quoter, pool: s.pool))
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -21,7 +21,7 @@ struct ReplyView: View {
|
||||
var body: some View {
|
||||
VStack {
|
||||
Text("Replying to:")
|
||||
HStack {
|
||||
HStack(alignment: .top) {
|
||||
let names = all_referenced_pubkeys(replying_to)
|
||||
.map { pubkey in
|
||||
let pk = pubkey.ref_id
|
||||
@@ -35,8 +35,6 @@ struct ReplyView: View {
|
||||
}
|
||||
EventView(event: replying_to, highlight: .none, has_action_bar: false, damus: damus)
|
||||
PostView(references: gather_reply_ids(our_pubkey: damus.pubkey, from: replying_to))
|
||||
|
||||
Spacer()
|
||||
}
|
||||
.padding()
|
||||
|
||||
@@ -45,10 +43,8 @@ struct ReplyView: View {
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
struct ReplyView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
ReplyView()
|
||||
ReplyView(replying_to: NostrEvent(content: "hi", pubkey: "pubkey"), damus: test_damus_state())
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user