fix: recover favorites controller refresh

This commit is contained in:
wxs
2026-07-17 15:32:51 +08:00
parent 8ebb50524c
commit 01efa9f847
2 changed files with 69 additions and 5 deletions
+9 -2
View File
@@ -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("收藏夹暂不可用");
}