Translate profiles

This commit is contained in:
MartinBraquet
2026-01-02 15:05:27 +02:00
parent 0bb52e72f7
commit 08c9f60010
2 changed files with 49 additions and 46 deletions

View File

@@ -12,12 +12,13 @@ import {useGetter} from 'web/hooks/use-getter'
import {usePersistentInMemoryState} from 'web/hooks/use-persistent-in-memory-state'
import {useUser} from 'web/hooks/use-user'
import {api} from 'web/lib/api'
import {useBookmarkedSearches} from "web/hooks/use-bookmarked-searches";
import {useFilters} from "web/components/filters/use-filters";
import {useBookmarkedSearches} from "web/hooks/use-bookmarked-searches"
import {useFilters} from "web/components/filters/use-filters"
import {useT} from "web/lib/locale";
export function ProfilesHome() {
const user = useUser();
const you = useProfile();
const user = useUser()
const you = useProfile()
const {
filters,
@@ -26,37 +27,38 @@ export function ProfilesHome() {
setYourFilters,
isYourFilters,
locationFilterProps,
} = useFilters(you ?? undefined);
} = useFilters(you ?? undefined)
const [profiles, setProfiles] = usePersistentInMemoryState<Profile[] | undefined>(undefined, 'profiles');
const [profileCount, setProfileCount] = usePersistentInMemoryState<number | undefined>(undefined, 'profile-count');
const [profiles, setProfiles] = usePersistentInMemoryState<Profile[] | undefined>(undefined, 'profiles')
const [profileCount, setProfileCount] = usePersistentInMemoryState<number | undefined>(undefined, 'profile-count')
const {bookmarkedSearches, refreshBookmarkedSearches} = useBookmarkedSearches(user?.id)
const [isLoadingMore, setIsLoadingMore] = useState(false);
const [isReloading, setIsReloading] = useState(false);
const [isLoadingMore, setIsLoadingMore] = useState(false)
const [isReloading, setIsReloading] = useState(false)
const t = useT()
// const [debouncedAgeRange, setRawAgeRange] = useState({
// min: filters.pref_age_min ?? PREF_AGE_MIN,
// max: filters.pref_age_max ?? PREF_AGE_MAX,
// });
// })
//
// const debouncedSetAge = useCallback(debounce((state) => setRawAgeRange(state), 50), []);
// const debouncedSetAge = useCallback(debounce((state) => setRawAgeRange(state), 50), [])
//
// useEffect(() => {
// if (!user) return;
// debouncedSetAge({min: filters.pref_age_min ?? PREF_AGE_MIN, max: filters.pref_age_max ?? PREF_AGE_MAX});
// }, [filters.pref_age_min, filters.pref_age_max]);
// if (!user) return
// debouncedSetAge({min: filters.pref_age_min ?? PREF_AGE_MIN, max: filters.pref_age_max ?? PREF_AGE_MAX})
// }, [filters.pref_age_min, filters.pref_age_max])
const id = useRef(0);
const id = useRef(0)
useEffect(() => {
if (!user) return;
setIsReloading(true);
const current = ++id.current;
if (!user) return
setIsReloading(true)
const current = ++id.current
const args = removeNullOrUndefinedProps({
limit: 20,
compatibleWithUserId: user?.id,
...filters
});
console.debug('Refreshing profiles, filters:', args);
})
console.debug('Refreshing profiles, filters:', args)
api('get-profiles', args as any)
.then(({profiles, count}) => {
if (current === id.current) {
@@ -65,43 +67,43 @@ export function ProfilesHome() {
}
})
.finally(() => {
if (current === id.current) setIsReloading(false);
});
}, [filters]);
if (current === id.current) setIsReloading(false)
})
}, [filters])
const {data: starredUsers, refresh: refreshStars} = useGetter('star', user?.id, getStars)
const starredUserIds = starredUsers?.map((u) => u.id)
const compatibleProfiles = useCompatibleProfiles(user?.id)
// const displayProfiles = profiles && orderProfiles(profiles, starredUserIds);
// const displayProfiles = profiles && orderProfiles(profiles, starredUserIds)
const displayProfiles = profiles
const loadMore = useCallback(async () => {
if (!profiles || isLoadingMore) return false;
if (!profiles || isLoadingMore) return false
try {
setIsLoadingMore(true);
const lastProfile = profiles[profiles.length - 1];
setIsLoadingMore(true)
const lastProfile = profiles[profiles.length - 1]
const result = await api('get-profiles', removeNullOrUndefinedProps({
limit: 20,
compatibleWithUserId: user?.id,
after: lastProfile?.id.toString(),
...filters
}) as any);
if (result.profiles.length === 0) return false;
setProfiles((prev) => (prev ? [...prev, ...result.profiles] : result.profiles));
return true;
}) as any)
if (result.profiles.length === 0) return false
setProfiles((prev) => (prev ? [...prev, ...result.profiles] : result.profiles))
return true
} catch (err) {
console.error('Failed to load more profiles', err);
return false;
console.error('Failed to load more profiles', err)
return false
} finally {
setIsLoadingMore(false);
setIsLoadingMore(false)
}
}, [profiles, filters, isLoadingMore, setProfiles]);
}, [profiles, filters, isLoadingMore, setProfiles])
return (
<>
{/*{user && !profile && <Button className="mb-4 lg:hidden" onClick={() => Router.push('signup')}>Create a profile</Button>}*/}
<Title className="!mb-2 text-3xl">People</Title>
<Title className="!mb-2 text-3xl">{t("profiles.title", "People")}</Title>
<Search
youProfile={you}
starredUsers={starredUsers ?? []}
@@ -130,5 +132,5 @@ export function ProfilesHome() {
/>
)}
</>
);
)
}

View File

@@ -410,18 +410,18 @@
"messages.seo.description": "Vos messages",
"messages.input_placeholder": "Envoyer un message",
"messages.menu.see_members": "Voir les membres",
"messages.menu.mute_1_day": "Couper le son pendant 1 jour",
"messages.menu.mute_forever": "Couper le son définitivement",
"messages.menu.mute_1_day": "Couper notifs pendant 1 jour",
"messages.menu.mute_forever": "Couper notifs définitivement",
"messages.menu.leave_chat": "Quitter la conversation",
"messages.action.edit": "Modifier",
"messages.action.delete": "Supprimer",
"messages.action.add_reaction": "Ajouter une réaction",
"messages.toast.muting_1_day.loading": "Couper le son pour 1 jour...",
"messages.toast.muting_1_day.success": "Son coupé pour 1 jour",
"messages.toast.muting_1_day.error": "Échec de la coupure du son",
"messages.toast.muting_forever.loading": "Couper le son définitivement...",
"messages.toast.muting_forever.success": "Son coupé définitivement",
"messages.toast.muting_forever.error": "Échec de la coupure du son",
"messages.toast.muting_1_day.loading": "Couper notifs pour 1 jour...",
"messages.toast.muting_1_day.success": "Notifs coupées pour 1 jour",
"messages.toast.muting_1_day.error": "Échec de la coupure des notifs",
"messages.toast.muting_forever.loading": "Couper notifs définitivement...",
"messages.toast.muting_forever.success": "Notifs coupées définitivement",
"messages.toast.muting_forever.error": "Échec de la coupure des notifs",
"messages.empty": "Vous n'avez pas encore de messages.",
"messages.delete_confirm": "Êtes-vous sûr de vouloir supprimer ce message ?",
"messages.deleted": "Message supprimé",
@@ -434,5 +434,6 @@
"messages.toast.edit_failed": "Échec de la modification du message.",
"messages.toast.send_failed": "Échec de l'envoi du message. Veuillez réessayer plus tard ou contacter le support si le problème persiste.",
"aboutsettings.copied": "Copié !",
"aboutsettings.copy_info": "Copier les infos"
"aboutsettings.copy_info": "Copier les infos",
"profiles.title": "Personnes"
}