Skip to content

Commit 0d5d239

Browse files
committed
implements useTaggedRelease hook
1 parent 8d75f18 commit 0d5d239

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-0
lines changed

docs/components/TaggedRelease.jsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import React from "react";
2+
import { useTaggedRelease } from "../../src";
3+
4+
const TaggedRelease = () => {
5+
const { release, loading, error } = useTaggedRelease(
6+
"facebook",
7+
"react",
8+
"v16.8.4"
9+
);
10+
11+
return (
12+
<div>
13+
<h1>Tagged release by repo</h1>
14+
{loading && <div>Loading release from Github</div>}
15+
{error && <div>{error}</div>}
16+
{release && (
17+
<div>
18+
<h4>
19+
<a
20+
href={release.html_url}
21+
target="_blank"
22+
rel="nofollow noreferrer"
23+
>
24+
{release.tag_name}
25+
</a>
26+
</h4>
27+
<div>{release.body}</div>
28+
</div>
29+
)}
30+
</div>
31+
);
32+
};
33+
34+
export default TaggedRelease;

docs/example.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import User from "./components/User";
55
import Branches from "./components/Branches";
66
import Branch from "./components/Branch";
77
import LatestRelease from "./components/LatestRelease";
8+
import TaggedRelease from "./components/TaggedRelease";
89

910
function App() {
1011
return (
@@ -19,6 +20,8 @@ function App() {
1920
<hr />
2021
<LatestRelease />
2122
<hr />
23+
<TaggedRelease />
24+
<hr />
2225
</div>
2326
);
2427
}

src/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import useUser from './lib/useUser'
33
import useBranches from './lib/branch/useBranches'
44
import useBranch from './lib/branch/useBranch'
55
import useLatestRelease from './lib/repository/useLatestRelease'
6+
import useTaggedRelease from './lib/repository/useTaggedRelease'
67

78
export {
89
useRepos,
910
useUser,
1011
useBranches,
1112
useBranch,
1213
useLatestRelease,
14+
useTaggedRelease,
1315
}
1416

1517
export default {
@@ -18,4 +20,5 @@ export default {
1820
useBranches,
1921
useBranch,
2022
useLatestRelease,
23+
useTaggedRelease,
2124
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import {
2+
useState,
3+
useEffect
4+
} from 'react'
5+
6+
export default function useTaggedRelease(owner, repo, tag) {
7+
const [release, setRelease] = useState(null)
8+
const [loading, setLoading] = useState(false)
9+
const [error, setError] = useState(null)
10+
11+
useEffect(() => {
12+
if (owner && owner.length > 0 && repo && repo.length > 0 && tag && tag.length > 0) {
13+
setError(null)
14+
setLoading(true)
15+
16+
fetch(`https://api.github.com/repos/${owner}/${repo}/releases/tags/${tag}`)
17+
.then(res => res.json())
18+
.then(data => {
19+
setLoading(false)
20+
setRelease(data)
21+
})
22+
.catch(e => {
23+
setLoading(false)
24+
setRelease(null)
25+
setError(e)
26+
})
27+
}
28+
}, [owner, repo])
29+
30+
return {
31+
release,
32+
loading,
33+
error
34+
}
35+
}

0 commit comments

Comments
 (0)