web: spam check in call history
ci / check (push) Failing after 1m9s
ci / images (push) Successful in 44s

SD5 (14 §9.5): each incoming call keeps what the spam check knew when it
ended (saved answers and the FTC list only, no new lookup), so the badge
stays in call history after the saved answer expires. Hidden when the
viewer's contacts name the number. New admin guide page, spam-check.md.

Follow-up: the owner's checks with real keys and a real call (14 §9).
This commit is contained in:
iamdoubz committed 2026-10-27 18:16:24 -05:00
1 parent e05065599e
commit 6b0c5aa827
11 files changed
+185 -14

No files matched your search

+2
View File
@@ -11,6 +11,7 @@ import {
type CallFilter,
} from '@selfphoneng/shared';
import { callsApi, extensionsApi, recordingsApi } from '../../api/client.ts';
import { SpamNote } from '../../components/SpamNote.tsx';
import { Alert, Button, Field, inputClass } from '../../components/ui.tsx';
export const fmtNumber = (n: string | null) =>
@@ -170,6 +171,7 @@ export function CallsPage() {
{c.answeredBy && (
<span className="text-zinc-500"> · answered by {c.answeredBy.name}</span>
)}
<SpamNote check={c.spam} />
</span>
<StatusBadge status={c.status} />
<span className="w-12 text-right tabular-nums">{fmtDuration(c.talkSeconds)}</span>
+2
View File
@@ -9,6 +9,7 @@ import { Alert, Button } from '../../components/ui.tsx';
import { softphone } from '../../softphone/SoftphoneEngine.ts';
import { DIRECTION_TEXT, StatusBadge, fmtDuration, fmtNumber } from '../admin/CallsPage.tsx';
import { AddToContacts, useContactName } from './ContactsPage.tsx';
import { SpamNote } from '../../components/SpamNote.tsx';
/** The other side of the call, from where I sit. */
export const otherParty = (c: MyCallDto) =>
@@ -84,6 +85,7 @@ export function MyCallsPage() {
{!known && other.number && c.direction !== 'internal' && (
<AddToContacts number={other.number} name={other.name} />
)}
{c.myRole === 'in' && !known && <SpamNote check={c.spam} />}
</span>
{c.recordingId && (
<audio