diff --git a/src/pages/settings/UpdateAppPage.tsx b/src/pages/settings/UpdateAppPage.tsx index 9fba6f3d4b..274578b288 100644 --- a/src/pages/settings/UpdateAppPage.tsx +++ b/src/pages/settings/UpdateAppPage.tsx @@ -6,6 +6,7 @@ import { IonHeader, IonLabel, IonList, + IonLoading, IonPage, IonRefresher, IonRefresherContent, @@ -14,7 +15,7 @@ import { } from "@ionic/react"; import { MaxWidthContainer } from "../../features/shared/AppContent"; import { InsetIonItem, SettingLabel } from "../profile/ProfileFeedItemsPage"; -import { useContext, useEffect } from "react"; +import { useContext, useEffect, useState } from "react"; import { PageContentIonSpinner } from "../shared/UserPage"; import styled from "@emotion/styled"; import { UpdateContext } from "./update/UpdateContext"; @@ -37,6 +38,7 @@ const Container = styled.div` `; export default function UpdateAppPage() { + const [loading, setLoading] = useState(false); const { status, checkForUpdates, updateServiceWorker } = useContext(UpdateContext); @@ -44,6 +46,20 @@ export default function UpdateAppPage() { checkForUpdates(); }, [checkForUpdates]); + async function onInstallUpdate() { + setLoading(true); + + try { + await updateServiceWorker(); + } finally { + await new Promise((resolve) => setTimeout(resolve, 1000)); + + // Sometimes updateServiceWorker() doesn't refresh in Safari, + // even though the page needs refresh?! + location.reload(); + } + } + return ( @@ -56,6 +72,7 @@ export default function UpdateAppPage() { + { @@ -88,16 +105,7 @@ export default function UpdateAppPage() { {status === "outdated" && ( - { - try { - await updateServiceWorker(); - } finally { - location.reload(); - } - }} - > + Install new update 1