Fix privacy screen for legacy tier users (#14522)

This commit is contained in:
Tommaso Sciortino
2025-12-04 13:24:00 -08:00
committed by GitHub
parent 5f60281d25
commit ae8694b303
2 changed files with 8 additions and 34 deletions
@@ -7,11 +7,7 @@
import { describe, it, expect, beforeEach, vi } from 'vitest'; import { describe, it, expect, beforeEach, vi } from 'vitest';
import { act } from 'react'; import { act } from 'react';
import { render } from '../../test-utils/render.js'; import { render } from '../../test-utils/render.js';
import type { import type { Config, CodeAssistServer } from '@google/gemini-cli-core';
Config,
CodeAssistServer,
LoadCodeAssistResponse,
} from '@google/gemini-cli-core';
import { UserTierId, getCodeAssistServer } from '@google/gemini-cli-core'; import { UserTierId, getCodeAssistServer } from '@google/gemini-cli-core';
import { usePrivacySettings } from './usePrivacySettings.js'; import { usePrivacySettings } from './usePrivacySettings.js';
import { waitFor } from '../../test-utils/async.js'; import { waitFor } from '../../test-utils/async.js';
@@ -65,10 +61,7 @@ describe('usePrivacySettings', () => {
// Mock paid tier response // Mock paid tier response
vi.mocked(getCodeAssistServer).mockReturnValue({ vi.mocked(getCodeAssistServer).mockReturnValue({
projectId: 'test-project-id', projectId: 'test-project-id',
loadCodeAssist: () => userTier: UserTierId.STANDARD,
({
currentTier: { id: UserTierId.STANDARD },
}) as unknown as LoadCodeAssistResponse,
} as unknown as CodeAssistServer); } as unknown as CodeAssistServer);
const { result } = renderPrivacySettingsHook(); const { result } = renderPrivacySettingsHook();
@@ -84,10 +77,7 @@ describe('usePrivacySettings', () => {
it('should throw error when CodeAssistServer has no projectId', async () => { it('should throw error when CodeAssistServer has no projectId', async () => {
vi.mocked(getCodeAssistServer).mockReturnValue({ vi.mocked(getCodeAssistServer).mockReturnValue({
loadCodeAssist: () => userTier: UserTierId.FREE,
({
currentTier: { id: UserTierId.FREE },
}) as unknown as LoadCodeAssistResponse,
} as unknown as CodeAssistServer); } as unknown as CodeAssistServer);
const { result } = renderPrivacySettingsHook(); const { result } = renderPrivacySettingsHook();
@@ -110,10 +100,7 @@ describe('usePrivacySettings', () => {
setCodeAssistGlobalUserSetting: vi.fn().mockResolvedValue({ setCodeAssistGlobalUserSetting: vi.fn().mockResolvedValue({
freeTierDataCollectionOptin: false, freeTierDataCollectionOptin: false,
}), }),
loadCodeAssist: () => userTier: UserTierId.FREE,
({
currentTier: { id: UserTierId.FREE },
}) as unknown as LoadCodeAssistResponse,
} as unknown as CodeAssistServer; } as unknown as CodeAssistServer;
vi.mocked(getCodeAssistServer).mockReturnValue(mockCodeAssistServer); vi.mocked(getCodeAssistServer).mockReturnValue(mockCodeAssistServer);
@@ -31,7 +31,10 @@ export const usePrivacySettings = (config: Config) => {
}); });
try { try {
const server = getCodeAssistServerOrFail(config); const server = getCodeAssistServerOrFail(config);
const tier = await getTier(server); const tier = server.userTier;
if (tier === undefined) {
throw new Error('Could not determine user tier.');
}
if (tier !== UserTierId.FREE) { if (tier !== UserTierId.FREE) {
// We don't need to fetch opt-out info since non-free tier // We don't need to fetch opt-out info since non-free tier
// data gathering is already worked out some other way. // data gathering is already worked out some other way.
@@ -94,22 +97,6 @@ function getCodeAssistServerOrFail(config: Config): CodeAssistServer {
return server; return server;
} }
async function getTier(server: CodeAssistServer): Promise<UserTierId> {
const loadRes = await server.loadCodeAssist({
cloudaicompanionProject: server.projectId,
metadata: {
ideType: 'IDE_UNSPECIFIED',
platform: 'PLATFORM_UNSPECIFIED',
pluginType: 'GEMINI',
duetProject: server.projectId,
},
});
if (!loadRes.currentTier) {
throw new Error('User does not have a current tier');
}
return loadRes.currentTier.id;
}
async function getRemoteDataCollectionOptIn( async function getRemoteDataCollectionOptIn(
server: CodeAssistServer, server: CodeAssistServer,
): Promise<boolean> { ): Promise<boolean> {