Enable citations by default for certain users. (#7438)

This commit is contained in:
Tommaso Sciortino
2025-09-02 09:36:24 -07:00
committed by GitHub
parent c29e44848b
commit 997136ae25
5 changed files with 87 additions and 181 deletions

View File

@@ -5,11 +5,11 @@
*/
import { useState, useEffect, useCallback } from 'react';
import type { Config } from '@google/gemini-cli-core';
import {
CodeAssistServer,
type Config,
type CodeAssistServer,
UserTierId,
LoggingContentGenerator,
getCodeAssistServer,
} from '@google/gemini-cli-core';
export interface PrivacyState {
@@ -30,7 +30,7 @@ export const usePrivacySettings = (config: Config) => {
isLoading: true,
});
try {
const server = getCodeAssistServer(config);
const server = getCodeAssistServerOrFail(config);
const tier = await getTier(server);
if (tier !== UserTierId.FREE) {
// We don't need to fetch opt-out info since non-free tier
@@ -61,7 +61,7 @@ export const usePrivacySettings = (config: Config) => {
const updateDataCollectionOptIn = useCallback(
async (optIn: boolean) => {
try {
const server = getCodeAssistServer(config);
const server = getCodeAssistServerOrFail(config);
const updatedOptIn = await setRemoteDataCollectionOptIn(server, optIn);
setPrivacyState({
isLoading: false,
@@ -84,19 +84,12 @@ export const usePrivacySettings = (config: Config) => {
};
};
function getCodeAssistServer(config: Config): CodeAssistServer {
let server = config.getGeminiClient().getContentGenerator();
// Unwrap LoggingContentGenerator if present
if (server instanceof LoggingContentGenerator) {
server = server.getWrapped();
}
// Neither of these cases should ever happen.
if (!(server instanceof CodeAssistServer)) {
throw new Error('Oauth not being used');
} else if (!server.projectId) {
function getCodeAssistServerOrFail(config: Config): CodeAssistServer {
const server = getCodeAssistServer(config);
if (server === undefined) {
throw new Error('Oauth not being used');
} else if (server.projectId === undefined) {
throw new Error('CodeAssist server is missing a project ID');
}
return server;
}