From f80ca5a3da32c17b683a91262d5e6a3d4497e785 Mon Sep 17 00:00:00 2001 From: Liam Fitzgerald Date: Thu, 22 Apr 2021 15:02:21 +1000 Subject: [PATCH] virtualContext: fix useVirtualResizeProp --- pkg/interface/src/logic/lib/virtualContext.tsx | 5 +++-- pkg/interface/src/views/apps/permalinks/embed.tsx | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pkg/interface/src/logic/lib/virtualContext.tsx b/pkg/interface/src/logic/lib/virtualContext.tsx index 8c4678294..ef57e6788 100644 --- a/pkg/interface/src/logic/lib/virtualContext.tsx +++ b/pkg/interface/src/logic/lib/virtualContext.tsx @@ -7,6 +7,7 @@ import React, { useEffect, } from "react"; import usePreviousValue from "./usePreviousValue"; +import {Primitive} from "~/types"; export interface VirtualContextProps { save: () => void; @@ -49,7 +50,7 @@ export function useVirtualResizeState(s: boolean) { return [state, setState] as const; } -export function useVirtualResizeProp(prop: T) { +export function useVirtualResizeProp(prop: Primitive) { const { save, restore } = useVirtual(); const oldProp = usePreviousValue(prop) @@ -58,7 +59,7 @@ export function useVirtualResizeProp(prop: T) { } useLayoutEffect(() => { - restore(); + requestAnimationFrame(restore); }, [prop]); diff --git a/pkg/interface/src/views/apps/permalinks/embed.tsx b/pkg/interface/src/views/apps/permalinks/embed.tsx index 2f7c8e11c..032cf054b 100644 --- a/pkg/interface/src/views/apps/permalinks/embed.tsx +++ b/pkg/interface/src/views/apps/permalinks/embed.tsx @@ -18,7 +18,7 @@ import { GroupLink } from "~/views/components/GroupLink"; import GlobalApi from "~/logic/api/global"; import { getModuleIcon } from "~/logic/lib/util"; import useMetadataState from "~/logic/state/metadata"; -import { Association, resourceFromPath } from "@urbit/api"; +import { Association, resourceFromPath, GraphNode } from "@urbit/api"; import { Link } from "react-router-dom"; import useGraphState from "~/logic/state/graph"; import { GraphNodeContent } from "../notifications/graph"; @@ -51,7 +51,7 @@ function GraphPermalink( const { full = false, showOurContact, pending, link, graph, group, index, api, transcluded } = props; const { ship, name } = resourceFromPath(graph); const node = useGraphState( - useCallback((s) => s.looseNodes?.[`${ship.slice(1)}/${name}`]?.[index], [ + useCallback((s) => s.looseNodes?.[`${ship.slice(1)}/${name}`]?.[index] as GraphNode, [ graph, index, ]) @@ -63,7 +63,7 @@ function GraphPermalink( ]) ); - useVirtualResizeProp(node) + useVirtualResizeProp(!!node) useEffect(() => { (async () => { if (pending || !index) {