diff options
author | Paul Frazee <pfrazee@gmail.com> | 2022-11-28 13:45:49 -0600 |
---|---|---|
committer | Paul Frazee <pfrazee@gmail.com> | 2022-11-28 13:45:49 -0600 |
commit | 6ec33dd89fa584cc24def38a3a909c7144066d82 (patch) | |
tree | 4da90daa698406e736e69854409748a081a3d68a /src/view/com/post/Post.tsx | |
parent | b9c9895c45158b3db52e07114ad4305d85e803ea (diff) | |
download | voidsky-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.tsx | 14 |
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 // = |