fix: clarify GitHub token settings
This commit is contained in:
@@ -269,7 +269,7 @@ export const GitHubSettings: React.FC = () => {
|
||||
<div className="mb-8">
|
||||
<div className="mb-3 px-1 flex items-start justify-between gap-4">
|
||||
<div className="flex items-center gap-2">
|
||||
<h3 className="typography-ui-header font-semibold text-foreground">GitHub</h3>
|
||||
<h3 className="typography-ui-header font-semibold text-foreground">{t('settings.github.page.oauth.title')}</h3>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<Icon name="information" className="h-3.5 w-3.5 text-muted-foreground/60 cursor-help" />
|
||||
@@ -457,10 +457,33 @@ export const GitHubSettings: React.FC = () => {
|
||||
<div className="rounded-lg bg-[var(--surface-elevated)]/70 overflow-hidden">
|
||||
<div className={cn("px-4 py-3", isMobile ? "flex flex-col gap-3" : "flex items-center justify-between gap-4")}>
|
||||
<div className={cn("flex min-w-0 items-center gap-4", isMobile ? "w-full" : undefined)}>
|
||||
<div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-[var(--interactive-border)] bg-[var(--surface-muted)]">
|
||||
<Icon name="terminal" className="h-4 w-4 text-muted-foreground" />
|
||||
</div>
|
||||
{ghCli.user?.avatarUrl ? (
|
||||
<img
|
||||
src={ghCli.user.avatarUrl}
|
||||
alt={ghCli.user.login ? t('settings.github.page.avatarAlt.withLogin', { login: ghCli.user.login }) : t('settings.github.page.avatarAlt.fallback')}
|
||||
className="h-10 w-10 shrink-0 rounded-full border border-[var(--interactive-border)] bg-[var(--surface-muted)] object-cover"
|
||||
loading="lazy"
|
||||
referrerPolicy="no-referrer"
|
||||
/>
|
||||
) : (
|
||||
<div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-[var(--interactive-border)] bg-[var(--surface-muted)]">
|
||||
<Icon name="github-fill" className="h-4 w-4 text-muted-foreground" />
|
||||
</div>
|
||||
)}
|
||||
<div className="min-w-0 flex-1">
|
||||
{!ghCli.disabled && ghCli.user && (
|
||||
<div className="typography-ui-label text-foreground truncate">
|
||||
{ghCli.user.name?.trim() || ghCli.user.login || 'GitHub'}
|
||||
</div>
|
||||
)}
|
||||
{!ghCli.disabled && ghCli.user?.login && (
|
||||
<div className={cn("flex items-center gap-2 typography-meta text-muted-foreground mt-0.5", isMobile ? "flex-wrap" : "truncate")}>
|
||||
<Icon name="github-fill" className="h-3.5 w-3.5 shrink-0" />
|
||||
<span className="font-mono">{ghCli.user.login}</span>
|
||||
{ghCli.user.email && <span className="opacity-50">•</span>}
|
||||
{ghCli.user.email && <span>{ghCli.user.email}</span>}
|
||||
</div>
|
||||
)}
|
||||
<div className={cn("typography-meta text-muted-foreground", ghCli.disabled ? "opacity-60" : undefined)}>
|
||||
{ghCli.disabled
|
||||
? t('settings.github.page.ghCli.disabledDescription')
|
||||
|
||||
@@ -1407,7 +1407,8 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.disconnectFailed': 'Failed to disconnect GitHub',
|
||||
'settings.github.page.toast.accountSwitched': 'GitHub account switched',
|
||||
'settings.github.page.toast.accountSwitchFailed': 'Failed to switch GitHub account',
|
||||
'settings.github.page.ghCli.title': 'gh CLI',
|
||||
'settings.github.page.oauth.title': 'GitHub OAuth Token',
|
||||
'settings.github.page.ghCli.title': 'GitHub CLI Token',
|
||||
'settings.github.page.ghCli.activeDescription': 'Authenticated via the gh CLI',
|
||||
'settings.github.page.ghCli.fallbackDescription': 'Available as fallback if OpenChamber auth is removed',
|
||||
'settings.github.page.ghCli.disabledDescription': 'Installed but not used as a fallback',
|
||||
|
||||
@@ -1374,7 +1374,8 @@ export const settingsDict = {
|
||||
"settings.github.page.toast.disconnectFailed": "No se pudo desconectar de GitHub",
|
||||
"settings.github.page.toast.accountSwitched": "Cuenta de GitHub cambiada",
|
||||
"settings.github.page.toast.accountSwitchFailed": "No se pudo cambiar de cuenta de GitHub",
|
||||
"settings.github.page.ghCli.title": "gh CLI",
|
||||
"settings.github.page.oauth.title": "Token OAuth de GitHub",
|
||||
"settings.github.page.ghCli.title": "Token CLI de GitHub",
|
||||
"settings.github.page.ghCli.activeDescription": "Autenticado a través de gh CLI",
|
||||
"settings.github.page.ghCli.fallbackDescription": "Disponible como respaldo si se elimina la autenticación de OpenChamber",
|
||||
"settings.github.page.ghCli.disabledDescription": "Instalado pero no usado como respaldo",
|
||||
|
||||
@@ -1363,7 +1363,8 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.disconnectFailed': 'Échec de la déconnexion du GitHub',
|
||||
'settings.github.page.toast.accountSwitched': 'Le compte GitHub a changé',
|
||||
'settings.github.page.toast.accountSwitchFailed': 'Échec du changement de compte GitHub',
|
||||
'settings.github.page.ghCli.title': 'gh CLI',
|
||||
'settings.github.page.oauth.title': 'Token OAuth GitHub',
|
||||
'settings.github.page.ghCli.title': 'Token CLI GitHub',
|
||||
'settings.github.page.ghCli.activeDescription': 'Authentifié via gh CLI',
|
||||
'settings.github.page.ghCli.fallbackDescription': 'Disponible comme solution de secours si l’authentification OpenChamber est supprimée',
|
||||
'settings.github.page.ghCli.disabledDescription': 'Installé, mais non utilisé comme solution de secours',
|
||||
|
||||
@@ -1374,7 +1374,8 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.disconnectFailed': 'GitHub 연결을 해제하지 못했습니다',
|
||||
'settings.github.page.toast.accountSwitched': 'GitHub 계정이 전환되었습니다',
|
||||
'settings.github.page.toast.accountSwitchFailed': 'GitHub 계정을 전환하지 못했습니다',
|
||||
'settings.github.page.ghCli.title': 'gh CLI',
|
||||
'settings.github.page.oauth.title': 'GitHub OAuth 토큰',
|
||||
'settings.github.page.ghCli.title': 'GitHub CLI 토큰',
|
||||
'settings.github.page.ghCli.activeDescription': 'gh CLI를 통해 인증됨',
|
||||
'settings.github.page.ghCli.fallbackDescription': 'OpenChamber 인증이 제거된 경우 대체로 사용 가능',
|
||||
'settings.github.page.ghCli.disabledDescription': '설치되어 있지만 대체로 사용되지 않음',
|
||||
|
||||
@@ -249,7 +249,8 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'Rezerwa gh CLI włączona',
|
||||
'settings.github.page.toast.ghCliDisabled': 'Rezerwa gh CLI wyłączona',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': 'Nie udało się zaktualizować ustawienia gh CLI',
|
||||
'settings.github.page.ghCli.title': 'gh CLI',
|
||||
'settings.github.page.oauth.title': 'Token OAuth GitHub',
|
||||
'settings.github.page.ghCli.title': 'Token CLI GitHub',
|
||||
'settings.github.page.ghCli.activeDescription': 'Uwierzytelniono przez gh CLI',
|
||||
'settings.github.page.ghCli.fallbackDescription': 'Dostępne jako rezerwa, jeśli uwierzytelnienie OpenChamber zostanie usunięte',
|
||||
'settings.github.page.ghCli.disabledDescription': 'Zainstalowane, ale nieużywane jako rezerwa',
|
||||
|
||||
@@ -1374,7 +1374,8 @@ export const settingsDict = {
|
||||
"settings.github.page.toast.disconnectFailed": "Não foi possível desconectar de GitHub",
|
||||
"settings.github.page.toast.accountSwitched": "Conta de GitHub cambiada",
|
||||
"settings.github.page.toast.accountSwitchFailed": "Não foi possível mudar de conta de GitHub",
|
||||
"settings.github.page.ghCli.title": "gh CLI",
|
||||
"settings.github.page.oauth.title": "Token OAuth do GitHub",
|
||||
"settings.github.page.ghCli.title": "Token CLI do GitHub",
|
||||
"settings.github.page.ghCli.activeDescription": "Autenticado via gh CLI",
|
||||
"settings.github.page.ghCli.fallbackDescription": "Disponível como alternativa se a autenticação do OpenChamber for removida",
|
||||
"settings.github.page.ghCli.disabledDescription": "Instalado, mas não usado como alternativa",
|
||||
|
||||
@@ -1374,7 +1374,8 @@ export const settingsDict = {
|
||||
"settings.github.page.toast.disconnectFailed": "Не вдалося відключити GitHub",
|
||||
"settings.github.page.toast.accountSwitched": "Обліковий запис GitHub змінено",
|
||||
"settings.github.page.toast.accountSwitchFailed": "Не вдалося змінити обліковий запис GitHub",
|
||||
"settings.github.page.ghCli.title": "gh CLI",
|
||||
"settings.github.page.oauth.title": "GitHub OAuth Token",
|
||||
"settings.github.page.ghCli.title": "GitHub CLI Token",
|
||||
"settings.github.page.ghCli.activeDescription": "Автентифіковано через gh CLI",
|
||||
"settings.github.page.ghCli.fallbackDescription": "Доступно як резервний варіант, якщо автентифікацію OpenChamber видалено",
|
||||
"settings.github.page.ghCli.disabledDescription": "Встановлено, але не використовується як резервний варіант",
|
||||
|
||||
@@ -1374,7 +1374,8 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.disconnectFailed': '断开 GitHub 失败',
|
||||
'settings.github.page.toast.accountSwitched': 'GitHub 账号已切换',
|
||||
'settings.github.page.toast.accountSwitchFailed': '切换 GitHub 账号失败',
|
||||
'settings.github.page.ghCli.title': 'gh CLI',
|
||||
'settings.github.page.oauth.title': 'GitHub OAuth 令牌',
|
||||
'settings.github.page.ghCli.title': 'GitHub CLI 令牌',
|
||||
'settings.github.page.ghCli.activeDescription': '已通过 gh CLI 认证',
|
||||
'settings.github.page.ghCli.fallbackDescription': '在 OpenChamber 认证被移除时可作为备用',
|
||||
'settings.github.page.ghCli.disabledDescription': '已安装但未作为备用使用',
|
||||
|
||||
@@ -1295,7 +1295,8 @@
|
||||
'settings.github.page.toast.disconnectFailed': '中斷 GitHub 失敗',
|
||||
'settings.github.page.toast.accountSwitched': 'GitHub 帳號已切換',
|
||||
'settings.github.page.toast.accountSwitchFailed': '切換 GitHub 帳號失敗',
|
||||
'settings.github.page.ghCli.title': 'gh CLI',
|
||||
'settings.github.page.oauth.title': 'GitHub OAuth 權杖',
|
||||
'settings.github.page.ghCli.title': 'GitHub CLI 權杖',
|
||||
'settings.github.page.ghCli.activeDescription': '已透過 gh CLI 認證',
|
||||
'settings.github.page.ghCli.fallbackDescription': '在 OpenChamber 認證被移除時可作為備用',
|
||||
'settings.github.page.ghCli.disabledDescription': '已安裝但未作為備用使用',
|
||||
|
||||
@@ -84,12 +84,22 @@ export function registerGitHubRoutes(app) {
|
||||
const ghCliDisabled = isGhCliDisabled();
|
||||
const ghToken = getGhCliToken();
|
||||
const usingOwnToken = Boolean(auth?.accessToken);
|
||||
let ghCliUser = null;
|
||||
|
||||
if (ghToken !== null && !ghCliDisabled && usingOwnToken) {
|
||||
try {
|
||||
const { Octokit } = await import('@octokit/rest');
|
||||
ghCliUser = await getGitHubUserSummary(new Octokit({ auth: ghToken }));
|
||||
} catch {
|
||||
ghCliUser = null;
|
||||
}
|
||||
}
|
||||
|
||||
const buildGhCli = (activeUser = null) => ({
|
||||
available: ghToken !== null,
|
||||
disabled: ghCliDisabled,
|
||||
active: !usingOwnToken && ghToken !== null && !ghCliDisabled,
|
||||
...(activeUser ? { user: activeUser } : {}),
|
||||
...(!ghCliDisabled && (activeUser || ghCliUser) ? { user: activeUser || ghCliUser } : {}),
|
||||
});
|
||||
|
||||
const octokit = getOctokitOrNull();
|
||||
|
||||
Reference in New Issue
Block a user