Skip to content

Commit 54f249e

Browse files
committed
Hide commit button when no Git repositories are detected
1 parent b0de592 commit 54f249e

6 files changed

Lines changed: 41 additions & 25 deletions

File tree

‎packages/vscode/src/views/panel/backend/panel-provider.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,8 @@ export class PanelProvider implements vscode.WebviewViewProvider {
763763
)
764764
this.send_message({
765765
command: 'GIT_STATE_CHANGED',
766-
has_changes_to_commit: has_changes
766+
has_changes_to_commit: has_changes,
767+
has_some_git_repositories: git.repositories.length > 0
767768
})
768769
} catch (error) {
769770
Logger.warn({

‎packages/vscode/src/views/panel/frontend/Panel.tsx‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export const Panel = () => {
8080
set_chat_input_focus_and_select_key,
8181
context_size_warning_threshold,
8282
has_changes_to_commit,
83+
has_some_git_repositories,
8384
can_undo,
8485
context_file_paths,
8586
presets_collapsed,
@@ -224,6 +225,7 @@ export const Panel = () => {
224225
<Layout
225226
on_donate_click={() => set_viewing_donations(true)}
226227
are_links_dimmed={active_view == 'main'}
228+
has_some_git_repositories={has_some_git_repositories}
227229
>
228230
<div
229231
className={cn(styles.content, {

‎packages/vscode/src/views/panel/frontend/components/Layout/Footer/Footer.tsx‎

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { LayoutContext } from '../../../contexts/LayoutContext'
88
type Props = {
99
on_donate_click: () => void
1010
are_links_dimmed?: boolean
11+
has_some_git_repositories?: boolean
1112
}
1213

1314
export const Footer: React.FC<Props> = (props) => {
@@ -152,29 +153,33 @@ export const Footer: React.FC<Props> = (props) => {
152153
)}
153154
/>
154155
</button>
155-
<button
156-
className={cn(styles['footer__action-button'], {
157-
[styles['footer__action-button--compact']]: compact_step >= 2
158-
})}
159-
onClick={handle_commit_click}
160-
title={
161-
has_changes_to_commit && !is_commit_disabled_temporarily
162-
? 'Commit changes'
163-
: 'No changes to commit'
164-
}
165-
disabled={!has_changes_to_commit || is_commit_disabled_temporarily}
166-
>
167-
<span className={styles['footer__action-button__text']}>
168-
Commit
169-
</span>
170-
<span
171-
className={cn(
172-
styles['footer__action-button__icon'],
173-
'codicon',
174-
'codicon-git-commit'
175-
)}
176-
/>
177-
</button>
156+
{props.has_some_git_repositories && (
157+
<button
158+
className={cn(styles['footer__action-button'], {
159+
[styles['footer__action-button--compact']]: compact_step >= 2
160+
})}
161+
onClick={handle_commit_click}
162+
title={
163+
has_changes_to_commit && !is_commit_disabled_temporarily
164+
? 'Commit changes'
165+
: 'No changes to commit'
166+
}
167+
disabled={
168+
!has_changes_to_commit || is_commit_disabled_temporarily
169+
}
170+
>
171+
<span className={styles['footer__action-button__text']}>
172+
Commit
173+
</span>
174+
<span
175+
className={cn(
176+
styles['footer__action-button__icon'],
177+
'codicon',
178+
'codicon-git-commit'
179+
)}
180+
/>
181+
</button>
182+
)}
178183
</div>
179184
</div>
180185
</>

‎packages/vscode/src/views/panel/frontend/components/Layout/Layout.tsx‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,22 @@ type Props = {
55
children: React.ReactNode
66
on_donate_click: () => void
77
are_links_dimmed?: boolean
8+
has_some_git_repositories: boolean
89
}
910

1011
export const Layout: React.FC<Props> = ({
1112
children,
1213
on_donate_click,
13-
are_links_dimmed
14+
are_links_dimmed,
15+
has_some_git_repositories
1416
}) => {
1517
return (
1618
<div className={styles.container}>
1719
<div className={styles.content}>{children}</div>
1820
<Footer
1921
on_donate_click={on_donate_click}
2022
are_links_dimmed={are_links_dimmed}
23+
has_some_git_repositories={has_some_git_repositories}
2124
/>
2225
</div>
2326
)

‎packages/vscode/src/views/panel/frontend/hooks/use-panel.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ export const use_panel = (vscode: any) => {
108108
useState<number>()
109109
const [has_changes_to_commit, set_has_changes_to_commit] =
110110
useState<boolean>(false)
111+
const [has_some_git_repositories, set_has_some_git_repositories] =
112+
useState<boolean>(true)
111113
const [can_undo, set_can_undo] = useState<boolean>(false)
112114
const [context_file_paths, set_context_file_paths] = useState<string[]>([])
113115
const [presets_collapsed_by_web_mode, set_presets_collapsed_by_web_mode] =
@@ -346,6 +348,7 @@ export const use_panel = (vscode: any) => {
346348
set_context_size_warning_threshold(message.threshold)
347349
} else if (message.command == 'GIT_STATE_CHANGED') {
348350
set_has_changes_to_commit(message.has_changes_to_commit)
351+
set_has_some_git_repositories(message.has_some_git_repositories)
349352
} else if (message.command == 'CAN_UNDO_CHANGED') {
350353
set_can_undo(message.can_undo)
351354
} else if (message.command == 'SHOW_PREVIEW_ONGOING_MODAL') {
@@ -554,6 +557,7 @@ export const use_panel = (vscode: any) => {
554557
set_chat_input_focus_and_select_key,
555558
context_size_warning_threshold,
556559
has_changes_to_commit,
560+
has_some_git_repositories,
557561
can_undo,
558562
context_file_paths,
559563
presets_collapsed: web_prompt_type

‎packages/vscode/src/views/panel/types/messages.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@ export interface EditorSelectionChangedMessage extends BaseMessage {
577577
export interface GitStateChangedMessage extends BaseMessage {
578578
command: 'GIT_STATE_CHANGED'
579579
has_changes_to_commit: boolean
580+
has_some_git_repositories: boolean
580581
}
581582

582583
export interface ChatHistoryMessage extends BaseMessage {

0 commit comments

Comments
 (0)