Browse Source

fix many small bugs

Signed-off-by: William Casarin <jb55@jb55.com>
profiles-everywhere
William Casarin 3 years ago
parent
commit
e104de6431
  1. 4
      damus.xcodeproj/project.pbxproj
  2. 2
      damus/Models/Mentions.swift
  3. 5
      damus/Models/ProfileModel.swift
  4. 5
      damus/Nostr/NostrLink.swift
  5. 8
      damus/Views/ChatroomView.swift
  6. 1
      damus/Views/EventActionBar.swift
  7. 12
      damus/Views/EventView.swift
  8. 22
      damus/Views/PostView.swift
  9. 3
      damus/Views/ProfilePicView.swift
  10. 20
      damus/Views/ReplyQuoteView.swift
  11. 8
      damus/Views/ReplyView.swift

4
damus.xcodeproj/project.pbxproj

@ -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;

2
damus/Models/Mentions.swift

@ -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))

5
damus/Models/ProfileModel.swift

@ -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)

5
damus/Nostr/NostrLink.swift

@ -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) }

8
damus/Views/ChatroomView.swift

@ -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))
}
}
*/

1
damus/Views/EventActionBar.swift

@ -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 {

12
damus/Views/EventView.swift

@ -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)))

22
damus/Views/PostView.swift

@ -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) {

3
damus/Views/ProfilePicView.swift

@ -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)))

20
damus/Views/ReplyQuoteView.swift

@ -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))
}
}
*/

8
damus/Views/ReplyView.swift

@ -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())
}
}
*/

Loading…
Cancel
Save