From c37a56b3667025a2d063d1e09ce6318e8120f2e0 Mon Sep 17 00:00:00 2001 From: R0m1k3 Date: Wed, 21 Jan 2026 16:14:08 +0100 Subject: [PATCH] fix: reset token status on update and suppress metric errors --- server/routes.ts | 8 +++++++- server/services/analytics.ts | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/server/routes.ts b/server/routes.ts index 88d7e26..d82cf92 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -1310,10 +1310,16 @@ export async function registerRoutes(app: Express): Promise { let pageData = insertSocialPageSchema.partial().parse(req.body); // If accessToken is being updated, recalculate expiration date (60 days from now) + // AND reset the status to valid so the UI updates immediately if (pageData.accessToken) { const tokenExpiresAt = new Date(); tokenExpiresAt.setDate(tokenExpiresAt.getDate() + 60); - pageData = { ...pageData, tokenExpiresAt }; + pageData = { + ...pageData, + tokenExpiresAt, + tokenStatus: 'valid', + lastTokenCheck: new Date() + }; } const updatedPage = await storage.updateSocialPage(pageId, pageData); diff --git a/server/services/analytics.ts b/server/services/analytics.ts index 20eb874..7c4cf52 100644 --- a/server/services/analytics.ts +++ b/server/services/analytics.ts @@ -211,8 +211,13 @@ export class AnalyticsService { }; pageReach = findMetric('page_impressions'); - } catch (error) { - console.warn(`[AnalyticsService] Failed to fetch insights for ${pageId} (Permissions?):`, error); + } catch (error: any) { + // Code 100: Invalid Parameter (often means metric not available for this page type) + if (error.code === 100) { + console.warn(`[AnalyticsService] Metrics unavailable for ${pageId} (Code 100). This is likely due to page type restrictions. Skipping insights.`); + } else { + console.warn(`[AnalyticsService] Failed to fetch insights for ${pageId}:`, error.message); + } // Continue execution to save at least the follower count }