Simplify the after-post logic to avoid a UI bug (#1105)

zio/stable
Paul Frazee 2023-08-04 09:26:09 -07:00 committed by GitHub
parent b154d3ea21
commit c4459ec4e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 22 deletions

View File

@ -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)
}
}

View File

@ -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()