Skip to content

Commit 2aeba3c

Browse files
committed
implement timestamps for chat messages
1 parent d97f6bc commit 2aeba3c

File tree

3 files changed

+60
-25
lines changed

3 files changed

+60
-25
lines changed
Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,56 @@
1+
using System.Globalization;
2+
13
namespace Jordnaer.Client.Extensions;
24

35
public static class DateTimeExtensions
46
{
5-
public static string GetTimePassed(this DateTime date)
7+
public static string DisplayExactTime(this DateTime date) =>
8+
$"afsendt {date.ToLocalTime().ToString("d/M yyyy kl. HH:mm", new CultureInfo("da-DK"))}";
9+
10+
public static string DisplayTimePassed(this DateTime date)
611
{
712
var timeSpan = DateTime.UtcNow.Subtract(date);
813

9-
if (timeSpan.TotalSeconds < 60)
10-
return "lige sendt";
11-
12-
if (timeSpan.TotalMinutes < 60)
13-
return $"{Math.Floor(timeSpan.TotalMinutes)} minutter siden";
14-
15-
if (timeSpan.TotalHours < 24)
16-
return $"{Math.Floor(timeSpan.TotalHours)} timer siden";
17-
if (timeSpan.TotalDays < 7)
18-
return $"{Math.Floor(timeSpan.TotalDays)} dage siden";
14+
switch (timeSpan.TotalSeconds)
15+
{
16+
case < 15:
17+
return "lige sendt";
18+
case < 60:
19+
return $"sendt for {Math.Floor(timeSpan.TotalSeconds)} sekunder siden";
20+
}
21+
22+
switch (timeSpan.TotalMinutes)
23+
{
24+
case 1:
25+
return $"sendt for 1 minut siden";
26+
case < 60:
27+
return $"sendt for {Math.Floor(timeSpan.TotalMinutes)} minutter siden";
28+
}
29+
30+
switch (timeSpan.TotalHours)
31+
{
32+
case 1:
33+
return $"sendt for 1 time siden";
34+
case < 24:
35+
return $"sendt for {Math.Floor(timeSpan.TotalHours)} timer siden";
36+
}
37+
38+
switch (timeSpan.TotalDays)
39+
{
40+
case 1:
41+
return "sendt igår";
42+
case < 7:
43+
return $"sendt for {Math.Floor(timeSpan.TotalDays)} dage siden";
44+
}
1945

2046
int weeks = (int)Math.Floor(timeSpan.TotalDays / 7);
2147

22-
if (weeks is >= 1 and < 2)
23-
return "sidste uge";
48+
if (weeks is 1)
49+
return "sendt i sidste uge";
2450

2551
if (timeSpan.TotalDays < 365)
26-
return $"{weeks} uger siden";
52+
return $"sendt for {weeks} uger siden";
2753

28-
return $"afsendt {date.ToLocalTime():g}";
54+
return $"afsendt {date.ToLocalTime():dd/MM/yyyy HH:mm:ss}";
2955
}
3056
}

src/web/Client/Features/Chat/LargeChatComponent.razor

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,28 @@
5555
@if (IsMessageFromSelf(message))
5656
{
5757
<MudListItem Class="message-from-self">
58-
<MudChip Text="@message.Text"
59-
Class="chat-chip px-2 py-1" />
60-
</MudListItem>
58+
59+
<MudTooltip Placement="Placement.Top" ShowOnClick ShowOnHover="false" Arrow Text="@message.SentUtc.DisplayExactTime()">
60+
<MudTooltip ShowOnHover Arrow Text="@message.SentUtc.DisplayTimePassed()">
61+
<MudChip Text="@message.Text"
62+
Class="chat-chip px-2 py-1" />
63+
</MudTooltip>
64+
</MudTooltip>
65+
</MudListItem>
6166
}
6267
else
6368
{
6469
<MudListItem>
65-
<MudChip Class="pl-0 pb-0 chat-chip">
66-
<MudAvatar Size="Size.Medium" Class="mr-2">
67-
<MudImage Src="@message.Sender.ProfilePictureUrl" loading="lazy" Alt="Avatar" />
68-
</MudAvatar>
69-
@message.Text
70-
</MudChip>
70+
<MudTooltip Placement="Placement.Top" ShowOnClick ShowOnHover="false" Arrow Text="@message.SentUtc.DisplayExactTime()">
71+
<MudTooltip ShowOnHover Arrow Text="@message.SentUtc.DisplayTimePassed()">
72+
<MudChip Class="pl-0 pb-0 chat-chip">
73+
<MudAvatar Size="Size.Medium" Class="mr-2">
74+
<MudImage Src="@message.Sender.ProfilePictureUrl" loading="lazy" Alt="Avatar" />
75+
</MudAvatar>
76+
@message.Text
77+
</MudChip>
78+
</MudTooltip>
79+
</MudTooltip>
7180
</MudListItem>
7281
}
7382

src/web/Client/Features/Chat/SmallChatComponent.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ else
2323
@foreach (var message in _activeChat!.Messages)
2424
{
2525
<MudListItem>
26-
@message.SentUtc.GetTimePassed(): @message.Text
26+
@message.SentUtc.DisplayTimePassed(): @message.Text
2727
</MudListItem>
2828
}
2929
</MudList>

0 commit comments

Comments
 (0)