{"version":3,"file":"js/event-search-bar-bundle-8b652aa3a9f5db413711.js","mappings":"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","sources":["webpack://geosnapshot/./client/bundles/PhotoManager/API/api.tsx","webpack://geosnapshot/./client/bundles/EventSearchBar/index.tsx","webpack://geosnapshot/./client/packs/event-search-bar-bundle.js"],"sourcesContent":["import ajax from \"superagent\";\nimport { Album, EventType } from \"../components\";\n\nexport const fetchEventList = async (page: number, setEvents: Function) => {\n try {\n const response = await fetch(\n `/api/v1/photo-manager/contents?t=root&page=${page}`,\n {\n headers: {\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\"\n },\n cache: \"no-store\"\n }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const data = await response.json();\n const meta = data.meta;\n setEvents(data.entities, meta.nextPage);\n } catch (error) {\n console.error(\"Failed to fetch events:\", error);\n }\n};\n\nexport const fetchAlbumDetails = async (eventId: number) => {\n try {\n const response = await fetch(\n `/api/v1/photo-manager/contents?t=Gallery&id=${eventId}`,\n {\n headers: {\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\"\n },\n cache: \"no-store\"\n }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const data = await response.json();\n return data.entities;\n } catch (error) {\n console.error(`Failed to fetch albums for event ${eventId}:`, error);\n return [];\n }\n};\n\nexport const fetchAlbumPhotos = async (albumId: number, page: number) => {\n try {\n const response = await fetch(\n `/api/v1/photo-manager/contents?t=Album&id=${albumId}&page=${page}`\n );\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const data = await response.json();\n return data;\n } catch (error) {\n console.error(`Failed to fetch photos for album ${albumId}:`, error);\n return [];\n }\n};\n\nexport const fetchEventsByName = async (name: string) => {\n try {\n const response = await fetch(`/api/v1/photo-manager/search?q=${name}`);\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const data = await response.json();\n return data;\n } catch (error) {\n console.error(`Failed to fetch events with the name ${name}:`, error);\n return [];\n }\n};\n\nexport const handleModalSubmit = async (\n albumName: string,\n groupPhotos: boolean,\n selectedEvent: EventType,\n groupPhotosEnabled: boolean,\n setShowModal: Function,\n setAlbumsData: Function,\n albumsData: Album[],\n onCreateSuccess?: (newAlbum: Album) => void\n) => {\n try {\n const response = await ajax.post(\n `/api/v1/albums?event_id=${selectedEvent.id}&name=${albumName}${\n groupPhotosEnabled ? `&group_photos=${groupPhotos}` : \"\"\n }`\n );\n\n if (!response.ok) {\n throw new Error(\"Failed to create album\");\n }\n\n const newAlbum = response.body.album;\n setAlbumsData([...albumsData, newAlbum]);\n if (onCreateSuccess) {\n onCreateSuccess(newAlbum);\n }\n setShowModal(false);\n } catch (error) {\n console.error(\"Error creating album:\", error);\n // @ts-ignore\n toastr.error(\"Unable to create album. Please try again\", null, 1000);\n }\n};\n\nexport const submitAlbumName = (\n e: any,\n albumId: number,\n albumName: string,\n hasInvalidatedValues: Function,\n setEditAlbumNames: Function,\n setEditNameSection: Function,\n setAlbumsData: Function,\n albumsData: Album[]\n) => {\n e.stopPropagation();\n if (hasInvalidatedValues(albumId, true)) {\n return;\n }\n\n fetch(`/api/v1/album/${albumId}/`, {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({ name: albumName })\n })\n .then(response => {\n if (response.ok) {\n return response.json();\n } else if (response.status === 404) {\n console.error(\"Album not found.\");\n throw new Error(\"Album not found.\");\n } else {\n console.error(\"Failed to update album name.\");\n throw new Error(\"Failed to update album name.\");\n }\n })\n .then(updatedAlbum => {\n setEditAlbumNames((prev: any) => {\n const updatedNames = { ...prev };\n delete updatedNames[albumId];\n return updatedNames;\n });\n\n setEditNameSection((prev: any[]) =>\n prev.filter((id: number) => id !== albumId)\n );\n\n const copyOfAlbums = [...albumsData];\n const index = copyOfAlbums.findIndex(i => i.id == albumId);\n copyOfAlbums[index].name = updatedAlbum.album.name;\n setAlbumsData(copyOfAlbums);\n })\n .catch(error => {\n console.error(\"Error while updating album name:\", error);\n });\n};\n\nexport const handleDelete = async (\n setLoading: Function,\n albumId: number,\n onDeleteSuccess: Function,\n onClose: Function\n) => {\n setLoading(true);\n try {\n const response = await ajax.delete(`/api/v1/albums/${albumId}`);\n if (!response.ok) {\n throw new Error(\"Failed to delete album\");\n }\n onDeleteSuccess();\n onClose();\n } catch (error) {\n console.error(\"Error deleting album:\", error);\n // @ts-ignore\n toastr.error(\"Unable to delete album. Please try again\", null, 1000);\n } finally {\n setLoading(false);\n }\n};\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { debounce } from \"lodash\";\nimport { fetchEventsByName } from \"../PhotoManager/API/api\";\n\nconst EventSearchBar = ({\n placeholder,\n isMobile = false\n}: {\n placeholder: string;\n isMobile: boolean;\n}) => {\n const [query, setQuery] = useState(\"\");\n const [searchResults, setSearchResults] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [noResults, setNoResults] = useState(false);\n\n useEffect(() => {\n $(\"#close-search-only-nav\").on(\"click\", function () {\n $(\"#mobile-nav-with-only-search\").hide().removeClass(\"only-search-show\");;\n $(\"#mobile-nav-with-icons\").show();\n });\n\n // Cleanup the event listener when the component unmounts\n return () => {\n $(\"#close-search-only-nav\").off(\"click\");\n };\n }, []);\n\n const fetchDebouncedResults = useCallback(\n debounce(async searchTerm => {\n if (!searchTerm.trim()) {\n setSearchResults([]);\n setNoResults(false);\n setIsLoading(false);\n return;\n }\n setIsLoading(true);\n const events = await fetchEventsByName(searchTerm);\n setSearchResults(events.entities);\n setNoResults(events.entities.length === 0);\n setIsLoading(false);\n }, 700),\n []\n );\n useEffect(() => {\n fetchDebouncedResults(query);\n }, [query, fetchDebouncedResults]);\n\n return (\n
No search results found
\n