feat(server): sendCallRelay surfaces undeliverable messageIds (#18)
CallRelayResult success arm gains undeliverable: string[]. sendCallRelay parses FederationRelayResponse.undeliverable (when present) and returns the messageIds so sendFederatedCallStart can reclassify per-peer results. Old peers that omit the field → empty array → today's behavior. TDD — three tests cover old-peer, new-peer-with-undeliverable, and 5xx paths.
This commit is contained in:
@@ -144,7 +144,7 @@ describe('handleDmCallEnd Path-2 relay failure', () => {
|
||||
const fedCall = makeFedCall({ state: 'active' });
|
||||
connectionManager.createFederatedCall(fedCall);
|
||||
const sendToUserSpy = vi.spyOn(connectionManager, 'sendToUser');
|
||||
sendCallRelayMock.mockResolvedValue({ ok: true });
|
||||
sendCallRelayMock.mockResolvedValue({ ok: true, undeliverable: [] });
|
||||
|
||||
await handleDmCallEndForTest(
|
||||
{ federatedCallId: fedCall.federatedId },
|
||||
@@ -191,7 +191,7 @@ describe('handleDmCallReject Path-2 relay failure', () => {
|
||||
const fedCall = makeFedCall();
|
||||
connectionManager.createFederatedCall(fedCall);
|
||||
const sendToUserSpy = vi.spyOn(connectionManager, 'sendToUser');
|
||||
sendCallRelayMock.mockResolvedValue({ ok: true });
|
||||
sendCallRelayMock.mockResolvedValue({ ok: true, undeliverable: [] });
|
||||
|
||||
await handleDmCallRejectForTest(
|
||||
{ federatedCallId: fedCall.federatedId },
|
||||
@@ -282,7 +282,7 @@ describe('handleDmCallAccept Path-2 relay failure', () => {
|
||||
const fedCall = makeFedCall();
|
||||
connectionManager.createFederatedCall(fedCall);
|
||||
const sendToUserSpy = vi.spyOn(connectionManager, 'sendToUser');
|
||||
sendCallRelayMock.mockResolvedValue({ ok: true });
|
||||
sendCallRelayMock.mockResolvedValue({ ok: true, undeliverable: [] });
|
||||
|
||||
await handleDmCallAcceptForTest(
|
||||
{ federatedCallId: fedCall.federatedId },
|
||||
|
||||
Reference in New Issue
Block a user