fix(ga4): hide every GA4 connect surface until the OAuth app is approved (#466)
This commit is contained in:
parent
eec998a762
commit
45403aa06f
@ -1,3 +1,5 @@
|
||||
import { GA4_OAUTH_APP_PENDING } from "@/shared/ga4";
|
||||
|
||||
type McpTool = {
|
||||
name: string;
|
||||
title: string;
|
||||
@ -207,11 +209,7 @@ const toolCategories: ToolCategory[] = [
|
||||
},
|
||||
];
|
||||
|
||||
// Google hasn't approved the GA4 OAuth app yet, so connecting fails.
|
||||
// Flip to false once the app is approved.
|
||||
const GA4_TOOLS_HIDDEN = true;
|
||||
|
||||
const visibleCategories = GA4_TOOLS_HIDDEN
|
||||
const visibleCategories = GA4_OAUTH_APP_PENDING
|
||||
? toolCategories.filter((cat) => cat.label !== "Google Analytics")
|
||||
: toolCategories;
|
||||
|
||||
|
||||
@ -25,12 +25,9 @@ import {
|
||||
refreshDashboardBacklinkSnapshot,
|
||||
} from "@/serverFunctions/dashboard";
|
||||
import { setProjectDomain } from "@/serverFunctions/projects";
|
||||
import { GA4_OAUTH_APP_PENDING } from "@/shared/ga4";
|
||||
import type { DashboardHeroStep } from "@/types/schemas/dashboard";
|
||||
|
||||
// Google hasn't approved the GA4 OAuth app yet, so connecting fails.
|
||||
// Flip to false once the app is approved.
|
||||
const GA4_CARD_HIDDEN = true;
|
||||
|
||||
const HERO_COPY: Record<
|
||||
DashboardHeroStep,
|
||||
{ title: string; body: string; cta: string }
|
||||
@ -336,7 +333,7 @@ export function DashboardPage({ projectId }: { projectId: string }) {
|
||||
hasData: gscConnected,
|
||||
node: <GscCard projectId={projectId} connected={gscConnected} />,
|
||||
},
|
||||
...(!GA4_CARD_HIDDEN &&
|
||||
...(!GA4_OAUTH_APP_PENDING &&
|
||||
(ga4Connected || !activation.ga4.cardDismissedAt)
|
||||
? [
|
||||
{
|
||||
|
||||
@ -19,7 +19,10 @@ import {
|
||||
listGa4Properties,
|
||||
setGa4Property,
|
||||
} from "@/serverFunctions/ga4";
|
||||
import { GA4_SELF_HOSTED_SETUP_DOCS_URL } from "@/shared/ga4";
|
||||
import {
|
||||
GA4_OAUTH_APP_PENDING,
|
||||
GA4_SELF_HOSTED_SETUP_DOCS_URL,
|
||||
} from "@/shared/ga4";
|
||||
|
||||
export function GoogleAnalyticsConnectionCard({
|
||||
projectId,
|
||||
@ -43,6 +46,14 @@ export function GoogleAnalyticsConnectionCard({
|
||||
});
|
||||
const connection = connectionQuery.data;
|
||||
const connected = Boolean(connection?.connected);
|
||||
// Hide the hosted connect surface while the OAuth app awaits Google's
|
||||
// approval, but keep the card for users who already hold a grant so they
|
||||
// can finish property selection or disconnect.
|
||||
const hiddenPendingApproval =
|
||||
GA4_OAUTH_APP_PENDING &&
|
||||
hosted &&
|
||||
!connected &&
|
||||
!connection?.currentUserHasGrant;
|
||||
const selfHostedNeedsSetup =
|
||||
!hosted && connectionQuery.isSuccess && !connection?.googleOAuthConfigured;
|
||||
const showPicker = picking || (connection?.currentUserHasGrant && !connected);
|
||||
@ -101,6 +112,8 @@ export function GoogleAnalyticsConnectionCard({
|
||||
});
|
||||
const handleConnect = () => void startGoogleLink("ga4", window.location.href);
|
||||
|
||||
if (hiddenPendingApproval) return null;
|
||||
|
||||
return (
|
||||
<IntegrationConnectionCard
|
||||
title="Google Analytics"
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
/** Better Auth provider ID for the dedicated Google Analytics grant. */
|
||||
export const GA4_OAUTH_PROVIDER_ID = "google-analytics";
|
||||
|
||||
// Google hasn't approved the GA4 OAuth app yet, so hosted connect attempts
|
||||
// show Google's "unverified app" warning. Gates every GA4 connect surface;
|
||||
// flip to false once the app is approved. Self-hosted deployments use their
|
||||
// own OAuth app, so only hosted mode is gated.
|
||||
export const GA4_OAUTH_APP_PENDING = true;
|
||||
|
||||
export const GA4_OAUTH_SCOPES = [
|
||||
"openid",
|
||||
"email",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user