about summary refs log tree commit diff
path: root/src/view/com/post/Post.tsx
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-11-28 13:45:49 -0600
committerPaul Frazee <pfrazee@gmail.com>2022-11-28 13:45:49 -0600
commit6ec33dd89fa584cc24def38a3a909c7144066d82 (patch)
tree4da90daa698406e736e69854409748a081a3d68a /src/view/com/post/Post.tsx
parentb9c9895c45158b3db52e07114ad4305d85e803ea (diff)
downloadvoidsky-6ec33dd89fa584cc24def38a3a909c7144066d82.tar.zst
Batch notification loads to avoid layout reflows due to async
Diffstat (limited to 'src/view/com/post/Post.tsx')
-rw-r--r--src/view/com/post/Post.tsx14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx
index 4d668cac3..033cc6560 100644
--- a/src/view/com/post/Post.tsx
+++ b/src/view/com/post/Post.tsx
@@ -15,19 +15,25 @@ import {UserAvatar} from '../util/UserAvatar'
 import {useStores} from '../../../state'
 import {s, colors} from '../../lib/styles'
 
-export const Post = observer(function Post({uri}: {uri: string}) {
+export const Post = observer(function Post({
+  uri,
+  initView,
+}: {
+  uri: string
+  initView?: PostThreadViewModel
+}) {
   const store = useStores()
-  const [view, setView] = useState<PostThreadViewModel | undefined>()
+  const [view, setView] = useState<PostThreadViewModel | undefined>(initView)
   const [deleted, setDeleted] = useState(false)
 
   useEffect(() => {
-    if (view?.params.uri === uri) {
+    if (initView || view?.params.uri === uri) {
       return // no change needed? or trigger refresh?
     }
     const newView = new PostThreadViewModel(store, {uri, depth: 0})
     setView(newView)
     newView.setup().catch(err => console.error('Failed to fetch post', err))
-  }, [uri, view?.params.uri, store])
+  }, [initView, uri, view?.params.uri, store])
 
   // deleted
   // =