diff --git a/src/components/feed/FeedContent.jsx b/src/components/feed/FeedContent.jsx
index 67e0a9d..ffdecb1 100644
--- a/src/components/feed/FeedContent.jsx
+++ b/src/components/feed/FeedContent.jsx
@@ -7,6 +7,7 @@ export default function FeedContent({
error,
filteredAds,
activeNav,
+ searchPrompt,
liked,
likeCountAdj,
onLike,
@@ -38,6 +39,16 @@ export default function FeedContent({
);
}
+ if (searchPrompt) {
+ return (
+
+
π
+
{t('feed.searchPromptTitle')}
+
{t('feed.searchPromptSub')}
+
+ );
+ }
+
if (!filteredAds.length) {
const emptyMsg = activeNav === "myads"
? { title: t('feed.emptyMyAdsTitle'), sub: t('feed.emptyMyAdsSub') }
diff --git a/src/hooks/useFeedPosts.jsx b/src/hooks/useFeedPosts.jsx
index 1768558..9761f1d 100644
--- a/src/hooks/useFeedPosts.jsx
+++ b/src/hooks/useFeedPosts.jsx
@@ -8,7 +8,7 @@ const PAGE_SIZE = 20;
*/
export function useFeedPosts() {
const [ads, setAds] = useState([]);
- const [loading, setLoading] = useState(true);
+ const [loading, setLoading] = useState(false);
const [error, setError] = useState("");
const [page, setPage] = useState(0);
const [hasMore, setHasMore] = useState(true);
diff --git a/src/locales/en.json b/src/locales/en.json
index a3adebc..26d833d 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -127,6 +127,8 @@
"emptyMyAdsSub": "Create your first one β click the button above",
"emptyAllTitle": "No ads yet",
"emptyAllSub": "Be the first β post an ad
about a loss or find",
+ "searchPromptTitle": "Enter search parameters",
+ "searchPromptSub": "Type a name or select a city to find an ad",
"createPost": "Create ad",
"login": "Log in",
"searchPlaceholder": "Search by title or description...",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index 290c3b5..0d1b231 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -128,6 +128,8 @@
"emptyMyAdsSub": "Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ β Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΡΡΠ΅",
"emptyAllTitle": "ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠΎΠΊΠ° Π½Π΅Ρ",
"emptyAllSub": "ΠΡΠ΄ΡΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ β ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅
ΠΎ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΊΠ΅",
+ "searchPromptTitle": "ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°",
+ "searchPromptSub": "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π³ΠΎΡΠΎΠ΄, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅",
"createPost": "Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅",
"login": "ΠΠΎΠΉΡΠΈ",
"searchPlaceholder": "ΠΠΎΠΈΡΠΊ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ...",
diff --git a/src/pages/MainFeed.jsx b/src/pages/MainFeed.jsx
index 339ad08..347624d 100644
--- a/src/pages/MainFeed.jsx
+++ b/src/pages/MainFeed.jsx
@@ -51,6 +51,8 @@ export default function MainFeed() {
const isSearchView = new URLSearchParams(location.search).get("view") === "search";
const hasActiveFilters = searchQuery.trim().length > 0 || selectedCities.length > 0;
+ const hasSearchParams = searchQuery.trim().length > 0 || selectedCities.length > 0;
+ const searchPrompt = isSearchView && !hasSearchParams;
const feed = useFeedPosts();
const myPosts = useMyPosts(user?.id);
@@ -113,15 +115,24 @@ export default function MainFeed() {
}
}, [location.state]); // eslint-disable-line react-hooks/exhaustive-deps
- // ΠΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π»Π΅Π½ΡΡ (Π΄Π΅Π±Π°ΡΠ½Ρ ΠΏΠΎΠΈΡΠΊΠ°), ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ ΡΠΈΠ»ΡΡΡΠ° ΠΏΠΎ Π³ΠΎΡΠΎΠ΄Π°ΠΌ
+ // ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»Π΅Π½ΡΡ (Π½Π΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠΈΡΠΊΠ°)
useEffect(() => {
- if (selectedCities.length > 0) return;
+ if (!isSearchView && selectedCities.length === 0 && !searchQuery.trim()) {
+ feed.loadFeed(0, "", false);
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [isSearchView]);
+
+ // ΠΠ΅Π±Π°ΡΠ½Ρ ΠΏΠΎΠΈΡΠΊΠ°: ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π² search view ΠΈ Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
+ useEffect(() => {
+ if (!isSearchView) return;
+ if (!hasSearchParams) return;
const timer = setTimeout(() => {
feed.loadFeed(0, searchQuery, false);
}, 400);
return () => clearTimeout(timer);
// eslint-disable-next-line react-hooks/exhaustive-deps
- }, [searchQuery, selectedCities]);
+ }, [searchQuery, selectedCities, isSearchView]);
// ΠΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π½Π° Β«ΠΠΎΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΒ» β ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°Π΅ΠΌ Ρ Π±ΡΠΊΠ΅Π½Π΄Π°
useEffect(() => {
@@ -239,6 +250,7 @@ export default function MainFeed() {
error={listError}
filteredAds={filteredAds}
activeNav={activeNav}
+ searchPrompt={searchPrompt}
liked={liked}
likeCountAdj={likeCountAdj}
onLike={actions.toggleLike}