Files
groovee/src/helpers/navigationHelpers.js
nospeedlimitindonesia 1bef19f624 working on modal
2024-07-29 23:55:39 +00:00

98 lines
2.0 KiB
JavaScript

import { useNavigate } from "react-router-dom";
/**
* Custom hook to provide navigation functions.
* @param {string} shopId - The shop ID for constructing URLs.
* @returns {Object} - Navigation functions.
*/
export const useNavigationHelpers = (shopId, tableId) => {
const navigate = useNavigate();
const goToLogin = () => {
// Construct the base URL
let url = "/login";
// Append query parameters conditionally
const queryParams = new URLSearchParams();
if (shopId) queryParams.append("next", shopId);
if (tableId) queryParams.append("table", tableId);
// Set the URL with query parameters
if (queryParams.toString()) {
url += `?${queryParams.toString()}`;
}
// Perform the navigation
navigate(url);
};
const goToShop = () => {
// Construct the base URL for the shop
let url = `/${shopId}`;
// Append the tableId if it's provided
if (tableId) {
url += `/${tableId}`;
}
// Perform the navigation
navigate(url);
};
const goToSearch = () => {
let url = `/${shopId}`;
if (tableId) {
url += `/${tableId}`;
}
url += "/search";
navigate(url);
};
const goToCart = () => {
let url = `/${shopId}`;
if (tableId) {
url += `/${tableId}`;
}
url += "/cart";
navigate(url);
};
const goToInvoice = (orderType, tableNumber, email) => {
let url = `/${shopId}`;
if (tableId) {
url += `/${tableId}`;
}
url += `/invoice?orderType=${orderType}`;
if (tableNumber) {
url += `&tableNumber=${tableNumber}`;
}
if (email) {
url += `&email=${email}`;
}
navigate(url);
};
const goToGuestSideLogin = () => {
let url = `/${shopId}`;
if (tableId) {
url += `/${tableId}`;
}
url += "/guest-side-login";
navigate(url);
};
const goToAdminCafes = () => {
navigate(`/`);
};
return {
goToLogin,
goToShop,
goToSearch,
goToCart,
goToInvoice,
goToGuestSideLogin,
goToAdminCafes,
};
};