From aaab11b1d0ef024de4d6513978ea36134c004779 Mon Sep 17 00:00:00 2001 From: Alessio Date: Sat, 25 Nov 2023 14:21:09 -0800 Subject: [PATCH] Add DM message replying-to indicators/previews and render embedded tweets --- internal/webserver/static/styles.css | 34 +++++++++++++++++++ .../tpl/tweet_page_includes/chat_view.tpl | 26 +++++++++++++- pkg/persistence/dm_queries.go | 2 ++ pkg/persistence/dm_queries_test.go | 2 +- pkg/scraper/api_types_dms.go | 4 +-- sample_data/seed_data.sql | 2 +- 6 files changed, 65 insertions(+), 5 deletions(-) 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)}} +
+ {{template "tweet" (dict + "TweetID" $message.EmbeddedTweetID + "RetweetID" 0 + "QuoteNestingLevel" 1) + }} +
+ {{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),