diff --git a/src/routes/Setlist/SortChanger.tsx b/src/routes/Setlist/SortChanger.tsx index 0356b3f..9b3fb7d 100644 --- a/src/routes/Setlist/SortChanger.tsx +++ b/src/routes/Setlist/SortChanger.tsx @@ -15,7 +15,7 @@ const SortChanger: React.FC = ({ onChange }: Props) => { type="single" defaultValue="title" onValueChange={(value: SortType) => onChange(value)}> - + Track @@ -28,7 +28,7 @@ const SortChanger: React.FC = ({ onChange }: Props) => { Length - + Release diff --git a/src/routes/Setlist/index.tsx b/src/routes/Setlist/index.tsx index 7eb8293..349fc86 100644 --- a/src/routes/Setlist/index.tsx +++ b/src/routes/Setlist/index.tsx @@ -29,7 +29,7 @@ const SetlistPage: React.FC = ({ setlistId }: Props) => { const setlistData = useSetlistRelease(setlistId); const { state, download, payload } = useSetlistData(setlistData); const [ sortType, setSortType ] = useState("title" as SortType); - + const dialogManager = useDialogManager(); function SetlistButton(props: SetlistButtonProps) { @@ -52,33 +52,43 @@ const SetlistPage: React.FC = ({ setlistId }: Props) => { ; } } - + const newestSongRelease = setlistData.songs.reduce((prev, curr) => new Date(prev.releaseDate).getTime() > new Date(curr.releaseDate).getTime() ? prev : curr); - + return <>
setSortType(s)} /> - + - {sortArray(setlistData.songs, { by: "order", computed: { - order: i => { - const value = i[sortType]; - - if (typeof value === "string") { - return value.toLowerCase(); + {sortArray(setlistData.songs, { + by: "order", + order: sortType === "releaseDate" ? "desc" : "asc", + computed: { + order: i => { + const value = i[sortType]; + + // Speical case for release date + if (sortType === "releaseDate" && typeof value === "string") { + return new Date(value).getTime(); + } + + // Make sure strings are in all lowercase for proper sorting + if (typeof value === "string") { + return value.toLowerCase(); + } + + return value; } - - return value; } - }}).map(i => + }).map(i => )} - +