Skip to content

Commit 90ea9c6

Browse files
feat(v5): Navigation progress bar (#1204)
* s * changelog
1 parent 6025919 commit 90ea9c6

6 files changed

Lines changed: 63 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Added
1111
- Added warning message that fires on startup when host environment contains env vars that simple-git flags as unsafe. [#1193](https://github.com/sourcebot-dev/sourcebot/pull/1193)
1212
- Added a loading skeleton to the latest commit info bar in the code browser. [#1195](https://github.com/sourcebot-dev/sourcebot/pull/1195)
13+
- Added progress bar when navigating between pages. [#1204](https://github.com/sourcebot-dev/sourcebot/pull/1204)
1314

1415
### Fixed
1516
- Add missing schema changes introduced in [#1170](https://github.com/sourcebot-dev/sourcebot/pull/1170). [#1176](https://github.com/sourcebot-dev/sourcebot/pull/1176)

packages/web/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"@ai-sdk/xai": "^3.0.83",
2828
"@auth/prisma-adapter": "^2.11.1",
2929
"@aws-sdk/credential-providers": "^3.1036.0",
30+
"@bprogress/next": "^3.2.12",
3031
"@codemirror/commands": "^6.6.0",
3132
"@codemirror/lang-cpp": "^6.0.2",
3233
"@codemirror/lang-css": "^6.3.0",

packages/web/src/app/(app)/browse/components/pureFileTreePanel.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import React, { useCallback, useMemo, useRef } from "react";
66
import { FileTreeItemComponent } from "./fileTreeItemComponent";
77
import { getBrowsePath } from "@/app/(app)/browse/hooks/utils";
88
import { useBrowseParams } from "@/app/(app)/browse/hooks/useBrowseParams";
9+
import { useProgress } from "@bprogress/next";
910

1011
const renderLoadingSkeleton = (depth: number) => {
1112
return (
@@ -27,6 +28,7 @@ interface PureFileTreePanelProps {
2728
export const PureFileTreePanel = ({ tree, openPaths, path, onTreeNodeClicked }: PureFileTreePanelProps) => {
2829
const scrollAreaRef = useRef<HTMLDivElement>(null);
2930
const { repoName, revisionName } = useBrowseParams();
31+
const { stop } = useProgress();
3032

3133
const renderTree = useCallback((nodes: FileTreeNode, depth = 0): React.ReactNode => {
3234
return (
@@ -61,6 +63,7 @@ export const PureFileTreePanel = ({ tree, openPaths, path, onTreeNodeClicked }:
6163
onNavigate={(e) => {
6264
if (node.type === 'tree') {
6365
e.preventDefault();
66+
stop();
6467
}
6568
}}
6669
parentRef={scrollAreaRef}
@@ -77,7 +80,7 @@ export const PureFileTreePanel = ({ tree, openPaths, path, onTreeNodeClicked }:
7780
})}
7881
</>
7982
);
80-
}, [onTreeNodeClicked, path, repoName, revisionName, openPaths]);
83+
}, [onTreeNodeClicked, path, repoName, revisionName, openPaths, stop]);
8184

8285
const renderedTree = useMemo(() => renderTree(tree), [tree, renderTree]);
8386

packages/web/src/app/layout.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { Metadata } from "next";
22
import Script from "next/script";
33
import "./globals.css";
44
import { ThemeProvider } from "next-themes";
5+
import { ProgressBarProvider } from "./progressBarProvider";
56
import { QueryClientProvider } from "./queryClientProvider";
67
import { PostHogProvider } from "./posthogProvider";
78
import { Toaster } from "@/components/ui/toaster";
@@ -80,7 +81,9 @@ export default async function RootLayout({
8081
>
8182
<QueryClientProvider>
8283
<TooltipProvider>
83-
{children}
84+
<ProgressBarProvider>
85+
{children}
86+
</ProgressBarProvider>
8487
</TooltipProvider>
8588
</QueryClientProvider>
8689
</ThemeProvider>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use client';
2+
3+
import { ProgressProvider } from '@bprogress/next/app';
4+
5+
export const ProgressBarProvider = ({ children }: { children: React.ReactNode }) => {
6+
return (
7+
<ProgressProvider
8+
color="var(--highlight)"
9+
height="2px"
10+
options={{
11+
showSpinner: false
12+
}}
13+
delay={300}
14+
shallowRouting
15+
>
16+
{children}
17+
</ProgressProvider>
18+
);
19+
};

yarn.lock

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1328,6 +1328,39 @@ __metadata:
13281328
languageName: node
13291329
linkType: hard
13301330

1331+
"@bprogress/core@npm:^1.3.4":
1332+
version: 1.3.4
1333+
resolution: "@bprogress/core@npm:1.3.4"
1334+
checksum: 10c0/fae88e83375c5d67b31a7186b6e6fad0f1ef59daee7408c9d6fe150ab3e1b368acfebd1b73ef913567c340803dac96841d81acc05268cdb99118431a26e3f258
1335+
languageName: node
1336+
linkType: hard
1337+
1338+
"@bprogress/next@npm:^3.2.12":
1339+
version: 3.2.12
1340+
resolution: "@bprogress/next@npm:3.2.12"
1341+
dependencies:
1342+
"@bprogress/core": "npm:^1.3.4"
1343+
"@bprogress/react": "npm:^1.2.7"
1344+
peerDependencies:
1345+
next: ">=13.0.0"
1346+
react: ">=18.0.0"
1347+
react-dom: ">=18.0.0"
1348+
checksum: 10c0/8d993202a81125aae9543814d2248ee9e72e395ba570789362dbaaa9f09dd553f21b6a5c510843eb5fcb0eedfd21b0a7499ac0aa8a924a581910fb2531949aec
1349+
languageName: node
1350+
linkType: hard
1351+
1352+
"@bprogress/react@npm:^1.2.7":
1353+
version: 1.2.7
1354+
resolution: "@bprogress/react@npm:1.2.7"
1355+
dependencies:
1356+
"@bprogress/core": "npm:^1.3.4"
1357+
peerDependencies:
1358+
react: ">=18.0.0"
1359+
react-dom: ">=18.0.0"
1360+
checksum: 10c0/f7683197118ab3a7355dfb8d12e4330ffa543ea4262bc8e04a54fb7a1caf0853e77e9a7648dcb2bba6082e0af1cf6adc5adfba80c63d45f953431e7c7a865419
1361+
languageName: node
1362+
linkType: hard
1363+
13311364
"@cfworker/json-schema@npm:^4.0.2":
13321365
version: 4.1.1
13331366
resolution: "@cfworker/json-schema@npm:4.1.1"
@@ -9008,6 +9041,7 @@ __metadata:
90089041
"@asteasolutions/zod-to-openapi": "npm:7.3.4"
90099042
"@auth/prisma-adapter": "npm:^2.11.1"
90109043
"@aws-sdk/credential-providers": "npm:^3.1036.0"
9044+
"@bprogress/next": "npm:^3.2.12"
90119045
"@codemirror/commands": "npm:^6.6.0"
90129046
"@codemirror/lang-cpp": "npm:^6.0.2"
90139047
"@codemirror/lang-css": "npm:^6.3.0"

0 commit comments

Comments
 (0)