Skip to content

Commit baf720c

Browse files
committed
Add progress indicator
1 parent 8c66b2d commit baf720c

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed

package-lock.json

+26
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/web/package.json

+2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
"dependencies": {
1818
"@arethetypeswrong/core": "file:../core",
1919
"immer": "^9.0.21",
20+
"nprogress": "^0.2.0",
2021
"validate-npm-package-name": "^5.0.0"
2122
},
2223
"devDependencies": {
24+
"@types/nprogress": "^0.2.0",
2325
"@types/validate-npm-package-name": "^4.0.0",
2426
"esbuild": "^0.17.4",
2527
"vite": "^4.0.4"

packages/web/src/main.css

+9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@import url("nprogress/nprogress.css");
2+
13
:root {
24
--color-bg: #fff;
35
--color-text-primary: rgba(0, 0, 0, 1);
@@ -130,3 +132,10 @@ td {
130132
.display-none {
131133
display: none;
132134
}
135+
136+
#nprogress .peg {
137+
box-shadow: none;
138+
}
139+
#nprogress .bar {
140+
background: var(--color-link);
141+
}

packages/web/src/main.ts

+12
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { ResultMessage } from "../worker/worker.ts";
33
import { subscribeRenderer } from "./renderer.ts";
44
import { updateState, type PackageInfo, type ParsedPackageSpec, getState, subscribe, type State } from "./state.ts";
55
import { shallowEqual } from "./utils/shallowEqual.ts";
6+
import NProgress from "nprogress";
67

78
// Good grief https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
89
const semverRegex =
@@ -28,6 +29,8 @@ worker.onmessage = async (event: MessageEvent<ResultMessage>) => {
2829
}
2930
};
3031

32+
NProgress.configure({ showSpinner: false });
33+
3134
subscribeRenderer({
3235
onPackageNameInput,
3336
onCheck,
@@ -40,6 +43,15 @@ subscribeRenderer({
4043

4144
subscribe(debounce(getPackageInfo, 300));
4245

46+
subscribe((prevState) => {
47+
const state = getState();
48+
if (state.isLoading && !prevState.isLoading) {
49+
NProgress.start();
50+
} else if (!state.isLoading && prevState.isLoading) {
51+
NProgress.done();
52+
}
53+
});
54+
4355
if (location.search) {
4456
const packageNameInput = document.getElementById("package-spec") as HTMLInputElement;
4557
const params = new URLSearchParams(location.search);

0 commit comments

Comments
 (0)