Compare commits
2 Commits
d61f2ed938
...
51416aec01
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51416aec01 | ||
|
|
a5c6ab9020 |
|
|
@ -27,6 +27,7 @@
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
padding: 0 5px 0 5px;
|
padding: 0 5px 0 5px;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,16 @@
|
||||||
.server {
|
.full-width {
|
||||||
padding-left: 10px;
|
display: flex;
|
||||||
font-size: 25px;
|
align-items: center;
|
||||||
font-family: minecraft-text, 'opensans-bold', sans-serif;
|
padding-top: 15px;
|
||||||
letter-spacing: 2px;
|
padding-bottom: 15px;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.server {
|
||||||
|
font-size: 20px;
|
||||||
|
font-family: minecraft-text, 'opensans-bold', sans-serif;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
@for (message of messages(); track message.timestamp) {
|
<div class="message-container">
|
||||||
<p>
|
@for (message of messages(); track message.timestamp) {
|
||||||
|
<p class="message">
|
||||||
<span class="date-time" [class.blocked]="!message.notBlocked">
|
<span class="date-time" [class.blocked]="!message.notBlocked">
|
||||||
[{{ message.timestamp * 1000 | date: 'mediumTime' }}]
|
[{{ message.timestamp * 1000 | date: 'mediumTime' }}]
|
||||||
</span>
|
</span>
|
||||||
<mini-message [node]="message.messageJson"></mini-message>
|
<mini-message [node]="message.messageJson"></mini-message>
|
||||||
</p>
|
</p>
|
||||||
}
|
}
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,20 @@
|
||||||
|
:host {
|
||||||
|
display: block;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
.blocked {
|
.blocked {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,19 +5,25 @@
|
||||||
.server {
|
.server {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 2px 2px 2px 10px;
|
align-items: center;
|
||||||
|
padding: 10px 20px;
|
||||||
border-bottom: 1px solid #222;
|
border-bottom: 1px solid #222;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.2s;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #202c42;
|
||||||
|
}
|
||||||
|
|
||||||
.server-name {
|
.server-name {
|
||||||
color: white
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification {
|
.notification {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 10px;
|
right: 15px;
|
||||||
top: 50%;
|
color: #3b82f6;
|
||||||
transform: translateY(-50%);
|
|
||||||
color: blue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ export class ChatService implements OnDestroy {
|
||||||
private eventSource?: EventSourcePolyfill;
|
private eventSource?: EventSourcePolyfill;
|
||||||
private readonly authService: AuthService = inject(AuthService)
|
private readonly authService: AuthService = inject(AuthService)
|
||||||
private readonly _messages = signal<ChatMessage[]>([])
|
private readonly _messages = signal<ChatMessage[]>([])
|
||||||
public readonly messages = computed(() => this._messages().filter((message) => message.server === this._selectedServer()));
|
public readonly messages = computed(() => this._messages().filter((message) => message.server === this._selectedServer()).sort((a, b) => a.timestamp - b.timestamp));
|
||||||
private readonly _servers = signal<ChatServer[]>([])
|
private readonly _servers = signal<ChatServer[]>([])
|
||||||
public readonly servers = computed(() => this._servers().sort((a, b) => a.server.localeCompare(b.server)));
|
public readonly servers = computed(() => this._servers().sort((a, b) => a.server.localeCompare(b.server)));
|
||||||
private readonly _selectedServer = signal<string>('');
|
private readonly _selectedServer = signal<string>('');
|
||||||
|
|
@ -53,7 +53,7 @@ export class ChatService implements OnDestroy {
|
||||||
this.on(source, 'chat', (event) => {
|
this.on(source, 'chat', (event) => {
|
||||||
const chatMessages = this.processChatMessages(event);
|
const chatMessages = this.processChatMessages(event);
|
||||||
chatMessages.forEach((message) => {
|
chatMessages.forEach((message) => {
|
||||||
const find = this.servers().find(server => message.server === server.server);
|
const find = this.servers().find(server => message.server === server.server && message.server !== this._selectedServer());
|
||||||
if (find) {
|
if (find) {
|
||||||
find.unreadMessages++;
|
find.unreadMessages++;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user