133 lines
4.7 KiB
HTML
133 lines
4.7 KiB
HTML
<div class="page-content">
|
|
@if (loading()) {
|
|
<div class="loading-container">
|
|
<nz-spin nzSimple nzSize="large"></nz-spin>
|
|
</div>
|
|
} @else if (message()) {
|
|
<div class="detail-header">
|
|
<button nz-button (click)="goBack()">
|
|
<span nz-icon nzType="arrow-left" nzTheme="outline"></span>
|
|
Back to Messages
|
|
</button>
|
|
@if (expertMode()) {
|
|
<div class="header-actions">
|
|
<button
|
|
nz-button
|
|
nzDanger
|
|
nz-popconfirm
|
|
nzPopconfirmTitle="Are you sure you want to delete this message?"
|
|
(nzOnConfirm)="deleteMessage()"
|
|
[nzLoading]="deleting()"
|
|
>
|
|
<span nz-icon nzType="delete"></span>
|
|
Delete
|
|
</button>
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
<nz-card [nzTitle]="message()!.title">
|
|
@if (message()!.content) {
|
|
<div class="message-content">
|
|
<pre>{{ message()!.content }}</pre>
|
|
</div>
|
|
} @else {
|
|
<div class="no-content">No content</div>
|
|
}
|
|
</nz-card>
|
|
|
|
<nz-card nzTitle="Metadata">
|
|
<scn-metadata-grid>
|
|
<scn-metadata-value label="Message ID">
|
|
<span class="mono">{{ message()!.message_id }}</span>
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="Channel">
|
|
<a [routerLink]="['/channels', message()!.channel_id]" class="metadata-link">
|
|
<div class="cell-name">{{ message()!.channel_internal_name }}</div>
|
|
<div class="cell-id mono">{{ message()!.channel_id }}</div>
|
|
</a>
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="Channel Owner">
|
|
<div class="cell-name">{{ resolvedChannelOwner()?.displayName || message()!.channel_owner_user_id }}</div>
|
|
<div class="cell-id mono">{{ message()!.channel_owner_user_id }}</div>
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="Priority">
|
|
<nz-tag [nzColor]="getPriorityColor(message()!.priority)">
|
|
{{ getPriorityLabel(message()!.priority) }}
|
|
</nz-tag>
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="Sender Name">
|
|
{{ message()!.sender_name || '-' }}
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="Sender IP">
|
|
{{ message()!.sender_ip }}
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="Timestamp">
|
|
<div class="timestamp-absolute">{{ message()!.timestamp | date:'yyyy-MM-dd HH:mm:ss' }}</div>
|
|
<div class="timestamp-relative">{{ message()!.timestamp | relativeTime }}</div>
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="User Message ID">
|
|
<span class="mono">{{ message()!.usr_message_id || '-' }}</span>
|
|
</scn-metadata-value>
|
|
<scn-metadata-value label="Used Key">
|
|
<a [routerLink]="['/keys', message()!.used_key_id]" class="metadata-link">
|
|
<div class="cell-name">{{ resolvedKey()?.name || message()!.used_key_id }}</div>
|
|
<div class="cell-id mono">{{ message()!.used_key_id }}</div>
|
|
</a>
|
|
</scn-metadata-value>
|
|
</scn-metadata-grid>
|
|
</nz-card>
|
|
|
|
@if (showDeliveries()) {
|
|
<nz-card nzTitle="Deliveries">
|
|
<nz-table
|
|
#deliveriesTable
|
|
[nzData]="deliveries()"
|
|
[nzLoading]="loadingDeliveries()"
|
|
[nzShowPagination]="deliveries().length > 10"
|
|
[nzPageSize]="10"
|
|
nzSize="small"
|
|
>
|
|
<thead>
|
|
<tr>
|
|
<th>Client ID</th>
|
|
<th>Status</th>
|
|
<th>Retries</th>
|
|
<th>Created</th>
|
|
<th>Finalized</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@for (delivery of deliveriesTable.data; track delivery.delivery_id) {
|
|
<tr>
|
|
<td>
|
|
<a [routerLink]="['/clients', delivery.receiver_client_id]" class="mono">
|
|
{{ delivery.receiver_client_id }}
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<nz-tag [nzColor]="getStatusColor(delivery.status)">
|
|
{{ delivery.status }}
|
|
</nz-tag>
|
|
</td>
|
|
<td>{{ delivery.retry_count }}</td>
|
|
<td>{{ delivery.timestamp_created | date:'yyyy-MM-dd HH:mm:ss' }}</td>
|
|
<td>{{ delivery.timestamp_finalized ? (delivery.timestamp_finalized | date:'yyyy-MM-dd HH:mm:ss') : '-' }}</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</nz-table>
|
|
</nz-card>
|
|
}
|
|
} @else {
|
|
<nz-card>
|
|
<div class="not-found">
|
|
<p>Message not found</p>
|
|
<button nz-button nzType="primary" (click)="goBack()">
|
|
Back to Messages
|
|
</button>
|
|
</div>
|
|
</nz-card>
|
|
}
|
|
</div>
|