diff --git a/internal/webserver/static/styles.css b/internal/webserver/static/styles.css
index 4084ae9..26215d8 100644
--- a/internal/webserver/static/styles.css
+++ b/internal/webserver/static/styles.css
@@ -746,3 +746,37 @@ ul.dropdown-items {
.dm-message-and-reacts-container p.posted-at {
margin: 0 4.5em;
}
+.dm-message-content-container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ max-width: 80%;
+}
+.our-message .dm-message-content-container {
+ align-items: flex-end;
+}
+.dm-message-content-container .tweet-preview {
+ border-radius: 1em;
+ border: 1px solid var(--color-outline-gray);
+ max-width: 100%;
+}
+.dm-message-content-container .replying-to-container {
+ background-color: #f0f0f0f0;
+ border-radius: 1em 1em 1em 0em;
+ padding: 0.5em 1.2em 2em 1.2em;
+ margin: 0 0 -2em 0.2em;
+ font-size: 0.9em;
+}
+.our-message .dm-message-content-container .replying-to-container {
+ border-radius: 1em 1em 0em 1em;
+ margin: 0 0.2em -2em;
+}
+.dm-message-content-container .replying-to-label {
+ font-size: 0.8em;
+ display: flex;
+ gap: 0.2em;
+}
+.dm-message-content-container .replying-to-label img.svg-icon {
+ width: 1em;
+
+}
diff --git a/internal/webserver/tpl/tweet_page_includes/chat_view.tpl b/internal/webserver/tpl/tweet_page_includes/chat_view.tpl
index 09f3ee9..4aa07e8 100644
--- a/internal/webserver/tpl/tweet_page_includes/chat_view.tpl
+++ b/internal/webserver/tpl/tweet_page_includes/chat_view.tpl
@@ -11,7 +11,31 @@
-
{{template "text-with-entities" $message.Text}}
+
+ {{if (ne $message.InReplyToID 0)}}
+
+
+

+
Replying to
+
+
+ {{(index $.DMTrove.Messages $message.InReplyToID).Text}}
+
+
+ {{end}}
+ {{if (ne $message.EmbeddedTweetID 0)}}
+
+ {{end}}
+
+ {{template "text-with-entities" $message.Text}}
+
+
{{range $message.Reactions}}
diff --git a/pkg/persistence/dm_queries.go b/pkg/persistence/dm_queries.go
index 09dd8d3..00fc8cc 100644
--- a/pkg/persistence/dm_queries.go
+++ b/pkg/persistence/dm_queries.go
@@ -337,5 +337,7 @@ func (p Profile) GetChatRoomContents(id DMChatRoomID) DMChatView {
}
}
+ p.fill_content(&ret.DMTrove.TweetTrove, UserID(0))
+
return ret
}
diff --git a/pkg/persistence/dm_queries_test.go b/pkg/persistence/dm_queries_test.go
index dcb249a..8ce630e 100644
--- a/pkg/persistence/dm_queries_test.go
+++ b/pkg/persistence/dm_queries_test.go
@@ -171,7 +171,7 @@ func TestGetChatRoomsPreview(t *testing.T) {
msg, is_ok := chat_view.Messages[room.LastMessageID]
require.True(is_ok)
- assert.Equal(msg.Text, "Check this out\nhttps://t.co/rHeWGgNIZ1")
+ assert.Equal(msg.Text, "Check this out")
require.Len(room.Participants, 2)
for _, user_id := range []UserID{1458284524761075714, 1488963321701171204} {
diff --git a/pkg/scraper/api_types_dms.go b/pkg/scraper/api_types_dms.go
index d1be2de..a80ae39 100644
--- a/pkg/scraper/api_types_dms.go
+++ b/pkg/scraper/api_types_dms.go
@@ -26,7 +26,7 @@ type APIDMMessage struct {
ReplyData struct {
ID int `json:"id,string"`
} `json:"reply_data"`
- Urls []struct {
+ URLs []struct {
Url string `json:"url"`
Indices []int `json:"indices"`
} `json:"urls"`
@@ -75,7 +75,7 @@ func (m APIDMMessage) ToDMTrove() DMTrove {
}
ret.Messages[result.ID] = result
- // TODO: parse attached images
+ // TODO: parse attached images and videos
return ret
}
diff --git a/sample_data/seed_data.sql b/sample_data/seed_data.sql
index b538f8e..a2d5ed6 100644
--- a/sample_data/seed_data.sql
+++ b/sample_data/seed_data.sql
@@ -386,7 +386,7 @@ INSERT INTO chat_messages VALUES
(1,1663623062195957773,'1458284524761075714-1488963321701171204',1488963321701171204,1685473621419,'',0,'Yes helo',0),
(2,1663623203644751885,'1458284524761075714-1488963321701171204',1458284524761075714,1685473655064,'',0,'Yeah i know who you are lol',0),
(3,1665922180176044037,'1458284524761075714-1488963321701171204',1458284524761075714,1686021773787,'',1663623062195957773,'Yes?',0),
- (4,1665936253483614212,'1458284524761075714-1488963321701171204',1458284524761075714,1686025129132,'',0,replace('Check this out\nhttps://t.co/rHeWGgNIZ1','\n',char(10)),1665509126737129472),
+ (4,1665936253483614212,'1458284524761075714-1488963321701171204',1458284524761075714,1686025129132,'',0,replace('Check this out','\n',char(10)),1665509126737129472),
(5,1665936253483614213,'1488963321701171204-1178839081222115328',1488963321701171204,1686025129140,'',0,'bruh1',0),
(6,1665936253483614214,'1488963321701171204-1178839081222115328',1178839081222115328,1686025129141,'',0,'bruh2',0),
(7,1665936253483614215,'1488963321701171204-1178839081222115328',1178839081222115328,1686025129142,'',1665936253483614214,'replying to bruh2',0),