| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- import {
- ALL_CATEGORIES,
- COMMA,
- SPREAD,
- } from "../../constants/marketplaceHeaderTitle";
- import {
- initialSize,
- KEY_CATEGORY,
- KEY_LOCATION,
- KEY_NAME,
- KEY_PAGE,
- KEY_SEARCH,
- KEY_SIZE,
- KEY_SORTBY,
- KEY_SORT_DATE,
- KEY_SORT_POPULAR,
- KEY_SUBCATEGORY,
- VALUE_SORTBY_NEW,
- VALUE_SORTBY_OLD,
- VALUE_SORTBY_POPULAR,
- } from "../../constants/queryStringConstants";
- import { sortEnum } from "../../enums/sortEnum";
- // import { ReactComponent as CategoryHeader } from "../../assets/images/svg/category-header.svg"
- // import qs from "query-string";
-
- export const convertQueryStringForFrontend = (queryURL) => {
- const queryObject = new URLSearchParams(queryURL);
- const queryObjectToReturn = new URLSearchParams(queryURL);
- if (queryObject.has(KEY_SORT_DATE)) {
- queryObjectToReturn.delete(KEY_SORT_DATE);
- if (queryObject.get(KEY_SORT_DATE) === "true") {
- queryObjectToReturn.append(KEY_SORTBY, sortEnum.NEW.queryString);
- } else {
- queryObjectToReturn.append(KEY_SORTBY, sortEnum.OLD.queryString);
- }
- }
- if (queryObject.has(KEY_NAME)) {
- queryObjectToReturn.delete(KEY_NAME);
- queryObjectToReturn.append(KEY_SEARCH, queryObject.get(KEY_NAME));
- }
- if (queryObject.has(KEY_SORT_POPULAR)) {
- queryObjectToReturn.delete(KEY_SORT_POPULAR);
- queryObjectToReturn.append(KEY_SORTBY, sortEnum.POPULAR.queryString);
- }
- if (queryObject.has(KEY_SIZE)) {
- queryObjectToReturn.delete(KEY_SIZE);
- }
- if (queryObject.has(KEY_PAGE)) {
- if (queryObject.get(KEY_PAGE) === "1") {
- queryObjectToReturn.delete(KEY_PAGE);
- queryObjectToReturn.delete(KEY_SIZE);
- return queryObjectToReturn.toString();
- } else {
- queryObjectToReturn.delete(KEY_PAGE);
- return (
- queryObjectToReturn.toString() + "&page=" + queryObject.get(KEY_PAGE)
- );
- }
- }
- return queryObjectToReturn.toString();
- };
-
- export const combineQueryStrings = (firstQuery, secondQuery) => {
- const firstQueryObject = new URLSearchParams(firstQuery);
- const secondQueryObject = new URLSearchParams(secondQuery);
- const thirdQueryObject = new URLSearchParams(secondQueryObject.toString());
- let arrayOfProperties = Object.getOwnPropertyNames(
- Object.fromEntries(firstQueryObject)
- );
- arrayOfProperties.forEach((property) => {
- if (!secondQueryObject.has(property)) {
- // console.log("ovde je doslo query: ", property);
- // thirdQueryObject.append(property, secondQueryObject.get(property));
- thirdQueryObject.append(property, firstQueryObject.get(property));
- } else {
- // console.log("ovde ispod: ", property);
- }
- });
-
- return thirdQueryObject.toString();
- };
-
- export const convertQueryStringForBackend = (queryURL) => {
- const queryObject = new URLSearchParams(queryURL);
- const newQueryObject = new URLSearchParams();
- if (queryObject.has(KEY_CATEGORY)) {
- newQueryObject.append(
- KEY_CATEGORY,
- queryObject.getAll(KEY_CATEGORY)[
- queryObject.getAll(KEY_CATEGORY).length - 1
- ]
- );
- }
- if (queryObject.has(KEY_SUBCATEGORY)) {
- newQueryObject.append(
- KEY_SUBCATEGORY,
- queryObject.getAll(KEY_SUBCATEGORY)[
- queryObject.getAll(KEY_SUBCATEGORY).length - 1
- ]
- );
- }
- if (queryObject.has(KEY_SEARCH) && queryObject.get(KEY_SEARCH)?.length > 0) {
- newQueryObject.append(
- KEY_NAME,
- queryObject.getAll(KEY_SEARCH)[queryObject.getAll(KEY_SEARCH).length - 1]
- );
- }
- if (queryObject.has(KEY_NAME)) {
- newQueryObject.append(
- KEY_NAME,
- queryObject.getAll(KEY_NAME)[queryObject.getAll(KEY_NAME).length - 1]
- );
- }
- if (queryObject.has(KEY_LOCATION)) {
- const arrayOfLocations = queryObject.getAll(KEY_LOCATION);
- arrayOfLocations.forEach((item) => {
- newQueryObject.append(KEY_LOCATION, item);
- });
- }
- if (queryObject.has(KEY_SORTBY)) {
- newQueryObject.delete(KEY_SORTBY);
- if (queryObject.get(KEY_SORTBY) === VALUE_SORTBY_NEW) {
- newQueryObject.append(KEY_SORT_DATE, "true");
- }
- if (queryObject.get(KEY_SORTBY) === VALUE_SORTBY_OLD) {
- newQueryObject.append(KEY_SORT_DATE, "false");
- }
- if (queryObject.get(KEY_SORTBY) === VALUE_SORTBY_POPULAR) {
- newQueryObject.append(KEY_SORT_POPULAR, "true");
- }
- }
- if (queryObject.has(KEY_SORT_DATE)) {
- newQueryObject.append(KEY_SORT_DATE, queryObject.get(KEY_SORT_DATE));
- }
- if (queryObject.has(KEY_SORT_POPULAR)) {
- newQueryObject.append(KEY_SORT_POPULAR, queryObject.get(KEY_SORT_POPULAR));
- }
- newQueryObject.append(KEY_SIZE, initialSize);
- if (!queryObject.has(KEY_PAGE)) {
- newQueryObject.append(KEY_PAGE, "1");
- } else {
- newQueryObject.append(KEY_PAGE, queryObject.get(KEY_PAGE));
- }
- return newQueryObject.toString();
- };
-
- export const getQueryObjectHelper = (queryString) => {
- let newObject = {};
- const queryObject = new URLSearchParams(queryString);
- if (queryObject.has(KEY_CATEGORY)) {
- newObject[KEY_CATEGORY] = queryObject.get(KEY_CATEGORY);
- }
- if (queryObject.has(KEY_SUBCATEGORY)) {
- newObject[KEY_SUBCATEGORY] = queryObject.get(KEY_SUBCATEGORY);
- }
- if (queryObject.has(KEY_SEARCH)) {
- newObject[KEY_SEARCH] = queryObject.get(KEY_SEARCH);
- }
- if (queryObject.has(KEY_NAME)) {
- newObject[KEY_NAME] = queryObject.get(KEY_NAME);
- }
- if (queryObject.has(KEY_LOCATION)) {
- const arrayOfLocations = queryObject.getAll(KEY_LOCATION);
- newObject[KEY_LOCATION] = [];
- arrayOfLocations.forEach((item) => {
- newObject[KEY_LOCATION].push(item);
- });
- }
- if (queryObject.has(KEY_SORTBY)) {
- newObject[KEY_SORTBY] = queryObject.get(KEY_SORTBY);
- }
- if (queryObject.has(KEY_SORT_DATE)) {
- newObject[KEY_SORT_DATE] = queryObject.get(KEY_SORT_DATE);
- }
- if (queryObject.has(KEY_SORT_POPULAR)) {
- newObject[KEY_SORT_POPULAR] = queryObject.get(KEY_SORT_POPULAR);
- }
- if (queryObject.has(KEY_PAGE)) {
- newObject[KEY_PAGE] = queryObject.get(KEY_PAGE);
- }
- if (queryObject.has(KEY_SIZE)) {
- newObject[KEY_SIZE] = queryObject.get(KEY_SIZE);
- }
- return newObject;
- };
-
- export const makeHeaderStringHelper = (filters) => {
- let headerStringLocal = ALL_CATEGORIES;
- // Adding category to header string
- if (filters.category.selectedCategory?.name) {
- headerStringLocal = filters.category.selectedCategory?.name;
- // Adding subcategories to header string
- if (filters.subcategory.selectedSubcategory?.name) {
- headerStringLocal += `${SPREAD}${filters.subcategory.selectedSubcategory.name}`;
- }
- }
- // Adding locations to header string
- if (
- filters.locations.selectedLocations &&
- filters.locations.selectedLocations?.length > 0
- ) {
- headerStringLocal += SPREAD;
-
- filters.locations.selectedLocations.forEach((location, index) => {
- // Checking if item is last
- if (index + 1 === filters.locations.selectedLocations.length) {
- headerStringLocal += location.city;
- } else {
- headerStringLocal += location.city + COMMA;
- }
- });
- }
- return headerStringLocal;
- };
- export const makeQueryStringHelper = (filters, paging, search, sorting) => {
- const newQueryString = new URLSearchParams();
- if (filters.category.selectedCategoryLocally?.name) {
- newQueryString.append(
- KEY_CATEGORY,
- filters.category.selectedCategoryLocally.name
- );
- }
- if (filters.subcategory.selectedSubcategoryLocally?.name) {
- newQueryString.append(
- KEY_SUBCATEGORY,
- filters.subcategory.selectedSubcategoryLocally.name
- );
- }
- if (filters.locations.selectedLocationsLocally?.length > 0) {
- filters.locations.selectedLocationsLocally.forEach((location) =>
- newQueryString.append(KEY_LOCATION, location?.city)
- );
- }
- if (sorting.selectedSortOption?.value) {
- if (sorting.selectedSortOption?.value === sortEnum.NEW.value) {
- newQueryString.append(KEY_SORTBY, VALUE_SORTBY_NEW);
- }
- if (sorting.selectedSortOption?.value === sortEnum.OLD.value) {
- newQueryString.append(KEY_SORTBY, VALUE_SORTBY_OLD);
- }
- if (sorting.selectedSortOption?.value === sortEnum.POPULAR.value) {
- newQueryString.append(KEY_SORTBY, VALUE_SORTBY_POPULAR);
- }
- }
- if (paging.currentPage !== 1) {
- newQueryString.append(KEY_PAGE, paging.currentPage);
- }
- newQueryString.append(KEY_SEARCH, search.searchString ?? "");
- return newQueryString;
- };
- export const changePageQueryStringHelper = (queryString, newPage) => {
- const newQueryString = new URLSearchParams(queryString);
- if (newQueryString.has(KEY_PAGE)) {
- newQueryString.delete(KEY_PAGE);
- }
- newQueryString.set(KEY_PAGE, newPage);
- return newQueryString.toString();
- };
- export const changePageQueryObjectHelper = (queryObject, newPage) => {
- if (queryObject.has(KEY_PAGE)) {
- queryObject.delete(KEY_PAGE);
- }
- queryObject.set(KEY_PAGE, newPage);
- return queryObject;
- };
- export const removePageAndSizeHelper = (queryString) => {
- const newQueryString = new URLSearchParams(queryString);
- if (newQueryString.has(KEY_PAGE)) newQueryString.delete(KEY_PAGE);
- if (newQueryString.has(KEY_SIZE)) newQueryString.delete(KEY_SIZE);
- return newQueryString.toString();
- }
|