Skip to content

Commit d185ae9

Browse files
authored
chore: better types (#21)
1 parent 0f6e21b commit d185ae9

30 files changed

+916
-570
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@ dist-ssr
2626
# generated files
2727
html
2828
dist
29+
coverage

package-lock.json

Lines changed: 200 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77
"dev": "vite",
88
"build": "vite build",
99
"test": "vitest",
10-
"lint": "eslint .",
10+
"lint": "eslint src",
1111
"preview": "vite preview"
1212
},
1313
"dependencies": {
1414
"@ariakit/react": "^0.4.15",
1515
"@atproto/api": "^0.12.2",
1616
"@hookform/resolvers": "^3.9.1",
17+
"@sinclair/typebox": "^0.34.13",
1718
"@stdlib/error-to-json": "^0.2.2",
1819
"@tanstack/react-query": "^5.24.1",
1920
"@tanstack/react-query-devtools": "^5.62.3",
@@ -49,6 +50,7 @@
4950
"@types/react": "^18.3.17",
5051
"@types/react-dom": "^18.3.5",
5152
"@vitejs/plugin-react": "^4.3.1",
53+
"@vitest/coverage-v8": "^2.1.8",
5254
"@vitest/ui": "^2.1.8",
5355
"autoprefixer": "^10.4.18",
5456
"eslint": "^9.9.1",
@@ -62,6 +64,7 @@
6264
"typescript": "^5.5.3",
6365
"typescript-eslint": "^8.3.0",
6466
"vite": "^5.4.2",
65-
"vitest": "^2.1.8"
67+
"vitest": "^2.1.8",
68+
"zod-validation-error": "^3.4.0"
6669
}
6770
}

src/components/CreatePost.tsx

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { useForm } from "react-hook-form";
2-
import { useCreatePost } from "../lib/bluesky/hooks/useCreatePost";
3-
import { Button } from "./ui/Button";
1+
import { useForm } from 'react-hook-form';
2+
import { useCreatePost } from '../lib/bluesky/hooks/useCreatePost';
3+
import { Button } from './ui/Button';
44

5-
interface PostFormData {
5+
type PostFormData = {
66
text: string;
7-
}
7+
};
88

99
export function CreatePost() {
1010
const createPost = useCreatePost();
@@ -22,27 +22,20 @@ export function CreatePost() {
2222
};
2323

2424
return (
25-
<form
26-
onSubmit={handleSubmit(onSubmit)}
27-
className="bg-black p-4 rounded-lg shadow mb-4"
28-
>
25+
<form onSubmit={handleSubmit(onSubmit)} className="bg-black p-4 rounded-lg shadow mb-4">
2926
<textarea
30-
{...register("text", { required: "Post content is required" })}
27+
{...register('text', { required: 'Post content is required' })}
3128
placeholder="What's on your mind?"
3229
className="w-full p-2 border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 rounded-md focus:ring-2 focus:ring-gray-400 focus:border-gray-400"
3330
rows={3}
3431
/>
35-
{errors.text && (
36-
<p className="mt-1 text-sm text-red-500">{errors.text.message}</p>
37-
)}
32+
{errors.text && <p className="mt-1 text-sm text-red-500">{errors.text.message}</p>}
3833
<div className="mt-2 flex justify-end">
3934
<Button type="submit" disabled={createPost.isPending}>
40-
{createPost.isPending ? "Posting..." : "Post"}
35+
{createPost.isPending ? 'Posting...' : 'Post'}
4136
</Button>
4237
</div>
43-
{createPost.error && (
44-
<p className="mt-2 text-red-500 text-sm">{createPost.error.message}</p>
45-
)}
38+
{createPost.error && <p className="mt-2 text-red-500 text-sm">{createPost.error.message}</p>}
4639
</form>
4740
);
4841
}

src/components/ErrorBoundary.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ import { TFunction } from 'i18next';
33
import { Component, ErrorInfo, ReactNode } from 'react';
44
import { withTranslation } from 'react-i18next';
55

6-
interface Props {
6+
type Props = {
77
children: ReactNode;
88
fallback?: ReactNode;
99
t: TFunction<['error'], undefined>;
10-
}
10+
};
1111

12-
interface State {
12+
type State = {
1313
hasError: boolean;
1414
error?: Error;
15-
}
15+
};
1616

1717
class ErrorBoundaryInner extends Component<Props, State> {
1818
public state: State = {

0 commit comments

Comments
 (0)