mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
fix React reload toast blockers
This commit is contained in:
@@ -130,7 +130,12 @@ export function useBootState(): BootStateContextValue {
|
|||||||
*/
|
*/
|
||||||
export function useBootOverlayVisible(): boolean {
|
export function useBootOverlayVisible(): boolean {
|
||||||
const { phase, routeReady } = useBootState();
|
const { phase, routeReady } = useBootState();
|
||||||
const canHide = phase === "ready" && routeReady;
|
// HMR can remount the provider while the route tree stays mounted. In that
|
||||||
|
// state the boot phase falls back to `idle`, but the already-rendered route
|
||||||
|
// is interactive and can mark itself ready again. Treat `idle + routeReady`
|
||||||
|
// the same as `ready + routeReady` so the full-screen boot overlay never
|
||||||
|
// becomes a permanent pointer-events blocker during development.
|
||||||
|
const canHide = routeReady && (phase === "ready" || phase === "idle");
|
||||||
const [visible, setVisible] = useState(!canHide);
|
const [visible, setVisible] = useState(!canHide);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import { createOpenworkServerStore, useOpenworkServerStoreSnapshot } from "../do
|
|||||||
import { createProviderAuthStore, useProviderAuthStoreSnapshot } from "../domains/connections/provider-auth/store";
|
import { createProviderAuthStore, useProviderAuthStoreSnapshot } from "../domains/connections/provider-auth/store";
|
||||||
import ProviderAuthModal from "../domains/connections/provider-auth/provider-auth-modal";
|
import ProviderAuthModal from "../domains/connections/provider-auth/provider-auth-modal";
|
||||||
import ConnectionsModals from "../domains/connections/modals";
|
import ConnectionsModals from "../domains/connections/modals";
|
||||||
import { TopRightNotifications } from "../domains/shell-feedback/top-right-notifications";
|
import { ReloadWorkspaceToast } from "../domains/shell-feedback/reload-workspace-toast";
|
||||||
import { GeneralSettingsView } from "../domains/settings/pages/general-view";
|
import { GeneralSettingsView } from "../domains/settings/pages/general-view";
|
||||||
import { AdvancedView } from "../domains/settings/pages/advanced-view";
|
import { AdvancedView } from "../domains/settings/pages/advanced-view";
|
||||||
import { AppearanceView } from "../domains/settings/pages/appearance-view";
|
import { AppearanceView } from "../domains/settings/pages/appearance-view";
|
||||||
@@ -1299,28 +1299,32 @@ export function SettingsRoute() {
|
|||||||
remoteSubmitting={createWorkspaceRemoteBusy}
|
remoteSubmitting={createWorkspaceRemoteBusy}
|
||||||
remoteError={createWorkspaceRemoteError}
|
remoteError={createWorkspaceRemoteError}
|
||||||
/>
|
/>
|
||||||
<TopRightNotifications
|
<div className="pointer-events-none fixed right-4 top-4 z-50 w-[min(24rem,calc(100vw-1.5rem))] max-w-full sm:right-6 sm:top-6">
|
||||||
reloadOpen={systemState.reload.reloadPending}
|
<div className="pointer-events-auto">
|
||||||
reloadTitle={systemState.reloadCopy.title}
|
<ReloadWorkspaceToast
|
||||||
reloadDescription={systemState.reloadCopy.body}
|
open={systemState.reload.reloadPending}
|
||||||
reloadTrigger={systemState.reload.reloadTrigger}
|
title={systemState.reloadCopy.title}
|
||||||
reloadError={systemState.reload.reloadError}
|
description={systemState.reloadCopy.body}
|
||||||
reloadLabel={
|
trigger={systemState.reload.reloadTrigger}
|
||||||
activeReloadBlockingSessions.length > 0
|
error={systemState.reload.reloadError}
|
||||||
? t("app.reload_stop_tasks")
|
reloadLabel={
|
||||||
: t("app.reload_now")
|
activeReloadBlockingSessions.length > 0
|
||||||
}
|
? t("app.reload_stop_tasks")
|
||||||
dismissLabel={t("app.reload_later")}
|
: t("app.reload_now")
|
||||||
reloadBusy={systemState.reload.reloadBusy}
|
}
|
||||||
canReload={systemState.canReloadWorkspaceEngine}
|
dismissLabel={t("app.reload_later")}
|
||||||
hasActiveRuns={activeReloadBlockingSessions.length > 0}
|
busy={systemState.reload.reloadBusy}
|
||||||
onReload={() => {
|
canReload={systemState.canReloadWorkspaceEngine}
|
||||||
void (activeReloadBlockingSessions.length > 0
|
hasActiveRuns={activeReloadBlockingSessions.length > 0}
|
||||||
? forceStopActiveSessionsAndReload()
|
onReload={() => {
|
||||||
: systemState.reloadWorkspaceEngine());
|
void (activeReloadBlockingSessions.length > 0
|
||||||
}}
|
? forceStopActiveSessionsAndReload()
|
||||||
onDismissReload={systemState.clearReloadRequired}
|
: systemState.reloadWorkspaceEngine());
|
||||||
/>
|
}}
|
||||||
|
onDismiss={systemState.clearReloadRequired}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<ConnectionsModals
|
<ConnectionsModals
|
||||||
client={activeClient}
|
client={activeClient}
|
||||||
projectDir={selectedWorkspaceRoot}
|
projectDir={selectedWorkspaceRoot}
|
||||||
|
|||||||
Reference in New Issue
Block a user