Add Electron IPC APIs for authenticated media

This commit is contained in:
Travis Ralston 2024-07-04 11:58:32 -06:00
parent 4ffc77dfef
commit 8e03b273ae
2 changed files with 17 additions and 1 deletions

View file

@ -33,7 +33,9 @@ type ElectronChannel =
| "update-downloaded" | "update-downloaded"
| "userDownloadCompleted" | "userDownloadCompleted"
| "userDownloadAction" | "userDownloadAction"
| "openDesktopCapturerSourcePicker"; | "openDesktopCapturerSourcePicker"
| "userAccessToken"
| "serverSupportedVersions";
declare global { declare global {
interface Window { interface Window {

View file

@ -44,6 +44,7 @@ import { UPDATE_EVENT } from "matrix-react-sdk/src/stores/AsyncStore";
import { avatarUrlForRoom, getInitialLetter } from "matrix-react-sdk/src/Avatar"; import { avatarUrlForRoom, getInitialLetter } from "matrix-react-sdk/src/Avatar";
import DesktopCapturerSourcePicker from "matrix-react-sdk/src/components/views/elements/DesktopCapturerSourcePicker"; import DesktopCapturerSourcePicker from "matrix-react-sdk/src/components/views/elements/DesktopCapturerSourcePicker";
import { OidcRegistrationClientMetadata } from "matrix-js-sdk/src/matrix"; import { OidcRegistrationClientMetadata } from "matrix-js-sdk/src/matrix";
import { MatrixClientPeg } from "matrix-react-sdk/src/MatrixClientPeg";
import VectorBasePlatform from "./VectorBasePlatform"; import VectorBasePlatform from "./VectorBasePlatform";
import { SeshatIndexManager } from "./SeshatIndexManager"; import { SeshatIndexManager } from "./SeshatIndexManager";
@ -127,6 +128,19 @@ export default class ElectronPlatform extends VectorBasePlatform {
}); });
}); });
// `userAccessToken` (IPC) is requested by the main process when appending authentication
// to media downloads. A reply is sent over the same channel.
window.electron.on("userAccessToken", () => {
window.electron!.send("userAccessToken", MatrixClientPeg.get()?.getAccessToken());
});
// `serverSupportedVersions` is requested by the main process when it needs to know if the
// server supports a particular version. This is primarily used to detect authenticated media
// support. A reply is sent over the same channel.
window.electron.on("serverSupportedVersions", async () => {
window.electron!.send("serverSupportedVersions", await MatrixClientPeg.get()?.getVersions());
});
// try to flush the rageshake logs to indexeddb before quit. // try to flush the rageshake logs to indexeddb before quit.
window.electron.on("before-quit", function () { window.electron.on("before-quit", function () {
logger.log("element-desktop closing"); logger.log("element-desktop closing");