Skip to content

Commit

Permalink
fix(auto-updater): remove extra get-update-info (#570)
Browse files Browse the repository at this point in the history
  • Loading branch information
Cheerego7 committed Apr 22, 2021
1 parent 1a968d6 commit 85bcf9a
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 45 deletions.
49 changes: 16 additions & 33 deletions desktop/renderer-app/src/components/AppUpgradeModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,39 @@ import "./index.less";
import { Button, Modal } from "antd";
import { observer } from "mobx-react-lite";
import React, { useEffect, useState } from "react";
import { ipcAsyncByMainWindow, ipcReceive, ipcReceiveRemove, ipcSyncByApp } from "../../utils/ipc";
import { useSafePromise } from "../../utils/hooks/lifecycle";
import { ipcAsyncByMainWindow, ipcReceive, ipcReceiveRemove } from "../../utils/ipc";

export interface AppUpgradeModalProps {
visible: boolean;
/** open modal when newVersion has truthy value */
newVersion?: string;
/** close modal */
onClose: () => void;
}

export const AppUpgradeModal = observer<AppUpgradeModalProps>(function AppUpgradeModal({
newVersion,
onClose,
visible,
}) {
const [appVersion, setAppVersion] = useState(" ");
const [upgradePercent, setUpgradePercent] = useState(0);
const [showUpgradeProgress, setShowUpgradeProgress] = useState(false);
const [upgradeFail, setUpgradeFail] = useState(false);
const sp = useSafePromise();

useEffect(() => {
sp(ipcSyncByApp("get-update-info"))
.then(data => {
if (data.hasNewVersion) {
setAppVersion(data.version);
if (showUpgradeProgress) {
ipcReceive("update-progress", args => {
if (args.status) {
setUpgradePercent(args.percent);
} else {
setUpgradeFail(true);
}
})
.catch(err => {
console.error("ipc failed", err);
});

ipcAsyncByMainWindow("start-update", undefined);
}
return () => {
ipcReceiveRemove("update-progress");
};
}, [appVersion, sp]);
}, [showUpgradeProgress]);

const renderModalTitle = (): React.ReactNode => {
return <div className="app-upgrade-modal-title">版本更新</div>;
Expand All @@ -47,23 +47,6 @@ export const AppUpgradeModal = observer<AppUpgradeModalProps>(function AppUpgrad

const upgradeStart = (): void => {
setShowUpgradeProgress(true);
sp(ipcSyncByApp("get-update-info"))
.then(data => {
if (data.hasNewVersion) {
ipcReceive("update-progress", args => {
if (args.status) {
setUpgradePercent(args.percent);
} else {
setUpgradeFail(true);
}
});

ipcAsyncByMainWindow("start-update", undefined);
}
})
.catch(err => {
console.error("ipc failed", err);
});
};

return (
Expand All @@ -73,7 +56,7 @@ export const AppUpgradeModal = observer<AppUpgradeModalProps>(function AppUpgrad
maskClosable={false}
title={renderModalTitle()}
footer={[]}
visible={visible}
visible={Boolean(newVersion)}
onCancel={cancelUpgrade}
wrapClassName="app-upgrade-modal-container"
closable={false}
Expand Down Expand Up @@ -102,7 +85,7 @@ export const AppUpgradeModal = observer<AppUpgradeModalProps>(function AppUpgrad
) : (
<div>
<span className="app-upgrade-modal-font">
发现新版本{appVersion}, 请更新到最新版本获取更好的产品体验
发现新版本{newVersion || " "}, 请更新到最新版本获取更好的产品体验
</span>
<div className="app-upgrade-modal-btn">
<Button type="primary" onClick={upgradeStart}>
Expand Down
20 changes: 11 additions & 9 deletions desktop/renderer-app/src/pages/HomePage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import "./HomePage.less";

import React, { useEffect, useState } from "react";
import { observer } from "mobx-react-lite";
import { ipcAsyncByMainWindow, ipcReceiveRemove, ipcSyncByApp } from "../../utils/ipc";
import { ipcAsyncByMainWindow, ipcSyncByApp } from "../../utils/ipc";
import { MainRoomMenu } from "./MainRoomMenu";
import { MainRoomListPanel } from "./MainRoomListPanel";
import { MainRoomHistoryPanel } from "./MainRoomHistoryPanel";
Expand All @@ -12,12 +12,13 @@ import { constants } from "flat-types";
import { MainPageLayoutContainer } from "../../components/MainPageLayoutContainer";
import { AppUpgradeModal } from "../../components/AppUpgradeModal";
import { useSafePromise } from "../../utils/hooks/lifecycle";
import { runtime } from "../../utils/runtime";

export type HomePageProps = {};

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

useEffect(() => {
Expand All @@ -30,18 +31,19 @@ export const HomePage = observer<HomePageProps>(function HomePage() {
useEffect(() => {
sp(ipcSyncByApp("get-update-info"))
.then(data => {
console.log("[Auto Updater]: Get Update Info");
if (data.hasNewVersion) {
console.log("[Auto Updater]: has newVersion", data.hasNewVersion);
setShowModal(true);
console.log(
`[Auto Updater]: Remote Version "${data.version}", Local Version "${runtime.appVersion}"`,
);
if (data.version !== runtime.appVersion) {
setNewVersion(data.version);
}
}
})
.catch(err => {
console.error("ipc failed", err);
});

return () => {
ipcReceiveRemove("update-progress");
};
}, [sp]);

return (
Expand All @@ -53,7 +55,7 @@ export const HomePage = observer<HomePageProps>(function HomePage() {
<MainRoomHistoryPanel />
</div>
</div>
<AppUpgradeModal visible={showModal} onClose={() => setShowModal(false)} />
<AppUpgradeModal newVersion={newVersion} onClose={() => setNewVersion(void 0)} />
</MainPageLayoutContainer>
);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ import { useSafePromise } from "../../../utils/hooks/lifecycle";

export const AboutPage = (): React.ReactElement => {
const sp = useSafePromise();
const [showModal, setShowModal] = useState(false);
const [newVersion, setNewVersion] = useState<string>();

const checkUpgradeVersion = (): void => {
sp(ipcSyncByApp("get-update-info")).then(data => {
if (!data.hasNewVersion || data.version === runtime.appVersion) {
message.info("当前已是最新版本");
} else {
setShowModal(true);
setNewVersion(data.version);
}
});
};
Expand All @@ -40,7 +40,7 @@ export const AboutPage = (): React.ReactElement => {
<a href="">服务协议</a>|<a href="">隐私政策</a>|<a href="">GitHub</a>
</div> */}
</div>
<AppUpgradeModal visible={showModal} onClose={() => setShowModal(false)} />
<AppUpgradeModal newVersion={newVersion} onClose={() => setNewVersion(void 0)} />
</UserSettingLayoutContainer>
);
};

0 comments on commit 85bcf9a

Please sign in to comment.