commit 2ab552f5f8e8b4bce698fb8278f982b1d8101a50
parent 0a78307336aec3853a8f1578dfbe5394938694f8
Author: William Casarin <jb55@jb55.com>
Date:   Wed,  9 Nov 2022 12:19:44 -0800
render event deletion
Diffstat:
3 files changed, 64 insertions(+), 16 deletions(-)
diff --git a/webv2/damus.css b/webv2/damus.css
@@ -16,6 +16,12 @@
     width: 60px;
 }
 
+.deleted-comment {
+	border: 2px dashed white;
+	border-radius: 10px;
+	padding: 10px;
+}
+
 .clickable {
 	cursor: pointer;
 }
@@ -202,6 +208,7 @@ html {
 	margin: 0 15px 0 15px;
 	width: 60px;
 	height: 60px;
+	font-size: 2.4em;
 }
 
 
diff --git a/webv2/damus.js b/webv2/damus.js
@@ -732,12 +732,30 @@ function render_replying_to(model, ev) {
 	const names = ev.refs.pubkeys.map(pk => render_mentioned_name(pk, model.profiles[pk])).join(", ")
 
 	return `
-	<div class="replying-to small-txt">
+	<span class="replying-to small-txt">
 		replying to ${names}
-	</div>
+	</span>
+	`
+}
+
+function render_delete_post(model, ev) {
+	if (model.pubkey !== ev.pubkey)
+		return ""
+
+	return `
+	<span onclick="delete_post_confirm('${ev.id}')" class="clickable" style="float: right">
+	✕
+	</span>
 	`
 }
 
+function delete_post_confirm(evid) {
+	if (!confirm("Are you sure you want to delete this post?"))
+		return
+
+	delete_post(evid)
+}
+
 function render_unknown_event(model, ev) {
 	return "Unknown event"
 }
@@ -761,9 +779,38 @@ function shouldnt_render_event(model, ev, opts) {
 	return !opts.is_boost_event && !opts.is_composing && !model.expanded.has(ev.id) && model.rendered[ev.id]
 }
 
+function render_deleted_name() {
+	return "???"
+}
+
+function render_deleted_pfp() {
+	return `<div class="pfp pfp-normal">😵</div>`
+}
+
+function render_comment_body(model, ev, opts) {
+	const bar = !can_reply(ev) || opts.nobar? "" : render_action_bar(ev)
+	const show_media = !opts.is_composing
+
+	return `
+	<div>
+	${render_replying_to(model, ev)}
+	${render_delete_post(model, ev)}
+	</div>
+	<p>
+	${format_content(ev, show_media)}
+	</p>
+	${render_reactions(model, ev)}
+	${bar}
+	`
+}
+
+function render_deleted_comment_body() {
+	return `
+	<div class="deleted-comment">This comment was deleted</div>
+	`
+}
+
 function render_event(model, ev, opts={}) {
-	if (is_deleted(model, ev.id))
-		return "Deleted :("
 	if (ev.kind === 6)
 		return render_boost(model, ev, opts)
 	if (shouldnt_render_event(model, ev, opts))
@@ -772,7 +819,6 @@ function render_event(model, ev, opts={}) {
 	model.rendered[ev.id] = true
 	const profile = model.profiles[ev.pubkey] || DEFAULT_PROFILE
 	const delta = time_delta(new Date().getTime(), ev.created_at*1000)
-	const bar = !can_reply(ev) || opts.nobar? "" : render_action_bar(ev)
 
 	const has_bot_line = opts.is_reply
 	const reply_line_bot = (has_bot_line && render_reply_line_bot()) || ""
@@ -780,27 +826,22 @@ function render_event(model, ev, opts={}) {
 	const replied_events = render_replied_events(model, ev, opts)
 	const reply_line_top = replied_events === "" ? "" : render_reply_line_top()
 
-	const show_media = !opts.is_composing
+	const deleted = is_deleted(model, ev.id)
 
 	return `
 	${replied_events}
 	<div id="ev${ev.id}" class="comment">
 		<div class="info">
-			${render_name(ev.pubkey, profile)}
+			${deleted ? render_deleted_name() : render_name(ev.pubkey, profile)}
 			<span class="timestamp">${delta}</span>
 		</div>
 		<div class="pfpbox">
 			${reply_line_top}
-			${render_pfp(ev.pubkey, profile)}
+			${deleted ? render_deleted_pfp() : render_pfp(ev.pubkey, profile)}
 			${reply_line_bot}
 		</div>
 		<div class="comment-body">
-			${render_replying_to(model, ev)}
-			<p>
-			${format_content(ev, show_media)}
-			</p>
-			${render_reactions(model, ev)}
-			${bar}
+			${deleted ? render_deleted_comment_body() : render_comment_body(model, ev, opts)}
 		</div>
 	</div>
 	`
diff --git a/webv2/index.html b/webv2/index.html
@@ -6,7 +6,7 @@
 
         <title>Damus</title>
 
-        <link rel="stylesheet" href="damus.css?v=16">
+        <link rel="stylesheet" href="damus.css?v=17">
     </head>
     <body>
 	<section class="header">
@@ -41,7 +41,7 @@
     <script src="noble-secp256k1.js?v=1"></script>
     <script src="bech32.js?v=1"></script>
     <script src="nostr.js?v=6"></script>
-    <script src="damus.js?v=51"></script>
+    <script src="damus.js?v=52"></script>
     <script>
 	// I have to delay loading to wait for nos2x
 	const relay = setTimeout(damus_web_init, 100)