1. Iremos primeiro criar o serviço de pegar as informações do vendedor

    interface SellerProps {
      sellerId: string;
    }
    
    {/* Outros códigos */}
    
    getSellerProfile: async ({ sellerId }: SellerProps) => {
      const token = await SecureStore.getItemAsync("onebitshop-token");
    
      const res = await api.get(`/users/${sellerId}`, {
        headers: {
          Authorization: `Bearer ${token}`,
        },
      });
    
      return res;
    },
    
  2. Nós sabemos que o usuário pode acessar o perfil do vendedor por 2 locais, que é pelo produto que ele vende e também pelo chat, vamos passar através do produto que ele vende o id do vendedor, vamos então colocar o sellerId passando pela rota

    SellerProfile: {
      sellerId: string;
    };
    
  3. Agora passaremos de para dentro de sellerInfo as informações de produto, para que lá dentro a agente possa pegar o sellerId

    <SellerInfo product={route.params} />
    
  4. Vamos agora passar isso através do sellerInfo, que é um componente dentro de product

    interface Props {
      params: Product;
    }
    
    const SellerInfo = ({ params }: Props) => {
    
  5. Agora que temos o serviço, vamos pegar onde precisamos, que é primeiro na tela de sellerProfile

    const Rate = parseInt(product.seller.rating);
    
    return (
        <Container>
          <SellerContainer>
            <Name>{product.seller.name}</Name>
    
    			<SeeProfile
            onPress={() => {
              navigation.navigate("SellerProfile", {
                sellerId: product.seller._id,
              });
            }}
          >
            Ver Perfil
          </SeeProfile>
    
  6. Agora que recebemos o Id do vendedor, podemos chamar as informações dele, e vamos também comentar as linhas cm erro, para resolvermos jaja

    type Props = NativeStackScreenProps<PropsNavigationStack, "SellerProfile">;
    
    const SellerProfile = ({ route }: Props) => {
      const [loading, setLoading] = useState(true);
      const [userInfo, setUserInfo] = useState<Seller>();
    
  7. Agora iremos criar o handle e chamar ele

    const handleGetInfos = async () => {
      const data = await profileService.getSellerProfile(route.params);
      setUserInfo(data?.data);
      setLoading(false);
    };
    
    useEffect(() => {
      handleGetInfos();
    }, []);
    
  8. Agora que temos isso, nós podemos já colocar aqui as informações desse vendedor nas props

    useEffect(() => {
      handleGetInfos();
    }, []);
    
    if (!userInfo || loading) {
      return <Loader />;
    }
    
    return (
      <>
        <Container contentContainerStyle={{ paddingBottom: 125 }}>
          <DefaultTitle title="PERFIL DO VENDEDOR" fontSize={20} />
    
          <ProfileInfo userInfo={userInfo} />
    
          <UserAds products={userInfo?.products} seller={true} />
        </>
      </>
    );
    
  9. Faremos a mesma coisa de ProfileInfo para o nosso

  10. Agora já temos corretamente aqui as informações do vendedor aparecendo

  11. Ao clicarmos no produto, como somos o dono dele, somos mandados para um local onde vemos a parte de edição, isso é simples de resolver, basta irmos lá no UserAds e colocar uma rota diferente caso o seller seja true

    <Card
      activeOpacity={0.85}
      onPress={() => {
        !seller
          ? navigation.navigate("UpdateProduct", {
              _id: product._id,
              name: product.name,
              price: product.price,
              images: product.images,
              description: product.description,
              category: product.category,
              addressId: product.address._id,
            })
          : navigation.navigate("Product", {
              ...product,
            });
      }}
      key={product._id}
    >
    
  12. Agora a tela de Feedback vai receber via rota o userInfo que temos que passar para o ProfileInfo