diff --git a/internal/cli/cli_test.go b/internal/cli/cli_test.go index c464a5d..2af57e5 100644 --- a/internal/cli/cli_test.go +++ b/internal/cli/cli_test.go @@ -165,6 +165,7 @@ func TestStatusSearchSQLAndListings(t *testing.T) { require.Equal(t, "message", rows[0]["kind"]) require.Equal(t, "Guild", rows[0]["scope"]) require.Equal(t, "general", rows[0]["container"]) + require.Equal(t, "https://discord.com/channels/g1/c1/m1", rows[0]["url"]) after, err := os.ReadFile(dbPath) require.NoError(t, err) require.Equal(t, before, after, "tui --json should not mutate the database") diff --git a/internal/cli/tui_commands.go b/internal/cli/tui_commands.go index 12cdfe0..39e817e 100644 --- a/internal/cli/tui_commands.go +++ b/internal/cli/tui_commands.go @@ -131,6 +131,7 @@ func discordTUIRows(rows []store.MessageRow) []tui.Row { Author: discordAuthorLabel(row), Title: title, Text: row.Content, + URL: discordMessageURL(row), CreatedAt: formatTime(row.CreatedAt), Tags: tags, Fields: map[string]string{ @@ -147,6 +148,16 @@ func discordTUIRows(rows []store.MessageRow) []tui.Row { return items } +func discordMessageURL(row store.MessageRow) string { + guildID := strings.TrimSpace(row.GuildID) + channelID := strings.TrimSpace(row.ChannelID) + messageID := strings.TrimSpace(row.MessageID) + if guildID == "" || channelID == "" || messageID == "" { + return "" + } + return "https://discord.com/channels/" + guildID + "/" + channelID + "/" + messageID +} + func discordScopeLabel(row store.MessageRow) string { if row.GuildID == "@me" { return "Direct messages"