From c4459ec4e8265168d39ba8b8b7192ae8e1c94430 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 4 Aug 2023 09:26:09 -0700 Subject: [PATCH] Simplify the after-post logic to avoid a UI bug (#1105) --- src/state/models/feeds/posts.ts | 24 +++++------------------- src/view/com/composer/Composer.tsx | 5 ++--- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/src/state/models/feeds/posts.ts b/src/state/models/feeds/posts.ts index 94d7228e..e5d2eba0 100644 --- a/src/state/models/feeds/posts.ts +++ b/src/state/models/feeds/posts.ts @@ -8,7 +8,7 @@ import AwaitLock from 'await-lock' import {bundleAsync} from 'lib/async/bundle' import {RootStoreModel} from '../root-store' import {cleanError} from 'lib/strings/errors' -import {FeedTuner, FeedViewPostsSlice} from 'lib/api/feed-manip' +import {FeedTuner} from 'lib/api/feed-manip' import {PostsFeedSliceModel} from './posts-slice' import {track} from 'lib/analytics/analytics' @@ -286,27 +286,13 @@ export class PostsFeedModel { } /** - * Fetches the given post and adds it to the top - * Used by the composer to add their new posts + * Updates the UI after the user has created a post */ - async addPostToTop(uri: string) { + onPostCreated() { if (!this.slices.length) { return this.refresh() - } - try { - const res = await this.rootStore.agent.app.bsky.feed.getPosts({ - uris: [uri], - }) - const toPrepend = new PostsFeedSliceModel( - this.rootStore, - uri, - new FeedViewPostsSlice(res.data.posts.map(post => ({post}))), - ) - runInAction(() => { - this.slices = [toPrepend].concat(this.slices) - }) - } catch (e) { - this.rootStore.log.error('Failed to load post to prepend', {e}) + } else { + this.setHasNewLatest(true) } } diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index 0fae996f..9fdf0bc6 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -163,9 +163,8 @@ export const ComposePost = observer(function ComposePost({ setIsProcessing(true) - let createdPost try { - createdPost = await apilib.post(store, { + await apilib.post(store, { rawText: rt.text, replyTo: replyTo?.uri, images: gallery.images, @@ -193,7 +192,7 @@ export const ComposePost = observer(function ComposePost({ if (replyTo && replyTo.uri) track('Post:Reply') } if (!replyTo) { - await store.me.mainFeed.addPostToTop(createdPost.uri) + store.me.mainFeed.onPostCreated() } onPost?.() onClose()