Skip to content

Commit

Permalink
Added filter for pre releases
Browse files Browse the repository at this point in the history
  • Loading branch information
breiler committed Jun 3, 2024
1 parent 92049d5 commit f0719ff
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 18 deletions.
21 changes: 21 additions & 0 deletions src/hooks/useLocalStorage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { useState, useEffect } from "react";

function getStorageValue(key, defaultValue) {
// getting stored value
const saved = localStorage.getItem(key);
const initial = JSON.parse(saved ?? defaultValue);
return initial || defaultValue;
}

export const useLocalStorage = (key, defaultValue) => {
const [value, setValue] = useState(() => {
return getStorageValue(key, defaultValue);
});

useEffect(() => {
// storing input name
localStorage.setItem(key, JSON.stringify(value));
}, [key, value]);

return [value, setValue];
};
17 changes: 15 additions & 2 deletions src/panels/firmware/Firmware.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import Choice from "../../components/choice";
import { Markdown } from "../../components/markdown/Markdown";
import PageTitle from "../../components/pagetitle/PageTitle";
import FirmwareBreadCrumbList from "./FirmwareBreadcrumbList";
import { FormCheck } from "react-bootstrap";
import { useLocalStorage } from "../../hooks/useLocalStorage";

type Props = {
onInstall: (
Expand All @@ -31,6 +33,10 @@ const Firmware = ({ onInstall }: Props) => {
const [releaseManifest, setReleaseManifest] = useState<
GithubReleaseManifest | undefined
>();
const [showPrerelease, setShowPrerelease] = useLocalStorage(
"showPrerelease",
false
);

const choice = useMemo(
() => selectedChoices[selectedChoices.length - 1],
Expand All @@ -55,7 +61,7 @@ const Firmware = ({ onInstall }: Props) => {
};

const fetchReleases = () => {
GithubService.getReleases()
GithubService.getReleases(showPrerelease)
.then((releases) => {
setReleases(releases);
})
Expand All @@ -80,7 +86,7 @@ const Firmware = ({ onInstall }: Props) => {
}
}, [releases]);

useEffect(() => fetchReleases(), []);
useEffect(() => fetchReleases(), [showPrerelease]);

return (
<div className="firmware-component">
Expand All @@ -94,6 +100,7 @@ const Firmware = ({ onInstall }: Props) => {
Select which firmware you want to install on your
controller.
</p>

<select
className="form-select form-select-lg mb-3"
onChange={(event) => chooseFirmware(event.target.value)}
Expand All @@ -105,6 +112,12 @@ const Firmware = ({ onInstall }: Props) => {
</option>
))}
</select>
<FormCheck
type="switch"
label="Show pre-releases"
checked={showPrerelease}
onChange={() => setShowPrerelease((value) => !value)}
/>
</>
)}

Expand Down
36 changes: 20 additions & 16 deletions src/services/GitHubService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,26 +57,30 @@ export const GithubService = {
*
* @returns a promise with all available github releases
*/
getReleases: (): Promise<GithubRelease[]> => {
getReleases: (
includePrerelease: boolean = false
): Promise<GithubRelease[]> => {
return fetch("https://api.github.com/repos/bdring/FluidNC/releases")
.then((res) => res.json())
.then((releases) => {
return (
releases
//.filter((release) => !release.draft && !release.prerelease)
.filter(
(release) =>
new Date(release.created_at) >
new Date("2023-06-08T21:23:04Z")
return releases
.filter(
(release) =>
includePrerelease ||
(!release.draft && !release.prerelease)
)
.filter(
(release) =>
new Date(release.created_at) >
new Date("2023-06-08T21:23:04Z")
)
.filter((release) =>
release.assets.filter(
(asset) =>
asset.name.endsWith("-posix.zip").length > 0
)
.filter((release) =>
release.assets.filter(
(asset) =>
asset.name.endsWith("-posix.zip").length > 0
)
)
.sort((release1, release2) => release1.id > release2.id)
);
)
.sort((release1, release2) => release2?.id - release1?.id);
});
},

Expand Down

0 comments on commit f0719ff

Please sign in to comment.