diff --git a/src/components/settings/environment-section.tsx b/src/components/settings/environment-section.tsx
index 5f66bc2fb..1a892fd6b 100644
--- a/src/components/settings/environment-section.tsx
+++ b/src/components/settings/environment-section.tsx
@@ -88,8 +88,12 @@ export function EnvironmentSection() {
// ── geocoding search (shared by home + travel pickers) ──────────────────
const [homeQuery, setHomeQuery] = useState("");
const [homeResults, setHomeResults] = useState([]);
+ // Tracks whether a geocode has completed for the current query so a
+ // zero-result search can surface a "no matches" line instead of silence.
+ const [homeSearched, setHomeSearched] = useState(false);
const [travelQuery, setTravelQuery] = useState("");
const [travelResults, setTravelResults] = useState([]);
+ const [travelSearched, setTravelSearched] = useState(false);
const [travelLoc, setTravelLoc] = useState(null);
const [travelStart, setTravelStart] = useState(todayKey());
const [travelEnd, setTravelEnd] = useState(todayKey());
@@ -104,14 +108,20 @@ export function EnvironmentSection() {
const searchHome = useMutation({
mutationKey: queryKeys.environmentGeocode("home"),
mutationFn: () => geocode(homeQuery),
- onSuccess: (data) => setHomeResults(data.results),
+ onSuccess: (data) => {
+ setHomeResults(data.results);
+ setHomeSearched(true);
+ },
onError: () => toast.error(t("settings.sections.environment.searchError")),
});
const searchTravel = useMutation({
mutationKey: queryKeys.environmentGeocode("travel"),
mutationFn: () => geocode(travelQuery),
- onSuccess: (data) => setTravelResults(data.results),
+ onSuccess: (data) => {
+ setTravelResults(data.results);
+ setTravelSearched(true);
+ },
onError: () => toast.error(t("settings.sections.environment.searchError")),
});
@@ -127,6 +137,7 @@ export function EnvironmentSection() {
onSuccess: () => {
setHomeResults([]);
setHomeQuery("");
+ setHomeSearched(false);
invalidate();
toast.success(t("settings.sections.environment.homeSaved"));
},
@@ -147,6 +158,7 @@ export function EnvironmentSection() {
setTravelLoc(null);
setTravelResults([]);
setTravelQuery("");
+ setTravelSearched(false);
invalidate();
toast.success(t("settings.sections.environment.travelAdded"));
},
@@ -234,22 +246,39 @@ export function EnvironmentSection() {
{t("settings.sections.environment.home.none")}
)}
-
+
+
+ {homeSearched &&
+ !searchHome.isPending &&
+ homeResults.length === 0 && (
+
+ {t("settings.sections.environment.noResults")}
+
+ )}
{homeResults.length > 0 && (
{homeResults.map((r) => (
@@ -261,6 +290,7 @@ export function EnvironmentSection() {