mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2025-05-24 19:54:22 -04:00
More refactoring around system notifications
This commit is contained in:
parent
7467f0aeb6
commit
2ba0c3b38e
5 changed files with 47 additions and 28 deletions
|
@ -7,6 +7,5 @@ public enum EmbedKind
|
||||||
Image,
|
Image,
|
||||||
Video,
|
Video,
|
||||||
Gifv,
|
Gifv,
|
||||||
Article,
|
|
||||||
Link
|
Link
|
||||||
}
|
}
|
|
@ -17,6 +17,5 @@ public enum MessageKind
|
||||||
|
|
||||||
public static class MessageKindExtensions
|
public static class MessageKindExtensions
|
||||||
{
|
{
|
||||||
public static bool IsSystemNotification(this MessageKind c) =>
|
public static bool IsSystemNotification(this MessageKind c) => (int)c is >= 1 and <= 18;
|
||||||
c is not MessageKind.Default and not MessageKind.Reply;
|
|
||||||
}
|
}
|
|
@ -42,7 +42,7 @@ internal class ExportContext
|
||||||
{
|
{
|
||||||
"unix" => date.ToUnixTimeSeconds().ToString(),
|
"unix" => date.ToUnixTimeSeconds().ToString(),
|
||||||
"unixms" => date.ToUnixTimeMilliseconds().ToString(),
|
"unixms" => date.ToUnixTimeMilliseconds().ToString(),
|
||||||
var dateFormat => date.ToLocalString(dateFormat)
|
var format => date.ToLocalString(format)
|
||||||
};
|
};
|
||||||
|
|
||||||
public Member? TryGetMember(Snowflake id) => Members.FirstOrDefault(m => m.Id == id);
|
public Member? TryGetMember(Snowflake id) => Members.FirstOrDefault(m => m.Id == id);
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
@inherits MiniRazor.TemplateBase<MessageGroupTemplateContext>
|
@inherits MiniRazor.TemplateBase<MessageGroupTemplateContext>
|
||||||
|
|
||||||
@{
|
@{
|
||||||
var firstMessage = Model.Messages.First();
|
|
||||||
|
|
||||||
ValueTask<string> ResolveUrlAsync(string url) => Model.ExportContext.ResolveMediaUrlAsync(url);
|
ValueTask<string> ResolveUrlAsync(string url) => Model.ExportContext.ResolveMediaUrlAsync(url);
|
||||||
|
|
||||||
string FormatDate(DateTimeOffset date) => Model.ExportContext.FormatDate(date);
|
string FormatDate(DateTimeOffset date) => Model.ExportContext.FormatDate(date);
|
||||||
|
@ -20,6 +18,8 @@
|
||||||
|
|
||||||
string FormatEmbedMarkdown(string markdown) => Model.FormatMarkdown(markdown, false);
|
string FormatEmbedMarkdown(string markdown) => Model.FormatMarkdown(markdown, false);
|
||||||
|
|
||||||
|
var firstMessage = Model.Messages.First();
|
||||||
|
|
||||||
var userMember = Model.ExportContext.TryGetMember(firstMessage.Author.Id);
|
var userMember = Model.ExportContext.TryGetMember(firstMessage.Author.Id);
|
||||||
|
|
||||||
var userColor = Model.ExportContext.TryGetUserColor(firstMessage.Author.Id);
|
var userColor = Model.ExportContext.TryGetUserColor(firstMessage.Author.Id);
|
||||||
|
@ -62,29 +62,31 @@
|
||||||
: userMember?.Nick ?? message.Author.Name;
|
: userMember?.Nick ?? message.Author.Name;
|
||||||
|
|
||||||
<div class="chatlog__message-aside">
|
<div class="chatlog__message-aside">
|
||||||
<svg class=chatlog__system-notification-icon><use href="#@message.Kind.ToString().ToDashCase().ToLowerInvariant()-icon"></use></svg>
|
<svg class="chatlog__system-notification-icon"><use href="#@message.Kind.ToString().ToDashCase().ToLowerInvariant()-icon"></use></svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chatlog__message-primary">
|
<div class="chatlog__message-primary">
|
||||||
<div class="chatlog__header">
|
@{/* Author name */}
|
||||||
@{/* Author name */}
|
<span class="chatlog__system-notification-author" style="@(userColor is not null ? $"color: rgb({userColor.Value.R}, {userColor.Value.G}, {userColor.Value.B})" : null)" title="@message.Author.FullName" data-user-id="@message.Author.Id">@userNick</span>
|
||||||
<span class="chatlog__author" style="@(userColor is not null ? $"color: rgb({userColor.Value.R}, {userColor.Value.G}, {userColor.Value.B})" : null)" title="@message.Author.FullName" data-user-id="@message.Author.Id">@userNick</span>
|
|
||||||
|
|
||||||
@{/* System notification content */}
|
@{/* System notification content */}
|
||||||
@if (message.Kind == MessageKind.ChannelPinnedMessage)
|
<span class="chatlog__system-notification-content">
|
||||||
|
@if (message.Kind == MessageKind.ChannelPinnedMessage && message.Reference is not null)
|
||||||
{
|
{
|
||||||
<span class="chatlog__system-notification"> pinned</span>
|
<span> pinned</span>
|
||||||
<span class="chatlog__system-notification-reference-link chatlog__reference-link" onclick="scrollToMessage(event, '@message.Reference?.MessageId')"> a message</span>
|
<a class="chatlog__system-notification-link" href="#chatlog__message-container-@message.Reference.MessageId"> a message</a>
|
||||||
<span class="chatlog__system-notification"> to this channel.</span>
|
<span> to this channel.</span>
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrWhiteSpace(message.Content))
|
else
|
||||||
{
|
{
|
||||||
<span class="chatlog__system-notification">@(char.ToLowerInvariant(message.Content[0]) + message.Content[1..])</span>
|
<span>@message.Content.ToLowerInvariant()</span>
|
||||||
}
|
}
|
||||||
|
</span>
|
||||||
|
|
||||||
@{/* Timestamp */}
|
@{/* Timestamp */}
|
||||||
<span class="chatlog__timestamp"><a href="#chatlog__message-container-@message.Id">@FormatDate(message.Timestamp)</a></span>
|
<span class="chatlog__system-notification-timestamp">
|
||||||
</div>
|
<a href="#chatlog__message-container-@message.Id">@FormatDate(message.Timestamp)</a>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
// Regular message
|
// Regular message
|
||||||
|
@ -168,11 +170,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@{/* Content */}
|
@{/* Content */}
|
||||||
@if (!string.IsNullOrWhiteSpace(message.Content) || message.EditedTimestamp is not null)
|
@if ((!string.IsNullOrWhiteSpace(message.Content) && !message.IsContentHidden()) || message.EditedTimestamp is not null)
|
||||||
{
|
{
|
||||||
<div class="chatlog__content chatlog__markdown">
|
<div class="chatlog__content chatlog__markdown">
|
||||||
@{/* Text */}
|
@{/* Text */}
|
||||||
@if (!message.IsContentHidden())
|
@if (!string.IsNullOrWhiteSpace(message.Content) && !message.IsContentHidden())
|
||||||
{
|
{
|
||||||
<span class="chatlog__markdown-preserve"><!--wmm:ignore-->@Raw(FormatMarkdown(message.Content))<!--/wmm:ignore--></span>
|
<span class="chatlog__markdown-preserve"><!--wmm:ignore-->@Raw(FormatMarkdown(message.Content))<!--/wmm:ignore--></span>
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
font-family: Whitney, "Helvetica Neue", Helvetica, Arial, sans-serif;
|
font-family: Whitney, "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
font-weight: @Themed("400", "500");
|
font-weight: @Themed("400", "500");
|
||||||
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
@ -254,18 +255,36 @@
|
||||||
unicode-bidi: bidi-override;
|
unicode-bidi: bidi-override;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chatlog__system-notification {
|
.chatlog__system-notification-icon {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chatlog__system-notification-author {
|
||||||
|
font-weight: @Themed("500", "600");
|
||||||
|
color: @Themed("#ffffff", "#2f3136");
|
||||||
|
}
|
||||||
|
|
||||||
|
.chatlog__system-notification-content {
|
||||||
color: @Themed("#96989d", "#5e6772")
|
color: @Themed("#96989d", "#5e6772")
|
||||||
}
|
}
|
||||||
|
|
||||||
.chatlog__system-notification-reference-link {
|
.chatlog__system-notification-link {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: @Themed("#ffffff", "#2f3136");
|
color: @Themed("#ffffff", "#2f3136");
|
||||||
}
|
}
|
||||||
|
|
||||||
.chatlog__system-notification-icon {
|
.chatlog__system-notification-timestamp {
|
||||||
width: 18px;
|
margin-left: 0.3rem;
|
||||||
height: 18px;
|
color: @Themed("#a3a6aa", "#5e6772");
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 500;
|
||||||
|
direction: ltr;
|
||||||
|
unicode-bidi: bidi-override;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chatlog__system-notification-timestamp a {
|
||||||
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chatlog__header {
|
.chatlog__header {
|
||||||
|
@ -300,7 +319,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.chatlog__timestamp a {
|
.chatlog__timestamp a {
|
||||||
color: @Themed("#a3a6aa", "#5e6772");
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chatlog__content {
|
.chatlog__content {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue