chore: Move to Typescript (#2783)
This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously. closes #1282
This commit is contained in:
52
app/components/Sidebar/components/Version.tsx
Normal file
52
app/components/Sidebar/components/Version.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
import * as React from "react";
|
||||
import styled from "styled-components";
|
||||
import Badge from "~/components/Badge";
|
||||
import { version } from "../../../../package.json";
|
||||
import SidebarLink from "./SidebarLink";
|
||||
|
||||
export default function Version() {
|
||||
const [releasesBehind, setReleasesBehind] = React.useState(0);
|
||||
|
||||
React.useEffect(() => {
|
||||
async function loadReleases() {
|
||||
let out = 0;
|
||||
const res = await fetch(
|
||||
"https://api.github.com/repos/outline/outline/releases"
|
||||
);
|
||||
const releases = await res.json();
|
||||
|
||||
for (const release of releases) {
|
||||
if (release.tag_name === `v${version}`) {
|
||||
return setReleasesBehind(out);
|
||||
} else {
|
||||
out++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
loadReleases();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<SidebarLink
|
||||
href="https://github.com/outline/outline/releases"
|
||||
label={
|
||||
<>
|
||||
v{version}
|
||||
<br />
|
||||
<LilBadge>
|
||||
{releasesBehind === 0
|
||||
? "Up to date"
|
||||
: `${releasesBehind} version${
|
||||
releasesBehind === 1 ? "" : "s"
|
||||
} behind`}
|
||||
</LilBadge>
|
||||
</>
|
||||
}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
const LilBadge = styled(Badge)`
|
||||
margin-left: 0;
|
||||
`;
|
||||
Reference in New Issue
Block a user