fix: recover favorites controller refresh
This commit is contained in:
@@ -236,6 +236,7 @@ export function createMarketController(options: CreateMarketControllerOptions) {
|
||||
let favoritesRefreshVersion = 0;
|
||||
let favoriteActionButtons: HTMLButtonElement[] = [];
|
||||
let needsFavoritesRefresh = false;
|
||||
let favoritesUnavailable = false;
|
||||
const favoritesDrawer: FavoritesDrawerController = createFavoritesDrawer(
|
||||
options.document,
|
||||
{
|
||||
@@ -272,16 +273,19 @@ export function createMarketController(options: CreateMarketControllerOptions) {
|
||||
const favoriteControlsMissing =
|
||||
cachedFavoritesState !== undefined &&
|
||||
favoriteActionButtons.some((button) => !button.isConnected);
|
||||
const needsUnavailableFavoritesRecovery =
|
||||
favoritesUnavailable && nextPageSignature !== lastKnownPageSignature;
|
||||
if (
|
||||
nextPageSignature === lastKnownPageSignature &&
|
||||
!toolbarNeedsRemount &&
|
||||
!selectionControlsMissing &&
|
||||
!favoriteControlsMissing
|
||||
!favoriteControlsMissing &&
|
||||
!needsUnavailableFavoritesRecovery
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (favoriteControlsMissing) {
|
||||
if (favoriteControlsMissing || needsUnavailableFavoritesRecovery) {
|
||||
needsFavoritesRefresh = true;
|
||||
}
|
||||
scheduleSync();
|
||||
@@ -529,6 +533,7 @@ export function createMarketController(options: CreateMarketControllerOptions) {
|
||||
const ready = (async () => {
|
||||
await runSyncCycle();
|
||||
await refreshFavorites();
|
||||
await waitForDomSettled();
|
||||
})();
|
||||
|
||||
return {
|
||||
@@ -722,6 +727,7 @@ export function createMarketController(options: CreateMarketControllerOptions) {
|
||||
}
|
||||
|
||||
cachedFavoritesState = state;
|
||||
favoritesUnavailable = false;
|
||||
favoritesDrawer.setError("");
|
||||
favoritesDrawer.render(state);
|
||||
runWithoutMutationSync(() => {
|
||||
@@ -734,6 +740,7 @@ export function createMarketController(options: CreateMarketControllerOptions) {
|
||||
|
||||
cachedFavoritesState = undefined;
|
||||
favoriteActionButtons = [];
|
||||
favoritesUnavailable = true;
|
||||
disposeFavoriteRowPickers(options.document);
|
||||
favoritesDrawer.setError("收藏夹暂不可用");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user