@@ -19,6 +19,8 @@ import {RepoSelector} from './RepoSelector';
1919import { NavigateCallback , NavigateTarget , NavigateTargetType } from "./Navigation" ;
2020import { match } from "ts-pattern" ;
2121import { FileViewer } from "./FileViewer" ;
22+ import { DiffViewer } from "./DiffViewer" ;
23+ import { ChangeViewer } from "./ChangeViewer" ;
2224import { HistoryList } from "./History" ;
2325import { Breadcrumbs } from "./Breadcrumbs" ;
2426import { DEFAULT_FILTER } from "./Josh" ;
@@ -42,7 +44,9 @@ function useNavigateCallback(): NavigateCallback {
4244 const pathname = match ( targetType )
4345 . with ( NavigateTargetType . History , ( ) => '/history' )
4446 . with ( NavigateTargetType . Directory , ( ) => '/browse' )
47+ . with ( NavigateTargetType . Change , ( ) => '/change' )
4548 . with ( NavigateTargetType . File , ( ) => '/view' )
49+ . with ( NavigateTargetType . Diff , ( ) => '/diff' )
4650 . run ( )
4751
4852 navigate ( {
@@ -152,6 +156,27 @@ function Browse() {
152156 </ div >
153157}
154158
159+ function ChangeView ( ) {
160+ const param = useStrictGetSearchParam ( )
161+
162+ useEffect ( ( ) => {
163+ document . title = `/${ param ( 'path' ) } - ${ param ( 'repo' ) } - Josh`
164+ } ) ;
165+
166+ return < div >
167+ < TopNav
168+ repo = { param ( 'repo' ) }
169+ filter = { param ( 'filter' ) } />
170+
171+ < ChangeViewer
172+ repo = { param ( 'repo' ) }
173+ filter = { param ( 'filter' ) }
174+ rev = { param ( 'rev' ) }
175+ navigateCallback = { useNavigateCallback ( ) }
176+ />
177+ </ div >
178+ }
179+
155180function History ( ) {
156181 const param = useStrictGetSearchParam ( )
157182
@@ -201,6 +226,38 @@ function View() {
201226 )
202227}
203228
229+ function DiffView ( ) {
230+ const param = useStrictGetSearchParam ( )
231+
232+ useEffect ( ( ) => {
233+ document . title = `${ param ( 'path' ) } - ${ param ( 'repo' ) } - Josh`
234+ } ) ;
235+
236+ return (
237+ < div >
238+ < TopNav
239+ repo = { param ( 'repo' ) }
240+ filter = { param ( 'filter' ) } />
241+
242+ < Breadcrumbs
243+ repo = { param ( 'repo' ) }
244+ path = { param ( 'path' ) }
245+ filter = { param ( 'filter' ) }
246+ rev = { param ( 'rev' ) }
247+ navigateCallback = { useNavigateCallback ( ) } />
248+
249+ < DiffViewer
250+ repo = { param ( 'repo' ) }
251+ path = { param ( 'path' ) }
252+ filter = { param ( 'filter' ) }
253+ rev = { param ( 'rev' ) }
254+ navigateCallback = { useNavigateCallback ( ) }
255+ />
256+ </ div >
257+ )
258+ }
259+
260+
204261function App ( ) {
205262 return (
206263 < BrowserRouter basename = { '/~/ui' } >
@@ -210,6 +267,8 @@ function App() {
210267 < Route path = '/browse' element = { < Browse /> } />
211268 < Route path = '/history' element = { < History /> } />
212269 < Route path = '/view' element = { < View /> } />
270+ < Route path = '/diff' element = { < DiffView /> } />
271+ < Route path = '/change' element = { < ChangeView /> } />
213272 </ Routes >
214273 </ BrowserRouter >
215274 ) ;
0 commit comments