+
+ {showSearchObjectComponent && (
+
+ )}
{totalPages > 1 && (
diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/utilities/fetchMediaItems.ts b/app/pages/PageEnigma/comps/SidePanelTabs/utilities/fetchMediaItems.ts
index 0eae87aabd..e9ac03c8a0 100644
--- a/app/pages/PageEnigma/comps/SidePanelTabs/utilities/fetchMediaItems.ts
+++ b/app/pages/PageEnigma/comps/SidePanelTabs/utilities/fetchMediaItems.ts
@@ -14,6 +14,7 @@ interface fetchMediaItemsInterface {
setState: ({ mediaItems, status }: FetchMediaItemStates) => void;
filterEngineCategories: FilterEngineCategories[];
defaultErrorMessage?: string;
+ searchTerm?: string;
}
export const fetchUserMediaItems = async ({
@@ -83,3 +84,98 @@ export const fetchFeaturedMediaItems = async ({
setState({ status: FetchStatus.ERROR });
return;
};
+
+// Search Results
+export const fetchFeaturedMediaItemsSearchResults = async ({
+ setState,
+ searchTerm,
+ filterEngineCategories,
+ defaultErrorMessage,
+}: {
+ setState: ({ mediaItems, status }: FetchMediaItemStates) => void;
+ searchTerm: string;
+ filterEngineCategories: FilterEngineCategories[];
+ defaultErrorMessage?: string;
+}) => {
+ setState({ status: FetchStatus.IN_PROGRESS });
+
+ if (!searchTerm.trim()) {
+ console.log("Search term is empty after trim");
+ setState({
+ mediaItems: [],
+ status: FetchStatus.SUCCESS,
+ });
+ return;
+ }
+
+ const mediaFilesApi = new MediaFilesApi();
+ const response = await mediaFilesApi.SearchFeaturedMediaFiles({
+ search_term: searchTerm,
+ filter_engine_categories: filterEngineCategories,
+ });
+
+ if (response.success && response.data) {
+ const newSearchObjects = responseMapping(
+ response.data,
+ filterEngineCategories,
+ );
+ setState({
+ mediaItems: newSearchObjects,
+ status: FetchStatus.SUCCESS,
+ });
+ } else {
+ addToast(
+ ToastTypes.ERROR,
+ response.errorMessage ||
+ defaultErrorMessage ||
+ "Failed to fetch search results",
+ );
+ setState({ status: FetchStatus.ERROR });
+ }
+};
+
+export const fetchUserMediaItemsSearchResults = async ({
+ setState,
+ searchTerm,
+ filterEngineCategories,
+ defaultErrorMessage,
+}: {
+ setState: ({ mediaItems, status }: FetchMediaItemStates) => void;
+ searchTerm: string;
+ filterEngineCategories: FilterEngineCategories[];
+ defaultErrorMessage?: string;
+}) => {
+ setState({ status: FetchStatus.IN_PROGRESS });
+ if (!searchTerm.trim()) {
+ setState({
+ mediaItems: [],
+ status: FetchStatus.SUCCESS,
+ });
+ return;
+ }
+
+ const mediaFilesApi = new MediaFilesApi();
+ const response = await mediaFilesApi.SearchUserMediaFiles({
+ search_term: searchTerm,
+ filter_engine_categories: filterEngineCategories,
+ });
+
+ if (response.success && response.data) {
+ const newSearchObjects = responseMapping(
+ response.data,
+ filterEngineCategories,
+ );
+ setState({
+ mediaItems: newSearchObjects,
+ status: FetchStatus.SUCCESS,
+ });
+ } else {
+ addToast(
+ ToastTypes.ERROR,
+ response.errorMessage ||
+ defaultErrorMessage ||
+ "Failed to fetch search results",
+ );
+ setState({ status: FetchStatus.ERROR });
+ }
+};
diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/utilities/misc.ts b/app/pages/PageEnigma/comps/SidePanelTabs/utilities/misc.ts
index 4f8f84992c..4fc8e29434 100644
--- a/app/pages/PageEnigma/comps/SidePanelTabs/utilities/misc.ts
+++ b/app/pages/PageEnigma/comps/SidePanelTabs/utilities/misc.ts
@@ -4,9 +4,7 @@ import { MediaInfo, MediaItem } from "~/pages/PageEnigma/models";
import { BucketConfig } from "~/api/BucketConfig";
export const isAnyStatusFetching = (statuses: FetchStatus[]): boolean => {
- return statuses.some((status) => {
- return status === FetchStatus.READY || status === FetchStatus.IN_PROGRESS;
- });
+ return statuses.some((status) => status === FetchStatus.IN_PROGRESS);
};
export const responseMapping = (