mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2025-12-23 22:18:36 -05:00
71 lines
2.0 KiB
TypeScript
71 lines
2.0 KiB
TypeScript
import { useNavigation } from "@react-navigation/native";
|
|
import {
|
|
Button,
|
|
Divider,
|
|
Heading4
|
|
} from "components/SharedComponents";
|
|
import { View } from "components/styledComponents";
|
|
import { t } from "i18next";
|
|
import React, { useMemo } from "react";
|
|
|
|
const headingClass = "mt-[20px] mb-[11px] text-darkGray";
|
|
const sectionClass = "mx-[15px] mb-[20px]";
|
|
|
|
// TODO: can we get a centralized type/interface for our realm objects, here observation and project
|
|
interface Props {
|
|
observation: {
|
|
project_observations: Array<{
|
|
project: object;
|
|
}>;
|
|
non_traditional_projects: Array<{
|
|
project: object;
|
|
}>;
|
|
};
|
|
}
|
|
|
|
const ProjectSection = ( { observation }: Props ) => {
|
|
const navigation = useNavigation( );
|
|
|
|
const traditionalProjects = observation?.project_observations?.map( p => p.project ) || [];
|
|
const nonTraditionalProjects = observation?.non_traditional_projects?.map( p => p.project ) || [];
|
|
|
|
const traditionalProjectCount = traditionalProjects.length;
|
|
const nonTraditionalProjectCount = nonTraditionalProjects.length;
|
|
|
|
const totalProjectCount = traditionalProjectCount + nonTraditionalProjectCount;
|
|
const allProjects = traditionalProjects.concat( nonTraditionalProjects );
|
|
|
|
const headerOptions = useMemo( ( ) => ( {
|
|
headerTitle: t( "Observation" ),
|
|
headerSubtitle: t( "X-PROJECTS", {
|
|
projectCount: totalProjectCount
|
|
} )
|
|
} ), [totalProjectCount] );
|
|
|
|
if ( totalProjectCount === 0 || typeof totalProjectCount !== "number" ) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<View className={sectionClass}>
|
|
<Heading4 className={headingClass}>
|
|
{t( "PROJECTS-X", {
|
|
projectCount: totalProjectCount
|
|
} )}
|
|
</Heading4>
|
|
<Button
|
|
text={t( "VIEW-PROJECTS" )}
|
|
onPress={( ) => navigation.navigate( "ProjectList", {
|
|
projects: allProjects,
|
|
headerOptions
|
|
} )}
|
|
/>
|
|
</View>
|
|
<Divider />
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default ProjectSection;
|