Skip to content

Commit

Permalink
feat(desktop): customize url protocol to join room on homepage (#749)
Browse files Browse the repository at this point in the history
  • Loading branch information
hyrious committed Jun 17, 2021
1 parent d25664d commit 7458149
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 17 deletions.
24 changes: 19 additions & 5 deletions desktop/main-app/src/utils/URLProtocol.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
import { app } from "electron";
import runtime from "./Runtime";
import closeAPP from "./CloseAPP";
import runtime from "./Runtime";
import { windowManager } from "./WindowManager";

const actionHandler = {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
active: (_arg: URLSearchParams) => {
active(_arg: URLSearchParams) {
const mainWindow = windowManager.getMainWindow()?.window;
if (mainWindow) {
if (mainWindow.isMinimized()) {
mainWindow.restore();
}
mainWindow.focus();
}
},

open(arg: URLSearchParams) {
const mainWindow = windowManager.getMainWindow()?.window;
if (mainWindow) {
if (mainWindow.isMinimized()) {
mainWindow.restore();
}
mainWindow.focus();
// x-agora-flat-client://open?join=room-uuid
if (arg.has("join")) {
mainWindow.webContents.send("join-room", { roomUUID: arg.get("join") });
}
}
},
};
Expand Down Expand Up @@ -54,6 +68,9 @@ const win = () => {
});
};

const actions = ["active", "open"] as const;
type Actions = typeof actions[number];

const parseURL = (
url: string,
): {
Expand All @@ -78,6 +95,3 @@ const parseURL = (
};

export const URLProtocol = runtime.isMac ? mac : win;

const actions = ["active"] as const;
type Actions = typeof actions[number];
36 changes: 24 additions & 12 deletions desktop/renderer-app/src/pages/HomePage/index.tsx
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
import "./HomePage.less";

import React, { useEffect, useState } from "react";
import { differenceInHours } from "date-fns";
import { constants } from "flat-types";
import { observer } from "mobx-react-lite";
import { ipcAsyncByMainWindow, ipcSyncByApp } from "../../utils/ipc";
import { MainRoomMenu } from "./MainRoomMenu";
import { MainRoomListPanel } from "./MainRoomListPanel";
import { MainRoomHistoryPanel } from "./MainRoomHistoryPanel";
import React, { useEffect, useState } from "react";
import { useLastLocation } from "react-router-last-location";
import { shouldWindowCenter } from "./utils";
import { constants } from "flat-types";
import { MainPageLayoutContainer } from "../../components/MainPageLayoutContainer";
import { AppUpgradeModal } from "../../components/AppUpgradeModal";
import { MainPageLayoutContainer } from "../../components/MainPageLayoutContainer";
import { globalStore } from "../../stores/GlobalStore";
import { useSafePromise } from "../../utils/hooks/lifecycle";
import { ipcAsyncByMainWindow, ipcReceive, ipcReceiveRemove, ipcSyncByApp } from "../../utils/ipc";
import { usePushHistory } from "../../utils/routes";
import { runtime } from "../../utils/runtime";
import { globalStore } from "../../stores/GlobalStore";
import { differenceInHours } from "date-fns";
import { joinRoomHandler } from "../utils/joinRoomHandler";
import "./HomePage.less";
import { MainRoomHistoryPanel } from "./MainRoomHistoryPanel";
import { MainRoomListPanel } from "./MainRoomListPanel";
import { MainRoomMenu } from "./MainRoomMenu";
import { shouldWindowCenter } from "./utils";

export type HomePageProps = {};

export const HomePage = observer<HomePageProps>(function HomePage() {
const lastLocation = useLastLocation();
const [newVersion, setNewVersion] = useState<string>();
const pushHistory = usePushHistory();
const sp = useSafePromise();

useEffect(() => {
Expand All @@ -30,6 +32,16 @@ export const HomePage = observer<HomePageProps>(function HomePage() {
});
}, [lastLocation]);

useEffect(() => {
ipcReceive("join-room", ({ roomUUID }) => {
void joinRoomHandler(roomUUID, pushHistory);
});

return () => {
ipcReceiveRemove("join-room");
};
}, [pushHistory]);

useEffect(() => {
// check for updates only here
const checkUpdateVisible =
Expand Down
1 change: 1 addition & 0 deletions packages/flat-types/src/ipc/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@ export interface EmitEvents {
| {
status: false;
};
"join-room": { roomUUID: string };
}

0 comments on commit 7458149

Please sign in to comment.