[frontend]: Auto-fetch user's selected sources
This commit is contained in:
@ -47,6 +47,8 @@ const menuData = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const customDefaultChecked = ["mainline","suburban","dart","running","not-yet-running","terminated","early","on-time","late","disabled","buses","irish-rail-trains","luas-stops","enabled","green-line","red-line","irish-rail","bus"]
|
||||||
|
|
||||||
const getAllDefaultCheckedIds = (data) => {
|
const getAllDefaultCheckedIds = (data) => {
|
||||||
const ids = [];
|
const ids = [];
|
||||||
const traverse = (items, isTopLevel = true) => {
|
const traverse = (items, isTopLevel = true) => {
|
||||||
@ -135,9 +137,10 @@ const CheckboxItem = ({ item, selectedSources, setSelectedSources, enabledSource
|
|||||||
};
|
};
|
||||||
|
|
||||||
const Sidebar = ({ selectedSources, setSelectedSources, clusteringEnabled, setClusteringEnabled, fetchData, userLocationAvailable, showFavouritesOnly, setShowFavouritesOnly }) => {
|
const Sidebar = ({ selectedSources, setSelectedSources, clusteringEnabled, setClusteringEnabled, fetchData, userLocationAvailable, showFavouritesOnly, setShowFavouritesOnly }) => {
|
||||||
const [isOpen, setIsOpen] = useState(false);
|
const [isOpen, setIsOpen] = useState(true);
|
||||||
const [enabledSources, setEnabledSources] = useState([]); // New state to track enabled sources
|
const [enabledSources, setEnabledSources] = useState([]); // New state to track enabled sources
|
||||||
const [numberInputValue, setNumberInputValue] = useState(""); // State to manage number input value
|
const [numberInputValue, setNumberInputValue] = useState(""); // State to manage number input value
|
||||||
|
const hasMounted = useRef(false);
|
||||||
|
|
||||||
// Load selected sources from cookies or set all as default checked
|
// Load selected sources from cookies or set all as default checked
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -145,8 +148,7 @@ const Sidebar = ({ selectedSources, setSelectedSources, clusteringEnabled, setCl
|
|||||||
if (savedSources) {
|
if (savedSources) {
|
||||||
setSelectedSources(JSON.parse(savedSources));
|
setSelectedSources(JSON.parse(savedSources));
|
||||||
} else {
|
} else {
|
||||||
const allDefaultChecked = getAllDefaultCheckedIds(menuData);
|
setSelectedSources(customDefaultChecked);
|
||||||
setSelectedSources(allDefaultChecked);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load numberInputValue from cookie
|
// Load numberInputValue from cookie
|
||||||
@ -156,6 +158,13 @@ const Sidebar = ({ selectedSources, setSelectedSources, clusteringEnabled, setCl
|
|||||||
}
|
}
|
||||||
}, [setSelectedSources]);
|
}, [setSelectedSources]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!hasMounted.current && enabledSources.length > 0) {
|
||||||
|
fetchData(enabledSources, numberInputValue);
|
||||||
|
hasMounted.current = true;
|
||||||
|
}
|
||||||
|
}, [enabledSources]);
|
||||||
|
|
||||||
const handleSubmit = () => {
|
const handleSubmit = () => {
|
||||||
Cookies.set("selectedSources", JSON.stringify(selectedSources), { expires: 365 });
|
Cookies.set("selectedSources", JSON.stringify(selectedSources), { expires: 365 });
|
||||||
Cookies.set("numberInputValue", numberInputValue, { expires: 365 }); // Save numberInputValue to cookie
|
Cookies.set("numberInputValue", numberInputValue, { expires: 365 }); // Save numberInputValue to cookie
|
||||||
|
Reference in New Issue
Block a user