mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-04-16 12:38:19 -04:00
Translate profiles
This commit is contained in:
@@ -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() {
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user