diff --git a/web/src/drafts.ts b/web/src/drafts.ts index 69142625d4..37b1f067cc 100644 --- a/web/src/drafts.ts +++ b/web/src/drafts.ts @@ -578,6 +578,7 @@ export type FormattedDraft = } | { is_stream: false; + is_dm_with_self: boolean; draft_id: string; recipients: string; raw_content: string; @@ -653,11 +654,19 @@ export function format_draft(draft: LocalStorageDraftWithId): FormattedDraft | u }; } + let is_dm_with_self = false; const emails = util.extract_pm_recipients(draft.private_message_recipient); + if (emails.length === 1) { + const user = people.get_by_email(emails[0]!); + if (user && people.is_direct_message_conversation_with_self([user.user_id])) { + is_dm_with_self = true; + } + } const recipients = people.emails_to_full_names_string(emails); return { draft_id: draft.id, is_stream: false, + is_dm_with_self, recipients, raw_content: draft.content, time_stamp, diff --git a/web/src/drafts_overlay_ui.ts b/web/src/drafts_overlay_ui.ts index 99bfdb302c..56c844e509 100644 --- a/web/src/drafts_overlay_ui.ts +++ b/web/src/drafts_overlay_ui.ts @@ -150,6 +150,12 @@ export function launch(): void { function get_header_for_narrow_drafts(): string { const {stream_name, topic, private_recipients} = drafts.current_recipient_data(); if (private_recipients) { + if (!private_recipients.includes(",")) { + const user = people.get_by_email(private_recipients); + if (user && people.is_direct_message_conversation_with_self([user.user_id])) { + return $t({defaultMessage: "Drafts from conversation with yourself"}); + } + } return $t( {defaultMessage: "Drafts from conversation with {recipient}"}, { diff --git a/web/templates/draft.hbs b/web/templates/draft.hbs index e94d023f48..1d14b6038a 100644 --- a/web/templates/draft.hbs +++ b/web/templates/draft.hbs @@ -28,7 +28,11 @@
+ {{#if is_dm_with_self}} + {{t "You" }} + {{else}} {{t "You and {recipients}" }} + {{/if}}
{{ time_stamp }}
diff --git a/web/tests/drafts.test.cjs b/web/tests/drafts.test.cjs index 29b2cd1044..4d911e742f 100644 --- a/web/tests/drafts.test.cjs +++ b/web/tests/drafts.test.cjs @@ -18,7 +18,7 @@ const compose_recipient = zrequire("compose_recipient"); const sub_store = zrequire("sub_store"); const stream_data = zrequire("stream_data"); const {initialize_user_settings} = zrequire("user_settings"); -const {set_realm} = zrequire("state_data"); +const {set_current_user, set_realm} = zrequire("state_data"); class Clipboard { on() {} } @@ -46,7 +46,9 @@ const zoe = { user_id: 3, full_name: "Zoe", }; +set_current_user(aaron); people.add_active_user(aaron); +people.initialize_current_user(aaron.user_id); people.add_active_user(iago); people.add_active_user(zoe); @@ -532,6 +534,7 @@ test("format_drafts", ({override, override_rewire, mock_template}) => { }, { draft_id: "id2", + is_dm_with_self: true, is_stream: false, recipients: "Aaron", raw_content: "Test direct message", @@ -539,6 +542,7 @@ test("format_drafts", ({override, override_rewire, mock_template}) => { }, { draft_id: "id5", + is_dm_with_self: false, is_stream: false, recipients: "Iago, Zoe", raw_content: "Test direct message 3", @@ -546,6 +550,7 @@ test("format_drafts", ({override, override_rewire, mock_template}) => { }, { draft_id: "id4", + is_dm_with_self: false, is_stream: false, recipients: "Iago", raw_content: "Test direct message 2", @@ -713,6 +718,7 @@ test("filter_drafts", ({override, override_rewire, mock_template}) => { const expected_pm_drafts = [ { draft_id: "id2", + is_dm_with_self: true, is_stream: false, recipients: "Aaron", raw_content: "Test direct message", @@ -720,6 +726,7 @@ test("filter_drafts", ({override, override_rewire, mock_template}) => { }, { draft_id: "id5", + is_dm_with_self: true, is_stream: false, recipients: "Aaron", raw_content: "Test direct message 3", @@ -727,6 +734,7 @@ test("filter_drafts", ({override, override_rewire, mock_template}) => { }, { draft_id: "id4", + is_dm_with_self: true, is_stream: false, recipients: "Aaron", raw_content: "Test direct message 2",