Fix potential issues with promise guards when an error occurs (#170)

This commit is contained in:
Paul Frazee
2023-02-08 10:52:47 -06:00
committed by GitHub
parent 51d0ea4750
commit 82ea907e8f
7 changed files with 64 additions and 36 deletions
+17 -8
View File
@@ -187,10 +187,11 @@ export class FeedModel {
hasMore = true
loadMoreCursor: string | undefined
pollCursor: string | undefined
_loadPromise: Promise<void> | undefined
_loadMorePromise: Promise<void> | undefined
_loadLatestPromise: Promise<void> | undefined
_updatePromise: Promise<void> | undefined
private _loadPromise: Promise<void> | undefined
private _loadMorePromise: Promise<void> | undefined
private _loadLatestPromise: Promise<void> | undefined
private _updatePromise: Promise<void> | undefined
// data
feed: FeedItemModel[] = []
@@ -206,10 +207,6 @@ export class FeedModel {
rootStore: false,
params: false,
loadMoreCursor: false,
_loadPromise: false,
_loadMorePromise: false,
_loadLatestPromise: false,
_updatePromise: false,
},
{autoBind: true},
)
@@ -284,9 +281,12 @@ export class FeedModel {
await this._pendingWork()
this.setHasNewLatest(false)
this._loadPromise = this._initialLoad(isRefreshing)
try {
await this._loadPromise
} finally {
this._loadPromise = undefined
}
}
/**
* Register any event listeners. Returns a cleanup function.
@@ -312,9 +312,12 @@ export class FeedModel {
}
await this._pendingWork()
this._loadMorePromise = this._loadMore()
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
/**
* Load more posts to the start of the feed
@@ -326,9 +329,12 @@ export class FeedModel {
await this._pendingWork()
this.setHasNewLatest(false)
this._loadLatestPromise = this._loadLatest()
try {
await this._loadLatestPromise
} finally {
this._loadLatestPromise = undefined
}
}
/**
* Update content in-place
@@ -339,9 +345,12 @@ export class FeedModel {
}
await this._pendingWork()
this._updatePromise = this._update()
try {
await this._updatePromise
} finally {
this._updatePromise = undefined
}
}
/**
* Check if new posts are available
+10 -6
View File
@@ -190,9 +190,10 @@ export class NotificationsViewModel {
params: ListNotifications.QueryParams
hasMore = true
loadMoreCursor?: string
_loadPromise: Promise<void> | undefined
_loadMorePromise: Promise<void> | undefined
_updatePromise: Promise<void> | undefined
private _loadPromise: Promise<void> | undefined
private _loadMorePromise: Promise<void> | undefined
private _updatePromise: Promise<void> | undefined
// data
notifications: NotificationsViewItemModel[] = []
@@ -210,9 +211,6 @@ export class NotificationsViewModel {
rootStore: false,
params: false,
mostRecentNotification: false,
_loadPromise: false,
_loadMorePromise: false,
_updatePromise: false,
},
{autoBind: true},
)
@@ -282,9 +280,12 @@ export class NotificationsViewModel {
}
await this._pendingWork()
this._loadMorePromise = this._loadMore()
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
/**
* Update content in-place
@@ -295,9 +296,12 @@ export class NotificationsViewModel {
}
await this._pendingWork()
this._updatePromise = this._update()
try {
await this._updatePromise
} finally {
this._updatePromise = undefined
}
}
/**
* Update read/unread state
+3
View File
@@ -64,9 +64,12 @@ export class RepostedByViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
// =
@@ -54,9 +54,12 @@ export class SuggestedActorsViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
// =
+3
View File
@@ -68,9 +68,12 @@ export class UserFollowersViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
// =
+3
View File
@@ -68,9 +68,12 @@ export class UserFollowsViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
// =
+3
View File
@@ -61,9 +61,12 @@ export class VotesViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
// =