Stop offering media downloads on the component's host bridge

`downloadMedia` exists because a widget's client cannot fetch media: it
has no access token, and its only route to a file is MSC4039 over the
widget API. A component host hands over a client that does hold
credentials, so Element Call fetches media with it and the callback was
never needed there. It comes off `ElementCallHostBridge`, leaving a host
with only what it must understand, and stays on the internal HostBridge
for the widget.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Timo K.
2026-09-08 17:14:55 +02:00
co-authored by Claude Fable 5.1
parent b722cc277e
commit 486ecbfda0
+3 -13
View File
@@ -64,12 +64,6 @@ export interface ElementCallHostBridge {
* Defaults to true. * Defaults to true.
*/ */
readonly supportsReactions?: boolean; readonly supportsReactions?: boolean;
/**
* Fetches media on Element Call's behalf, for hosts that do not want it
* touching the homeserver's media endpoints itself. Absent, Element Call
* fetches media with the client it was given.
*/
downloadMedia?(mxcUri: string): Promise<Blob>;
} }
/** /**
@@ -164,13 +158,9 @@ export function useComponentHostBridge(
? undefined ? undefined
: async (): Promise<void> => await close(); : async (): Promise<void> => await close();
}, },
get downloadMedia() { // Not offered to a component host: the client it hands over holds the
const downloadMedia = latest.current.downloadMedia; // credentials to fetch media itself. A widget's client does not, which
return downloadMedia === undefined // is what the internal bridge's `downloadMedia` is for.
? undefined
: async (mxcUri: string): Promise<Blob> =>
await downloadMedia(mxcUri);
},
get supportsReactions(): boolean { get supportsReactions(): boolean {
return latest.current.supportsReactions ?? true; return latest.current.supportsReactions ?? true;
}, },