nice hook

This commit is contained in:
Simon Knott 2025-02-10 16:37:20 +01:00
parent 298f92ee7e
commit bad91d5e84
No known key found for this signature in database
GPG key ID: 8CEDC00028084AEC
2 changed files with 13 additions and 6 deletions

View file

@ -26,7 +26,15 @@ import { attachmentURL } from './attachmentsTab';
import { fixTestPrompt } from '@web/components/prompts'; import { fixTestPrompt } from '@web/components/prompts';
import type { GitCommitInfo } from '@testIsomorphic/types'; import type { GitCommitInfo } from '@testIsomorphic/types';
export const GitCommitInfoContext = React.createContext<GitCommitInfo | undefined>(undefined); const GitCommitInfoContext = React.createContext<GitCommitInfo | undefined>(undefined);
export function GitCommitInfoProvider({ children, gitCommitInfo }: React.PropsWithChildren<{ gitCommitInfo: GitCommitInfo }>) {
return <GitCommitInfoContext.Provider value={gitCommitInfo}>{children}</GitCommitInfoContext.Provider>;
}
export function useGitCommitInfo() {
return React.useContext(GitCommitInfoContext);
}
const PromptButton: React.FC<{ const PromptButton: React.FC<{
error: string; error: string;
@ -47,7 +55,7 @@ const PromptButton: React.FC<{
} }
}, [actions]); }, [actions]);
const gitCommitInfo = React.useContext(GitCommitInfoContext); const gitCommitInfo = useGitCommitInfo();
const prompt = React.useMemo( const prompt = React.useMemo(
() => fixTestPrompt( () => fixTestPrompt(
error, error,

View file

@ -37,8 +37,7 @@ import { TestListView } from './uiModeTestListView';
import { TraceView } from './uiModeTraceView'; import { TraceView } from './uiModeTraceView';
import { SettingsView } from './settingsView'; import { SettingsView } from './settingsView';
import { DefaultSettingsView } from './defaultSettingsView'; import { DefaultSettingsView } from './defaultSettingsView';
import type { GitCommitInfo } from '@testIsomorphic/types'; import { GitCommitInfoProvider } from './errorsTab';
import { GitCommitInfoContext } from './errorsTab';
let xtermSize = { cols: 80, rows: 24 }; let xtermSize = { cols: 80, rows: 24 };
const xtermDataSource: XtermDataSource = { const xtermDataSource: XtermDataSource = {
@ -432,7 +431,7 @@ export const UIModeView: React.FC<{}> = ({
<XtermWrapper source={xtermDataSource}></XtermWrapper> <XtermWrapper source={xtermDataSource}></XtermWrapper>
</div> </div>
<div className={clsx('vbox', isShowingOutput && 'hidden')}> <div className={clsx('vbox', isShowingOutput && 'hidden')}>
<GitCommitInfoContext.Provider value={testModel?.config.metadata['git.commit.info']}> <GitCommitInfoProvider gitCommitInfo={testModel?.config.metadata['git.commit.info']}>
<TraceView <TraceView
pathSeparator={queryParams.pathSeparator} pathSeparator={queryParams.pathSeparator}
item={selectedItem} item={selectedItem}
@ -440,7 +439,7 @@ export const UIModeView: React.FC<{}> = ({
revealSource={revealSource} revealSource={revealSource}
onOpenExternally={location => testServerConnection?.openNoReply({ location: { file: location.file, line: location.line, column: location.column } })} onOpenExternally={location => testServerConnection?.openNoReply({ location: { file: location.file, line: location.line, column: location.column } })}
/> />
</GitCommitInfoContext.Provider> </GitCommitInfoProvider>
</div> </div>
</div>} </div>}
sidebar={<div className='vbox ui-mode-sidebar'> sidebar={<div className='vbox ui-mode-sidebar'>