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
+25 -16
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,8 +281,11 @@ export class FeedModel {
await this._pendingWork()
this.setHasNewLatest(false)
this._loadPromise = this._initialLoad(isRefreshing)
await this._loadPromise
this._loadPromise = undefined
try {
await this._loadPromise
} finally {
this._loadPromise = undefined
}
}
/**
@@ -312,8 +312,11 @@ export class FeedModel {
}
await this._pendingWork()
this._loadMorePromise = this._loadMore()
await this._loadMorePromise
this._loadMorePromise = undefined
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
/**
@@ -326,8 +329,11 @@ export class FeedModel {
await this._pendingWork()
this.setHasNewLatest(false)
this._loadLatestPromise = this._loadLatest()
await this._loadLatestPromise
this._loadLatestPromise = undefined
try {
await this._loadLatestPromise
} finally {
this._loadLatestPromise = undefined
}
}
/**
@@ -339,8 +345,11 @@ export class FeedModel {
}
await this._pendingWork()
this._updatePromise = this._update()
await this._updatePromise
this._updatePromise = undefined
try {
await this._updatePromise
} finally {
this._updatePromise = undefined
}
}
/**
+14 -10
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,8 +280,11 @@ export class NotificationsViewModel {
}
await this._pendingWork()
this._loadMorePromise = this._loadMore()
await this._loadMorePromise
this._loadMorePromise = undefined
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
/**
@@ -295,8 +296,11 @@ export class NotificationsViewModel {
}
await this._pendingWork()
this._updatePromise = this._update()
await this._updatePromise
this._updatePromise = undefined
try {
await this._updatePromise
} finally {
this._updatePromise = undefined
}
}
/**
+5 -2
View File
@@ -64,8 +64,11 @@ export class RepostedByViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
await this._loadMorePromise
this._loadMorePromise = undefined
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
+5 -2
View File
@@ -54,8 +54,11 @@ export class SuggestedActorsViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
await this._loadMorePromise
this._loadMorePromise = undefined
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
+5 -2
View File
@@ -68,8 +68,11 @@ export class UserFollowersViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
await this._loadMorePromise
this._loadMorePromise = undefined
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
+5 -2
View File
@@ -68,8 +68,11 @@ export class UserFollowsViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
await this._loadMorePromise
this._loadMorePromise = undefined
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions
+5 -2
View File
@@ -61,8 +61,11 @@ export class VotesViewModel {
return this._loadMorePromise
}
this._loadMorePromise = this._load(isRefreshing)
await this._loadMorePromise
this._loadMorePromise = undefined
try {
await this._loadMorePromise
} finally {
this._loadMorePromise = undefined
}
}
// state transitions