diff --git a/.eslintrc.json b/.eslintrc.json index 3bfbc91..aded410 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -46,7 +46,7 @@ "simple-import-sort/exports": "error", "react/jsx-filename-extension": [1, { "extensions": [".tsx", ".ts"] }], "react/jsx-props-no-spreading": [0], - "react/no-unknown-property": ["error", { "ignore": ["jsx"] }], + "react/no-unknown-property": ["warn", { "ignore": ["jsx"] }], "react/react-in-jsx-scope": "off", "react/jsx-indent-props": ["error", 2], "import/extensions": [0], diff --git a/src/components/Header/Index.tsx b/src/components/Header/Index.tsx index 47d5ecc..37d2f9d 100644 --- a/src/components/Header/Index.tsx +++ b/src/components/Header/Index.tsx @@ -1,3 +1,4 @@ +import { DefaultButton } from "@components/Common/Buttons/DefaultButton"; import { useAuth } from "@contexts/AuthContext"; import { AuthServices } from "@services/api"; import Link from "next/link"; @@ -30,23 +31,23 @@ export const Header: React.FC = () => { - Accueil - Projets - About - Moi + Home + Projects + Me
- {isLogged ? ( - - Se déconnecter - - - ) : ( - - Se connecter - - )} + + {isLogged ? ( + + Sign out + + ) : ( + + Sign in + + )} +
@@ -63,6 +64,10 @@ const HeaderContainer = styled.div` padding: 0 50px; `; +const ContainerButtons = styled.div` + display: flex; +`; + const NavigationContainer = styled.div` display: flex; align-items: center; @@ -116,15 +121,8 @@ const LinksContainer = styled.div` `; const StyledSignin = styled(Link)` - background-color: black; - color: white; - padding: 8px 24px; - border-radius: 15px; - font-size: 16px; cursor: pointer; max-width: fit-content; - display: flex; - gap: 12px; `; const RoundedContainer = styled.div` diff --git a/src/screens/Profil.tsx b/src/screens/Profil.tsx index 5c06747..de05548 100644 --- a/src/screens/Profil.tsx +++ b/src/screens/Profil.tsx @@ -4,34 +4,13 @@ import { LinkSeeAll } from "@components/Common/Links/SeeAllLink"; import { TagSkill } from "@components/Common/Tags/SkillsTag"; import { useAuth } from "@contexts/AuthContext"; import { ProjectsServices } from "@services/api"; +import { SkillsServices } from "@services/api"; import { ProjectData } from "@typesDef/project/project"; +import { Skill, SkillData } from "@typesDef/skill/skill"; import styled from "styled-components"; export const ProfileScreen: React.FC = () => { - const tabTags = [ - "React", - "Node", - "TypeScript", - "JavaScript", - "React Native", - "Next.js", - "Figma", - "Adobe XD", - ]; - - // const tabProjects = [ - // { - // title: "Projet 1", - // description: "Description du projet 1 => Projet de test, aucune données", - // image: "https://via.placeholder.com/150", - // }, - // { - // title: "Projet 2", - // description: "Description du projet 2 => Projet de test, aucune données", - // image: "https://via.placeholder.com/150", - // }, - // ]; - + const skillService = new SkillsServices(); const { user } = useAuth(); const projectService = new ProjectsServices(); const [projects, setProjects] = useState({ @@ -39,6 +18,11 @@ export const ProfileScreen: React.FC = () => { error: null, }); + const [skills, setSkill] = useState({ + skills: null, + error: null, + }); + useEffect(() => { const getProjects = async () => { try { @@ -46,6 +30,19 @@ export const ProfileScreen: React.FC = () => { user?.id as string, ); setProjects({ project, error }); + + if (project) { + const fetchSkills = await skillService.getAllSkillUser( + project.map((p) => p.id), + ); + + const fetchSkillsWithContent = fetchSkills.map((skill: Skill) => ({ + ...skill, + content: skill, + })); + + setSkill({ skills: fetchSkillsWithContent, error: null }); + } } catch (error) { console.error("Erreur lors de la récupération des projets :", error); } @@ -79,9 +76,17 @@ export const ProfileScreen: React.FC = () => { - {tabTags.map((tag, index) => ( - - ))} + {skills.skills && skills.skills?.length > 0 ? ( + skills.skills?.map((tag, index) => ( + + )) + ) : ( +

Aucun skills

+ )}
diff --git a/src/screens/Projectspage.tsx b/src/screens/Projectspage.tsx index c991dbc..e663cfe 100644 --- a/src/screens/Projectspage.tsx +++ b/src/screens/Projectspage.tsx @@ -49,9 +49,9 @@ export const ProjectsScreen: React.FC = ({ fetch }) => { return ( {isLogged ? ( - - Ajouter votre projet - + + Add your own project + ) : (

Connectez vous pour ajouter un projet

diff --git a/src/services/api/Skills/index.ts b/src/services/api/Skills/index.ts index e3f923b..ce741ce 100644 --- a/src/services/api/Skills/index.ts +++ b/src/services/api/Skills/index.ts @@ -10,4 +10,32 @@ export class SkillsServices { return data; } + + async getAllSkillUser(projectId: Array) { + const { data, error } = await supabase.rpc("get_projects_by_id", { + projectids: projectId, + }); + if (error) { + console.error(error); + } + + const allSkills = data.reduce((acc: unknown, curr: unknown) => { + return acc.concat(curr.skills); + }, []); + + return allSkills; + } + + async getOneSkill(skillId: number) { + const { data, error } = await supabase + .from("aw_skills") + .select("*") + .eq("id", skillId); + + if (error) { + console.error(error); + } + + return data; + } } diff --git a/src/types/skill/skill.ts b/src/types/skill/skill.ts index a77237a..9467bc2 100644 --- a/src/types/skill/skill.ts +++ b/src/types/skill/skill.ts @@ -6,6 +6,6 @@ export type Skill = { }; export interface SkillData { - project: Array | null; + skills: Array | null; error: PostgrestError | null; }