claude-code-best/src/hooks/useChromeExtensionNotification.tsx
claude-code-best a14d3dc8f0 fix(types): clean type fixes across 92 files
Apply proper TypeScript type corrections without any unsafe casts:
- Fix unknown/never/{} types from decompilation
- Correct function signatures and parameter types
- Add missing type declarations and interfaces
- Fix Ink component prop types
- Update API client/provider type annotations

Test files with mock data casts are included as-is (acceptable pattern).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 23:45:56 +08:00

67 lines
2.1 KiB
TypeScript

import * as React from 'react'
import { Text } from '@anthropic/ink'
import { isClaudeAISubscriber } from '../utils/auth.js'
import {
isChromeExtensionInstalled,
shouldEnableClaudeInChrome,
} from '../utils/claudeInChrome/setup.js'
import { isRunningOnHomespace } from '../utils/envUtils.js'
import { useStartupNotification } from './notifs/useStartupNotification.js'
function getChromeFlag(): boolean | undefined {
if (process.argv.includes('--chrome')) {
return true
}
if (process.argv.includes('--no-chrome')) {
return false
}
return undefined
}
export function useChromeExtensionNotification(): void {
useStartupNotification(async () => {
const chromeFlag = getChromeFlag()
if (!shouldEnableClaudeInChrome(chromeFlag)) return null
// Claude in Chrome is only supported for claude.ai subscribers (unless user is ant)
if (process.env.USER_TYPE !== 'ant' && !isClaudeAISubscriber()) {
return {
key: 'chrome-requires-subscription',
jsx: (
<Text color="error">
Claude in Chrome requires a claude.ai subscription
</Text>
),
priority: 'immediate',
timeoutMs: 5000,
}
}
const installed = await isChromeExtensionInstalled()
if (!installed && !isRunningOnHomespace()) {
// Skip notification on Homespace since Chrome setup requires different steps (see go/hsproxy)
return {
key: 'chrome-extension-not-detected',
jsx: (
<Text color="warning">
Chrome extension not detected · https://claude.ai/chrome to install
</Text>
),
// TODO(hackyon): Lower the priority if the claude-in-chrome integration is no longer opt-in
priority: 'immediate',
timeoutMs: 3000,
}
}
if (chromeFlag === undefined) {
// Show low priority notification only when Chrome is enabled by default
// (not explicitly enabled with --chrome or disabled with --no-chrome)
return {
key: 'claude-in-chrome-default-enabled',
text: `Claude in Chrome enabled · /chrome`,
priority: 'low',
}
}
return null
})
}