More webapp changes+fixes
Build Docker and Deploy / Build Docker Container (push) Successful in 1m41s
Build Docker and Deploy / Run Unit-Tests (push) Successful in 9m31s
Build Docker and Deploy / Deploy to Server (push) Successful in 18s

This commit is contained in:
2025-12-05 21:36:50 +01:00
parent c554479604
commit 2b7950f5dc
44 changed files with 1245 additions and 189 deletions
@@ -47,44 +47,66 @@
<th>Channel</th>
<th>Subscriber</th>
<th>Owner</th>
<th nzWidth="0">Status</th>
<th nzWidth="0">Confirmation</th>
<th nzWidth="0">Active</th>
<th nzWidth="0">Created</th>
<th nzWidth="0">Actions</th>
</tr>
</thead>
<tbody>
@for (sub of subscriptions(); track sub.subscription_id) {
<tr class="clickable-row" (click)="viewSubscription(sub)">
<tr class="clickable-row">
<td>
<span class="mono subscription-id">{{ sub.subscription_id }}</span>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<span class="mono subscription-id">{{ sub.subscription_id }}</span>
</a>
</td>
<td>
<nz-tag [nzColor]="getTypeLabel(sub).color">
{{ getTypeLabel(sub).label }}
</nz-tag>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<nz-tag [nzColor]="getTypeLabel(sub).color">
{{ getTypeLabel(sub).label }}
</nz-tag>
</a>
</td>
<td>
<div class="cell-name">{{ sub.channel_internal_name }}</div>
<div class="cell-id mono">{{ sub.channel_id }}</div>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<div class="cell-name">{{ sub.channel_internal_name }}</div>
<div class="cell-id mono">{{ sub.channel_id }}</div>
</a>
</td>
<td>
<div class="cell-name">{{ getUserDisplayName(sub.subscriber_user_id) }}</div>
<div class="cell-id mono">{{ sub.subscriber_user_id }}</div>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<div class="cell-name">{{ getUserDisplayName(sub.subscriber_user_id) }}</div>
<div class="cell-id mono">{{ sub.subscriber_user_id }}</div>
</a>
</td>
<td>
<div class="cell-name">{{ getUserDisplayName(sub.channel_owner_user_id) }}</div>
<div class="cell-id mono">{{ sub.channel_owner_user_id }}</div>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<div class="cell-name">{{ getUserDisplayName(sub.channel_owner_user_id) }}</div>
<div class="cell-id mono">{{ sub.channel_owner_user_id }}</div>
</a>
</td>
<td>
<nz-tag [nzColor]="getStatusInfo(sub).color">
{{ getStatusInfo(sub).label }}
</nz-tag>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<nz-tag [nzColor]="getConfirmationInfo(sub).color">
{{ getConfirmationInfo(sub).label }}
</nz-tag>
</a>
</td>
<td>
<div class="timestamp-absolute">{{ sub.timestamp_created | date:'yyyy-MM-dd HH:mm:ss' }}</div>
<div class="timestamp-relative">{{ sub.timestamp_created | relativeTime }}</div>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<nz-tag [nzColor]="getActiveInfo(sub).color">
{{ getActiveInfo(sub).label }}
</nz-tag>
</a>
</td>
<td (click)="$event.stopPropagation()">
<td>
<a class="cell-link" [routerLink]="['/subscriptions', sub.subscription_id]">
<div class="timestamp-absolute">{{ sub.timestamp_created | date:'yyyy-MM-dd HH:mm:ss' }}</div>
<div class="timestamp-relative">{{ sub.timestamp_created | relativeTime }}</div>
</a>
</td>
<td>
<div class="action-buttons">
@if (!sub.confirmed && isOwner(sub)) {
<!-- Incoming unconfirmed: can accept or deny -->
@@ -130,7 +152,7 @@
</tr>
} @empty {
<tr>
<td colspan="8">
<td colspan="9">
<nz-empty nzNotFoundContent="No subscriptions found"></nz-empty>
</td>
</tr>