From b6cc2ae595fa470c172d68fe3f16f4f3459d7be9 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Wed, 30 Nov 2022 18:06:03 -0300 Subject: [PATCH 01/19] fazendo testes com jtest --- front-end/src/App.js | 3 ++ .../src/pages/Curso/Componentes/Modulos.js | 2 +- front-end/src/pages/Curso/Materiais.js | 45 ++++-------------- front-end/src/pages/Curso/Materiais.test.js | 13 +++++ front-end/src/pages/Curso/ObterDados.js | 47 +++++++++++++++++++ front-end/src/services/firebase.js | 6 ++- 6 files changed, 76 insertions(+), 40 deletions(-) create mode 100644 front-end/src/pages/Curso/Materiais.test.js create mode 100644 front-end/src/pages/Curso/ObterDados.js diff --git a/front-end/src/App.js b/front-end/src/App.js index 8cb9333..3475f08 100644 --- a/front-end/src/App.js +++ b/front-end/src/App.js @@ -10,6 +10,8 @@ import Duvidas from "./pages/Duvidas/Duvidas"; import Cadastro from "./pages/Cadastrar/Cadastrar"; import Perfil from "./pages/Perfil/Perfil"; import PaginaDaDuvida from "./pages/Duvidas/Componentes/PaginaDaDuvida"; +import { ObterDados } from "./pages/Curso/ObterDados"; +import { useAuth } from "./context/AuthContext"; function App() { return ( @@ -19,6 +21,7 @@ function App() { <Route path="/" element={<Login />} /> <Route exact path="/duvidas" element={<RotaPrivada> <Duvidas /> </RotaPrivada>} /> <Route exact path="/curso/materiais" element={<RotaPrivada> <Materiais /> </RotaPrivada>} /> + <Route exact path="/curso/dados" element={<RotaPrivada> <ObterDados /> </RotaPrivada>} /> <Route exact path="/perfil" element={<RotaPrivada> <Perfil /> </RotaPrivada>} /> <Route exact path="/curso" element={<RotaPrivada> <Curso /> </RotaPrivada>} /> <Route exact path="/home" element={<RotaPrivada> <Home /> </RotaPrivada>} /> diff --git a/front-end/src/pages/Curso/Componentes/Modulos.js b/front-end/src/pages/Curso/Componentes/Modulos.js index b2591b3..ebc51ca 100644 --- a/front-end/src/pages/Curso/Componentes/Modulos.js +++ b/front-end/src/pages/Curso/Componentes/Modulos.js @@ -11,7 +11,7 @@ function VerModulos({modulo, concluido}){ </div> <div className="modulo-button"> - <Button component={Link} to="/curso/materiais" state={{ numero: modulo, concluido: concluido }} variant="contained">Ver Materiais</Button> + <Button component={Link} to="/curso/dados" state={{ numero: modulo, concluido: concluido }} variant="contained">Ver Materiais</Button> </div> </div> ) diff --git a/front-end/src/pages/Curso/Materiais.js b/front-end/src/pages/Curso/Materiais.js index b06ede2..c22a7aa 100644 --- a/front-end/src/pages/Curso/Materiais.js +++ b/front-end/src/pages/Curso/Materiais.js @@ -1,5 +1,5 @@ import React from "react"; -import {db, auth, storage, ref, uploadBytesResumable, getDownloadURL } from '../../services/firebase'; +//import {db, auth, storage, ref, uploadBytesResumable, getDownloadURL } from '../../services/firebase'; import './Materiais.css' import {useState, useEffect} from 'react'; import Button from '@mui/material/Button'; @@ -12,20 +12,22 @@ import Typography from '@mui/material/Typography'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import uploadFile from "../../util/uploadFile.js"; import { async } from "@firebase/util"; +import { ObterDados } from "./ObterDados"; -function Materiais() { +function Materiais({aulas, numero, concluido}) { const [arquivo, setArquivo] = useState(null); - const [aulas, setAulas] = useState([]) - async function EnviarAtividade(id_aula, numero_aula){ + /*async function EnviarAtividade(id_aula, numero_aula){ var nomeColecao = "Modulo"+numero.toString(); var tipo_arquivo = arquivo.name.split(".")[1]; var caminho_arquivo = `atividades/${nomeColecao}/aula${numero_aula}/${uid}.${tipo_arquivo}` const urlFile = await uploadFile(arquivo, caminho_arquivo, storage, ref, uploadBytesResumable, getDownloadURL, auth); db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao) .collection("aulas").doc(id_aula).update({caminhoTarefaEnviada: urlFile}) - } + }*/ + + async function EnviarAtividade(id_aula, numero_aula){} async function onFileChange(e) { const arquivo = e.target.files[0]; @@ -39,40 +41,9 @@ function Materiais() { setExpanded(isExpanded ? panel : false); }; - const uid = auth.currentUser.uid; + //const uid = auth.currentUser.uid; const dataAtual = new Date().getTime() / 1000; - - - const location = useLocation() - const { numero, concluido } = location.state - - useEffect(()=>{ - let tudoCorrigido = true; - var nomeColecao = "Modulo"+numero.toString(); - db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao).collection("aulas").onSnapshot((docs)=>{ - let temp = []; - docs.forEach(doc => { - let foraDoPrazo = false; - let id_aula = doc.id; - let dataObjeto = new Date(doc.data().prazo.seconds*1000) - let dataString = `${dataObjeto.getDate()}/${dataObjeto.getMonth()+1}/${dataObjeto.getFullYear()}` - if(dataAtual>doc.data().prazo.seconds){ - foraDoPrazo = true - } - let doc_temp = {...doc.data(), foraDoPrazo: foraDoPrazo, id_aula: id_aula, dataString: dataString} - temp.push(doc_temp) - if(!doc.data().atividadeCorrigida){ - tudoCorrigido = false; - } - }); - setAulas(temp) - if(tudoCorrigido && !concluido){ - db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao).update({concluido: true}) - } - }) - },[uid]) - return ( <div className="App"> diff --git a/front-end/src/pages/Curso/Materiais.test.js b/front-end/src/pages/Curso/Materiais.test.js new file mode 100644 index 0000000..6624da4 --- /dev/null +++ b/front-end/src/pages/Curso/Materiais.test.js @@ -0,0 +1,13 @@ +import Materiais from './Materiais.js'; +import TestRenderer from 'react-test-renderer'; // ES6 +import {shallow} from 'enzyme'; + +it("Aula fora do prazo", () => { + const aulasMock = [{prazo: new Date("2022-12-25").getTime() / 1000, num: 1, caminhosMateriais: ["link1","link2"]}] + //const wrapper = shallow(<Materiais aulas={aulasMock} />); + //expect(wrapper.getElementById("teste")).toBeDisable(); + const testRenderer = TestRenderer.create(<Materiais aulas={aulasMock} numero={2} concluido={true} />); + const testInstance = testRenderer.root; + expect(testInstance.findByType('button').props.disabled).toBe(true); + +}); \ No newline at end of file diff --git a/front-end/src/pages/Curso/ObterDados.js b/front-end/src/pages/Curso/ObterDados.js new file mode 100644 index 0000000..79d86b9 --- /dev/null +++ b/front-end/src/pages/Curso/ObterDados.js @@ -0,0 +1,47 @@ +import {db, auth} from '../../services/firebase'; +import {useState, useEffect} from 'react'; +import Materiais from './Materiais'; +import { useLocation } from 'react-router-dom' + +export function ObterDados() +{ + +const location = useLocation() +const { numero, concluido } = location.state +const dataAtual = new Date().getTime() / 1000; + +console.log("Função chamada") + +const [aulas, setAulas] = useState([]) +const uid = auth.currentUser.uid; + + +useEffect(()=>{ + let tudoCorrigido = true; + var nomeColecao = "Modulo"+numero.toString(); + db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao).collection("aulas").onSnapshot((docs)=>{ + let temp = []; + docs.forEach(doc => { + let foraDoPrazo = false; + let id_aula = doc.id; + let dataObjeto = new Date(doc.data().prazo.seconds*1000) + let dataString = `${dataObjeto.getDate()}/${dataObjeto.getMonth()+1}/${dataObjeto.getFullYear()}` + if(dataAtual>doc.data().prazo.seconds){ + foraDoPrazo = true + } + let doc_temp = {...doc.data(), foraDoPrazo: foraDoPrazo, id_aula: id_aula, dataString: dataString} + temp.push(doc_temp) + if(!doc.data().atividadeCorrigida){ + tudoCorrigido = false; + } + }); + setAulas(temp) + if(tudoCorrigido && !concluido){ + db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao).update({concluido: true}) + } + }) +},[uid]) + +return <Materiais aulas={aulas}/>; + +} \ No newline at end of file diff --git a/front-end/src/services/firebase.js b/front-end/src/services/firebase.js index 023b6d7..c94a599 100644 --- a/front-end/src/services/firebase.js +++ b/front-end/src/services/firebase.js @@ -1,7 +1,8 @@ import firebase from 'firebase/compat/app'; import { getStorage, ref, getDownloadURL, uploadBytesResumable } from "firebase/storage"; -import 'firebase/compat/auth'; +//import 'firebase/compat/auth'; import 'firebase/compat/firestore'; +import { getAuth,signInWithPopup } from 'firebase/auth'; const firebaseConfig = { apiKey: "AIzaSyCHO-rE3b7dWh3yUL7tfSvSAKGE50iLVZk", @@ -16,6 +17,7 @@ const firebaseApp = firebase.initializeApp(firebaseConfig); const db = firebaseApp.firestore(); const storage = getStorage(firebaseApp); -const auth = firebase.auth(); +//const auth = firebase.auth(); +const auth = getAuth(); export { auth, db, storage, ref, uploadBytesResumable, getDownloadURL }; \ No newline at end of file -- GitLab From 15dddbcba5384dbc09c49c1dca4bee4ddff22d68 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Thu, 1 Dec 2022 17:15:14 -0300 Subject: [PATCH 02/19] Finalizando os testes com materiais --- front-end/src/pages/Curso/Materiais.test.js | 35 ++++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/front-end/src/pages/Curso/Materiais.test.js b/front-end/src/pages/Curso/Materiais.test.js index 6624da4..d8c5904 100644 --- a/front-end/src/pages/Curso/Materiais.test.js +++ b/front-end/src/pages/Curso/Materiais.test.js @@ -2,12 +2,39 @@ import Materiais from './Materiais.js'; import TestRenderer from 'react-test-renderer'; // ES6 import {shallow} from 'enzyme'; -it("Aula fora do prazo", () => { - const aulasMock = [{prazo: new Date("2022-12-25").getTime() / 1000, num: 1, caminhosMateriais: ["link1","link2"]}] - //const wrapper = shallow(<Materiais aulas={aulasMock} />); - //expect(wrapper.getElementById("teste")).toBeDisable(); +it("Enviar tarefa depois do prazo", () => { + const aulasMock = [ + {prazo: new Date("2021-12-25").getTime() / 1000, + num: 1, + caminhosMateriais: ["link1","link2"], + foraDoPrazo: true} + ] const testRenderer = TestRenderer.create(<Materiais aulas={aulasMock} numero={2} concluido={true} />); const testInstance = testRenderer.root; expect(testInstance.findByType('button').props.disabled).toBe(true); +}); + +it("Enviar tarefa antes do prazo", () => { + const aulasMock = [ + {prazo: new Date("2023-12-25").getTime() / 1000, + num: 1, + caminhosMateriais: ["link1","link2"], + foraDoPrazo: false} + ] + const testRenderer = TestRenderer.create(<Materiais aulas={aulasMock} numero={2} concluido={true} />); + const testInstance = testRenderer.root; + expect(testInstance.findByType('button').props.disabled).toBe(false); +}); + +it("Enviar tarefa no dia do prazo", () => { + const aulasMock = [ + {prazo: new Date().getTime() / 1000, + num: 1, + caminhosMateriais: ["link1","link2"], + foraDoPrazo: false} + ] + const testRenderer = TestRenderer.create(<Materiais aulas={aulasMock} numero={2} concluido={true} />); + const testInstance = testRenderer.root; + expect(testInstance.findByType('button').props.disabled).toBe(false); }); \ No newline at end of file -- GitLab From 6439074095502cb0bf6fea4c3f1f39e5cff474f4 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Thu, 1 Dec 2022 17:15:48 -0300 Subject: [PATCH 03/19] =?UTF-8?q?Tentando=20realizar=20testes=20com=20camp?= =?UTF-8?q?os=20de=20valida=C3=A7=C3=A3o=20do=20perfil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/pages/Perfil/Perfil.test.js | 11 +++++++++ front-end/src/pages/Perfil/PerfilUtils.js | 27 +++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 front-end/src/pages/Perfil/Perfil.test.js create mode 100644 front-end/src/pages/Perfil/PerfilUtils.js diff --git a/front-end/src/pages/Perfil/Perfil.test.js b/front-end/src/pages/Perfil/Perfil.test.js new file mode 100644 index 0000000..f0c5c52 --- /dev/null +++ b/front-end/src/pages/Perfil/Perfil.test.js @@ -0,0 +1,11 @@ +const minha_funcao = require('./PerfilUtils.js'); + +it('testar validação do cep', () => { + let endereco_esperado = { + rua: 'Praça Nossa Senhora das Graças', + bairro: 'Vila Nossa Senhora das Graças', + cidade: 'Taubaté', + uf: 'SP' + } + expect(minha_funcao.consultarCep('12060590')===endereco_esperado).toBe(true); + }); \ No newline at end of file diff --git a/front-end/src/pages/Perfil/PerfilUtils.js b/front-end/src/pages/Perfil/PerfilUtils.js new file mode 100644 index 0000000..7d7e755 --- /dev/null +++ b/front-end/src/pages/Perfil/PerfilUtils.js @@ -0,0 +1,27 @@ +const minha_funcao = {consultarCEP: (cep) => { + + const cepFinal = cep.replace(/[^0-9]/g, ""); + + if (cepFinal?.length !== 8) { + return false; + } + + /*fetch(`https://viacep.com.br/ws/${cepFinal}/json/`) + .then((res) => res.json()) + .then((data) => { + let dados = {} + dados = {...dados, rua: data.logradouro} + dados = {...dadosUsuario, bairro: data.bairro} + dados = {...dadosUsuario, cidade: data.cidade} + dados = {...dadosUsuario, uf: data.uf} + return dados; + }) + .catch(erro => { + console.log(erro) + return false; + })*/ + return true; + } +} + + module.exports = minha_funcao \ No newline at end of file -- GitLab From 8de37a47cd9a06e768e8aa45e9ddb4102875eaa9 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sat, 3 Dec 2022 17:24:07 -0300 Subject: [PATCH 04/19] =?UTF-8?q?Tentando=20v=C3=A1rias=20coisas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/App.js | 8 ++- front-end/src/context/AuthContext.js | 3 + .../src/pages/Perfil/ControllerPerfil.js | 0 front-end/src/pages/Perfil/Perfil.js | 56 ++++++++++++++----- front-end/src/pages/Perfil/Perfil.test.js | 37 +++++++++++- front-end/src/pages/Perfil/PerfilUtils.js | 43 +++++++------- 6 files changed, 105 insertions(+), 42 deletions(-) create mode 100644 front-end/src/pages/Perfil/ControllerPerfil.js diff --git a/front-end/src/App.js b/front-end/src/App.js index 3475f08..23abacd 100644 --- a/front-end/src/App.js +++ b/front-end/src/App.js @@ -13,9 +13,11 @@ import PaginaDaDuvida from "./pages/Duvidas/Componentes/PaginaDaDuvida"; import { ObterDados } from "./pages/Curso/ObterDados"; import { useAuth } from "./context/AuthContext"; + function App() { return ( - <AuthProvider> + <AuthProvider.Consumer> + {value=> <Router> <Routes> <Route path="/" element={<Login />} /> @@ -28,8 +30,8 @@ function App() { <Route exact path="/cadastro" element={<RotaPrivada> <Cadastro /> </RotaPrivada>} /> <Route exact path="/doc" element={<RotaPrivada> <PaginaDaDuvida/> </RotaPrivada>} /> </Routes> - </Router> - </AuthProvider> + </Router>} + </AuthProvider.Consumer> ); } diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index f8dee16..d0d31e5 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -4,6 +4,7 @@ import { signInWithEmailAndPassword, signOut, createUserWithEmailAndPassword, up import {doc, setDoc} from 'firebase/firestore' import {auth, db} from "../services/firebase"; + const AuthContext = createContext(); export function useAuth() { @@ -11,6 +12,7 @@ export function useAuth() { } export function AuthProvider({ children }) { + console.log(children); const [usuario, setUsuario] = useState(); const [loading, setLoading] = useState(true); const [erro, setErro] = useState(""); @@ -61,6 +63,7 @@ export function useAuth() { return ( <AuthContext.Provider value={value}> + {console.log(value)} {!loading && children} </AuthContext.Provider> ); diff --git a/front-end/src/pages/Perfil/ControllerPerfil.js b/front-end/src/pages/Perfil/ControllerPerfil.js new file mode 100644 index 0000000..e69de29 diff --git a/front-end/src/pages/Perfil/Perfil.js b/front-end/src/pages/Perfil/Perfil.js index b18211a..da2a8e6 100644 --- a/front-end/src/pages/Perfil/Perfil.js +++ b/front-end/src/pages/Perfil/Perfil.js @@ -11,9 +11,10 @@ import TextFieldPerfil from "./Componentes/TextFieldPerfil"; import PhotoCamera from '@mui/icons-material/PhotoCamera'; function Perfil() { - - const uid = auth.currentUser.uid; - const [foto, setFoto] = useState(auth.currentUser.photoURL); + //const uid = 'abc' + //const uid = auth.currentUser.uid; + //const [foto, setFoto] = useState(auth.currentUser.photoURL); + const [foto, setFoto] = useState('lala'); const [arquivo, setArquivo] = useState(null); const [cepValidado, setCepValidado] = useState(true); const [dadosUsuario, setDadosUsuarios] = useState({ @@ -40,7 +41,7 @@ function Perfil() { telefoneResponsavel:"", }) - useEffect(()=>{ + /*useEffect(()=>{ console.log("alo") db.collection("usuarios").doc(uid).onSnapshot((doc)=>{ setDadosUsuarios(doc.data()) @@ -48,7 +49,7 @@ function Perfil() { auth.onAuthStateChanged((user) => { setFoto(user.photoURL) }); - },[uid, auth]) + },[uid, auth])*/ async function onFileChange(e) { @@ -56,7 +57,7 @@ function Perfil() { setArquivo(arquivo); } - async function consultarCEP() { + /*async function consultarCEP(cep) { const cepFinal = dadosUsuario.cep.replace(/[^0-9]/g, ""); @@ -79,10 +80,35 @@ function Perfil() { console.log(erro) setCepValidado(false) }) + }*/ + + async function consultarCEP() { + + /*const cepFinal = dadosUsuario.cep.replace(/[^0-9]/g, ""); + + if (cepFinal?.length !== 8) { + return false; + } + + fetch(`https://viacep.com.br/ws/${cepFinal}/json/`) + .then((res) => res.json()) + .then((data) => { + console.log("CEP", data); + end = {...end, rua: data.logradouro} + end = {...end, bairro: data.bairro} + end = {...end, cidade: data.cidade} + end = {...end, uf: data.uf} + return end; + }) + .catch(erro => { + console.log(erro) + return false; + })*/ } async function editarInfos(){ - var tipo_arquivo = arquivo.name.split(".")[1]; + /*Manda tudo para firebase*/ + /*var tipo_arquivo = arquivo.name.split(".")[1]; var caminho_arquivo = `imagens/perfil/${uid}.${tipo_arquivo}` const urlImagem = await uploadFile(arquivo, caminho_arquivo, storage, ref, uploadBytesResumable, getDownloadURL, auth); auth.currentUser.updateProfile({ @@ -96,11 +122,11 @@ function Perfil() { console.log("Dados atualizados com sucesso!") }, function(error){ console.log("Erro ao atualizar os adados!"+error); - }); + });*/ } async function atualizarCampos(novoTexto, campo){ - setDadosUsuarios({...dadosUsuario, [campo]: novoTexto}) + /*setDadosUsuarios({...dadosUsuario, [campo]: novoTexto})*/ } return ( <div className="App"> @@ -122,9 +148,9 @@ function Perfil() { </div> <div className="linha"> - {ItensMinhasInformacoes.map((item) => { + {ItensMinhasInformacoes.map((item, key) => { return ( - <div> + <div key={key}> <TextFieldPerfil item={item} valor={dadosUsuario[item.value]} atualizar={atualizarCampos} /> {item.botao && <Button onClick={(e)=>{consultarCEP()}}>{item.botao.nomeBotao}</Button> @@ -137,8 +163,8 @@ function Perfil() { <h2 className="titulo">Informações do Responsável</h2> </div> <div className="linha"> - {ItensInformacoesDoResponsavel.map((item) => { - return <TextFieldPerfil item={item} valor={dadosUsuario[item.value]} atualizar={atualizarCampos} /> + {ItensInformacoesDoResponsavel.map((item, key) => { + return <div key={key}><TextFieldPerfil item={item} valor={dadosUsuario[item.value]} atualizar={atualizarCampos} /></div> })} </div> @@ -146,8 +172,8 @@ function Perfil() { <h2 className="titulo">Minha Senha</h2> </div> <div className="linha"> - {ItensMinhaSenha.map((item) => { - return <TextFieldPerfil item={item} valor={dadosUsuario[item.value]} atualizar={atualizarCampos} /> + {ItensMinhaSenha.map((item, key) => { + return <div key={key}><TextFieldPerfil item={item} valor={dadosUsuario[item.value]} atualizar={atualizarCampos} /></div> })} </div> <div className="salvar-button"> diff --git a/front-end/src/pages/Perfil/Perfil.test.js b/front-end/src/pages/Perfil/Perfil.test.js index f0c5c52..7c29446 100644 --- a/front-end/src/pages/Perfil/Perfil.test.js +++ b/front-end/src/pages/Perfil/Perfil.test.js @@ -1,4 +1,6 @@ -const minha_funcao = require('./PerfilUtils.js'); +import Perfil from './Perfil.js'; +import TestRenderer from 'react-test-renderer'; // ES6 +import renderer from 'react-test-renderer'; it('testar validação do cep', () => { let endereco_esperado = { @@ -7,5 +9,36 @@ it('testar validação do cep', () => { cidade: 'Taubaté', uf: 'SP' } - expect(minha_funcao.consultarCep('12060590')===endereco_esperado).toBe(true); + let dados = { + email:"", + bairro: "", + celular: "", + cep: "12060590", + complemento: "", + cpfAluno: "", + cpfResponsavel:" ", + dataNacimento: "", + escola: "", + nome: "", + nomeResponsavel: "", + numero: "", + parentesco: "", + rua: "", + serie: "", + senha: "", + estado: "", + cidade:"", + rgResponsavel:"", + emailResponsavel:"", + telefoneResponsavel:"" + } + + const wrapper = renderer.create(<Perfil dadosUsuario={dados} />); + const inst = wrapper.root; + console.log(wrapper.root.consultarCep); + expect(inst.consultarCep('12060590')===endereco_esperado).toBe(true); + console.log(inst); + /*const testRenderer = TestRenderer.create(<Perfil dadosUsuario={dados} />); + const testInstance = testRenderer.root; + expect(testInstance.consultarCep('12060590')===endereco_esperado).toBe(true);*/ }); \ No newline at end of file diff --git a/front-end/src/pages/Perfil/PerfilUtils.js b/front-end/src/pages/Perfil/PerfilUtils.js index 7d7e755..6859754 100644 --- a/front-end/src/pages/Perfil/PerfilUtils.js +++ b/front-end/src/pages/Perfil/PerfilUtils.js @@ -1,27 +1,26 @@ -const minha_funcao = {consultarCEP: (cep) => { +async function consultarCEP() { - const cepFinal = cep.replace(/[^0-9]/g, ""); + const cepFinal = dadosUsuario.cep.replace(/[^0-9]/g, ""); - if (cepFinal?.length !== 8) { - return false; - } - - /*fetch(`https://viacep.com.br/ws/${cepFinal}/json/`) - .then((res) => res.json()) - .then((data) => { - let dados = {} - dados = {...dados, rua: data.logradouro} - dados = {...dadosUsuario, bairro: data.bairro} - dados = {...dadosUsuario, cidade: data.cidade} - dados = {...dadosUsuario, uf: data.uf} - return dados; - }) - .catch(erro => { - console.log(erro) - return false; - })*/ - return true; + if (cepFinal?.length !== 8) { + setCepValidado(false); + return; } + + fetch(`https://viacep.com.br/ws/${cepFinal}/json/`) + .then((res) => res.json()) + .then((data) => { + console.log("CEP", data); + setDadosUsuarios({...dadosUsuario, rua: data.logradouro}) + setDadosUsuarios({...dadosUsuario, bairro: data.bairro}) + setDadosUsuarios({...dadosUsuario, cidade: data.cidade}) + setDadosUsuarios({...dadosUsuario, uf: data.uf}) + setCepValidado(true) + }) + .catch(erro => { + console.log(erro) + setCepValidado(false) + }) } - module.exports = minha_funcao \ No newline at end of file +export {consultarCEP} \ No newline at end of file -- GitLab From 28f66dd9841d10d5c675a26aad6a7bfd4356a405 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sat, 3 Dec 2022 18:49:58 -0300 Subject: [PATCH 05/19] =?UTF-8?q?mudan=C3=A7a=20na=20arquitetura=20do=20pe?= =?UTF-8?q?rfil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/context/AuthContext.js | 33 ++++++-- front-end/src/pages/Curso/Materiais.js | 6 +- front-end/src/pages/Perfil/Perfil.js | 100 +++++++++---------------- front-end/src/util/uploadFile.js | 4 +- 4 files changed, 69 insertions(+), 74 deletions(-) diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index d0d31e5..80506c3 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -3,6 +3,7 @@ import { createContext, useContext, useEffect, useState } from "react"; import { signInWithEmailAndPassword, signOut, createUserWithEmailAndPassword, updateProfile, getAuth } from 'firebase/auth' import {doc, setDoc} from 'firebase/firestore' import {auth, db} from "../services/firebase"; +import uploadFile from "../util/uploadFile"; const AuthContext = createContext(); @@ -16,6 +17,7 @@ export function useAuth() { const [usuario, setUsuario] = useState(); const [loading, setLoading] = useState(true); const [erro, setErro] = useState(""); + const [dadosUsuario, setDadosUsuario] = useState({}); async function cadastrar(email, senha, tipo) { createUserWithEmailAndPassword(auth, email, senha).then(async (usuario)=>{ @@ -34,18 +36,36 @@ export function useAuth() { }); } - function login(email, senha) { - return signInWithEmailAndPassword(auth, email, senha).then((e) => console.log(e)).catch((a) => console.log(a)); - } - function logout() { return signOut(auth); } - + + async function editarInfos(uid, arquivo, dadosAlterados){ + if(arquivo!=null){ + var tipo_arquivo = arquivo.name.split(".")[1]; + var caminho_arquivo = `imagens/perfil/${uid}.${tipo_arquivo}` + const urlImagem = await uploadFile(arquivo, caminho_arquivo); + auth.currentUser.updateProfile({ + photoURL: urlImagem + }).then(function() { + window.alert("Foto atualizada. Recarregue a página!") + }, function(error) { + console.log("Erro ao atualizar a foto!"+error) + }); + } + db.collection("usuarios").doc(uid).update(dadosAlterados).then(function(){ + console.log("Dados atualizados com sucesso!") + }, function(error){ + console.log("Erro ao atualizar os adados!"+error); + }); + } useEffect(() => { const unsubscribe = auth.onAuthStateChanged((user) => { setUsuario(user); + db.collection('usuarios').doc(user.uid).onSnapshot((doc)=>{ + setDadosUsuario(doc.data()) + }) setLoading(false); }); @@ -56,9 +76,10 @@ export function useAuth() { usuario, erro, setErro, - login, cadastrar, logout, + dadosUsuario, + editarInfos, }; return ( diff --git a/front-end/src/pages/Curso/Materiais.js b/front-end/src/pages/Curso/Materiais.js index c22a7aa..0cb7fe7 100644 --- a/front-end/src/pages/Curso/Materiais.js +++ b/front-end/src/pages/Curso/Materiais.js @@ -12,13 +12,15 @@ import Typography from '@mui/material/Typography'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import uploadFile from "../../util/uploadFile.js"; import { async } from "@firebase/util"; -import { ObterDados } from "./ObterDados"; +import { useAuth } from "../../context/AuthContext"; function Materiais({aulas, numero, concluido}) { const [arquivo, setArquivo] = useState(null); - /*async function EnviarAtividade(id_aula, numero_aula){ + console.log(useAuth()) + + async function EnviarAtividade(id_aula, numero_aula){ var nomeColecao = "Modulo"+numero.toString(); var tipo_arquivo = arquivo.name.split(".")[1]; var caminho_arquivo = `atividades/${nomeColecao}/aula${numero_aula}/${uid}.${tipo_arquivo}` diff --git a/front-end/src/pages/Perfil/Perfil.js b/front-end/src/pages/Perfil/Perfil.js index da2a8e6..b76cb0c 100644 --- a/front-end/src/pages/Perfil/Perfil.js +++ b/front-end/src/pages/Perfil/Perfil.js @@ -1,56 +1,34 @@ import React from "react"; -import TextField from '@mui/material/TextField'; -import {db, auth, storage, ref, uploadBytesResumable, getDownloadURL } from '../../services/firebase'; import {useState, useEffect} from 'react'; import './Perfil.css'; import Button from '@mui/material/Button' import Avatar from '@mui/material/Avatar'; -import uploadFile from "../../util/uploadFile"; import { ItensInformacoesDoResponsavel, ItensMinhaSenha, ItensMinhasInformacoes } from "./Componentes/ItensPerfil"; import TextFieldPerfil from "./Componentes/TextFieldPerfil"; -import PhotoCamera from '@mui/icons-material/PhotoCamera'; +import { useAuth } from "../../context/AuthContext"; function Perfil() { - //const uid = 'abc' - //const uid = auth.currentUser.uid; - //const [foto, setFoto] = useState(auth.currentUser.photoURL); - const [foto, setFoto] = useState('lala'); - const [arquivo, setArquivo] = useState(null); + + /* Informações e funções que mexem com banco de dados + são passadas por contexto */ + const uid = useAuth().usuario.uid; + const foto = useAuth().usuario.photoURL; + const {dadosUsuario} = useAuth(); + const {editarInfos} = useAuth(); + + /* Variáveis usuadas localmente */ + const [dadosAlterados, setDadosAlterados] = useState(dadosUsuario) //variável temporária + const [arquivo, setArquivo] = useState(null); //que pega mudanças do usuário const [cepValidado, setCepValidado] = useState(true); - const [dadosUsuario, setDadosUsuarios] = useState({ - email:"", - bairro: "", - celular: "", - cep: "", - complemento: "", - cpfAluno: "", - cpfResponsavel:" ", - dataNacimento: "", - escola: "", - nome: "", - nomeResponsavel: "", - numero: "", - parentesco: "", - rua: "", - serie: "", - senha: "", - estado: "", - cidade:"", - rgResponsavel:"", - emailResponsavel:"", - telefoneResponsavel:"", - }) - - /*useEffect(()=>{ - console.log("alo") - db.collection("usuarios").doc(uid).onSnapshot((doc)=>{ - setDadosUsuarios(doc.data()) - }) - auth.onAuthStateChanged((user) => { - setFoto(user.photoURL) - }); - },[uid, auth])*/ + const [status, setStatus] = useState(undefined); + /* Atualiza variável local com banco de dados */ + useEffect(()=>{ + setDadosAlterados(dadosUsuario) + },[dadosUsuario]) + + /* Funções locais para validar dados e atualizar + estado de variáveis (textos e imagens alteradas) */ async function onFileChange(e) { const arquivo = e.target.files[0]; @@ -59,7 +37,7 @@ function Perfil() { /*async function consultarCEP(cep) { - const cepFinal = dadosUsuario.cep.replace(/[^0-9]/g, ""); + const cepFinal = dadosAlterados.cep.replace(/[^0-9]/g, ""); if (cepFinal?.length !== 8) { setCepValidado(false); @@ -70,10 +48,10 @@ function Perfil() { .then((res) => res.json()) .then((data) => { console.log("CEP", data); - setDadosUsuarios({...dadosUsuario, rua: data.logradouro}) - setDadosUsuarios({...dadosUsuario, bairro: data.bairro}) - setDadosUsuarios({...dadosUsuario, cidade: data.cidade}) - setDadosUsuarios({...dadosUsuario, uf: data.uf}) + setDadosAlterados({...dadosAlterados, rua: data.logradouro}) + setDadosAlterados({...dadosAlterados, bairro: data.bairro}) + setDadosAlterados({...dadosAlterados, cidade: data.cidade}) + setDadosAlterados({...dadosAlterados, uf: data.uf}) setCepValidado(true) }) .catch(erro => { @@ -106,28 +84,20 @@ function Perfil() { })*/ } - async function editarInfos(){ - /*Manda tudo para firebase*/ - /*var tipo_arquivo = arquivo.name.split(".")[1]; - var caminho_arquivo = `imagens/perfil/${uid}.${tipo_arquivo}` - const urlImagem = await uploadFile(arquivo, caminho_arquivo, storage, ref, uploadBytesResumable, getDownloadURL, auth); - auth.currentUser.updateProfile({ - photoURL: urlImagem - }).then(function() { - window.alert("Foto atualizada. Recarregue a página!") - }, function(error) { - console.log("Erro ao atualizar a foto!"+error) - }); - db.collection("usuarios").doc(uid).update(dadosUsuario).then(function(){ - console.log("Dados atualizados com sucesso!") - }, function(error){ - console.log("Erro ao atualizar os adados!"+error); - });*/ + async function validarInfos(){ + let validacao = false; + if(validacao){ + //editarInfos(uid, arquivo, dadosAlterados) + setStatus({ type: 'successo' }); + } else { + setStatus({ type: 'fracasso' }); + } } async function atualizarCampos(novoTexto, campo){ - /*setDadosUsuarios({...dadosUsuario, [campo]: novoTexto})*/ + setDadosAlterados({...dadosAlterados, [campo]: novoTexto}) } + return ( <div className="App"> <div className="logo-menu"> diff --git a/front-end/src/util/uploadFile.js b/front-end/src/util/uploadFile.js index 2f0b227..f36eb95 100644 --- a/front-end/src/util/uploadFile.js +++ b/front-end/src/util/uploadFile.js @@ -1,4 +1,6 @@ -async function uploadFile(file, path, storage, ref, uploadBytesResumable, getDownloadURL, db, auth) { +import {storage, ref, uploadBytesResumable, getDownloadURL } from '../services/firebase'; + +async function uploadFile(file, path) { return new Promise(function(resolve, reject) { var metadata = { contentType: "image/jpeg", -- GitLab From 4138333acbac38c7bbd8479bca18d1889ea564de Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sat, 3 Dec 2022 20:24:31 -0300 Subject: [PATCH 06/19] =?UTF-8?q?Obter=20d=C3=BAvidas=20refatorado=20para?= =?UTF-8?q?=20receber=20dados=20do=20useAuth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/context/AuthContext.js | 5 ++++ .../src/pages/Duvidas/ObterDadosDuvidas.js | 27 ++++++++++--------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index 80506c3..d060ce8 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -18,6 +18,7 @@ export function useAuth() { const [loading, setLoading] = useState(true); const [erro, setErro] = useState(""); const [dadosUsuario, setDadosUsuario] = useState({}); + const [queryDuvidas, setQueryDuvidas] = useState(undefined); async function cadastrar(email, senha, tipo) { createUserWithEmailAndPassword(auth, email, senha).then(async (usuario)=>{ @@ -66,6 +67,9 @@ export function useAuth() { db.collection('usuarios').doc(user.uid).onSnapshot((doc)=>{ setDadosUsuario(doc.data()) }) + db.collection("forum").onSnapshot((docs)=>{ + setQueryDuvidas(docs) + }) setLoading(false); }); @@ -80,6 +84,7 @@ export function useAuth() { logout, dadosUsuario, editarInfos, + queryDuvidas, }; return ( diff --git a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js index 78b25e0..32a7799 100644 --- a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js +++ b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js @@ -1,22 +1,23 @@ -import {db} from '../../services/firebase'; import {useState, useEffect} from 'react'; import Duvidas from './Duvidas'; +import { useAuth } from '../../context/AuthContext'; export function ObterDadosDuvidas() { - const [duvidas, setDuvidas] = useState([]) + /*Obtém o query da coleção de dúvidas por contexto*/ + const {queryDuvidas} = useAuth(); + const [duvidas, setDuvidas] = useState([]) + + /*Faz alterações normal, mas não obtém o query diretamente do firabase*/ useEffect(()=>{ - db.collection("forum").get().then((docs)=>{ - let temp = []; - docs.forEach(doc => { - let id_aula = doc.id; - let doc_temp = {...doc.data(), id: id_aula} - temp.push(doc_temp) - }); - setDuvidas(temp) - }) - },[]) - console.log(duvidas) + let temp = []; + docs.forEach(doc => { + let id_aula = doc.id; + let doc_temp = {...doc.data(), id: id_aula} + temp.push(doc_temp) + }); + setDuvidas(temp) + },[queryDuvidas]) return <Duvidas listaDeDuvidas={duvidas}/>; -- GitLab From 5b329b3a4222fc163ed8af11ff54d4871756203a Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sat, 3 Dec 2022 21:02:04 -0300 Subject: [PATCH 07/19] =?UTF-8?q?Refatorando=20a=20p=C3=A1gina=20de=20d?= =?UTF-8?q?=C3=BAvidas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/App.js | 5 ++- front-end/src/context/AuthContext.js | 22 +++++++++++ .../pages/Duvidas/Componentes/CardUsuario.js | 10 ++--- front-end/src/pages/Duvidas/Duvidas.js | 39 +++++-------------- .../src/pages/Duvidas/ObterDadosDuvidas.js | 4 +- 5 files changed, 42 insertions(+), 38 deletions(-) diff --git a/front-end/src/App.js b/front-end/src/App.js index 23abacd..62cadb8 100644 --- a/front-end/src/App.js +++ b/front-end/src/App.js @@ -9,8 +9,9 @@ import Materiais from "./pages/Curso/Materiais"; import Duvidas from "./pages/Duvidas/Duvidas"; import Cadastro from "./pages/Cadastrar/Cadastrar"; import Perfil from "./pages/Perfil/Perfil"; -import PaginaDaDuvida from "./pages/Duvidas/Componentes/PaginaDaDuvida"; import { ObterDados } from "./pages/Curso/ObterDados"; +import { ObterDadosDuvidas } from "./pages/Duvidas/ObterDadosDuvidas"; +import PaginaDaDuvida from "./pages/Duvidas/Componentes/PaginaDaDuvida"; import { useAuth } from "./context/AuthContext"; @@ -21,7 +22,7 @@ function App() { <Router> <Routes> <Route path="/" element={<Login />} /> - <Route exact path="/duvidas" element={<RotaPrivada> <Duvidas /> </RotaPrivada>} /> + <Route exact path="/duvidas" element={<RotaPrivada> <ObterDadosDuvidas /> </RotaPrivada>} /> <Route exact path="/curso/materiais" element={<RotaPrivada> <Materiais /> </RotaPrivada>} /> <Route exact path="/curso/dados" element={<RotaPrivada> <ObterDados /> </RotaPrivada>} /> <Route exact path="/perfil" element={<RotaPrivada> <Perfil /> </RotaPrivada>} /> diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index d060ce8..b3ba1f6 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -41,6 +41,19 @@ export function useAuth() { return signOut(auth); } + async function publicarPergunta(titulo, mensagem, uid) { + await db.collection("forum").add({ + Data: new Date(), + Mensagem: mensagem, + Titulo: titulo, + criador: uid, + }).then((novoDocumento) => { + db.collection("forum").doc(novoDocumento.id).update({ + id: novoDocumento.id + }) + }) + } + async function editarInfos(uid, arquivo, dadosAlterados){ if(arquivo!=null){ var tipo_arquivo = arquivo.name.split(".")[1]; @@ -60,6 +73,13 @@ export function useAuth() { console.log("Erro ao atualizar os adados!"+error); }); } + + async function obterDadosPorUID(uid){ + const dadosUsuario = await db.collection("usuarios").doc(uid).get().then((doc)=>{ + return doc.data(); + }) + return dadosUsuario + } useEffect(() => { const unsubscribe = auth.onAuthStateChanged((user) => { @@ -85,6 +105,8 @@ export function useAuth() { dadosUsuario, editarInfos, queryDuvidas, + publicarPergunta, + obterDadosPorUID }; return ( diff --git a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js index 0048c2a..b2d0cad 100644 --- a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js +++ b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js @@ -1,12 +1,12 @@ -import TextField from '@mui/material/TextField'; import { useEffect, useState } from 'react'; -import { obterDadosPorUID } from '../../../util/obterDadosPorUID'; -import {auth} from '../../../services/firebase'; import Avatar from '@mui/material/Avatar'; +import { useAuth } from '../../../context/AuthContext'; + +function CardUsuario({uid}){ + + const {obterDadosPorUID} = useAuth(); -function CardUsuario(props){ const [dadosUsuario, setDadosUsuario] = useState("") - const uid = props.uid useEffect(()=>{ const obterDados = async () => { diff --git a/front-end/src/pages/Duvidas/Duvidas.js b/front-end/src/pages/Duvidas/Duvidas.js index 35c0b89..0611c5c 100644 --- a/front-end/src/pages/Duvidas/Duvidas.js +++ b/front-end/src/pages/Duvidas/Duvidas.js @@ -1,6 +1,5 @@ import React, { useEffect, useState } from "react"; import {useNavigate} from 'react-router-dom' -import {db, auth} from '../../services/firebase'; import { converterSegundosEmData } from "../../util/converterSegundosEmData"; import CardUsuario from "./Componentes/CardUsuario"; import "./Duvidas.css"; @@ -11,48 +10,27 @@ import Button from '@mui/material/Button'; import CardDuvida from "./Componentes/CardDuvida"; import { TextField } from "@mui/material"; import PublicarTexto from "./Componentes/PublicarTexto"; +import { useAuth } from '../../context/AuthContext.js'; -function Duvidas() { - const [todasDuvidas, setTodasDuvidas] = useState([]) +function Duvidas({listaDeDuvidas}) { + + const publicarPergunta = useAuth(); + const uid = useAuth().usuario.uid; + const [titulo, setTitulo] = useState("") const [duvida, setDuvida] = useState("") + let nav = useNavigate(); const irPaginaDuvida = (duvida) => { nav('/doc', {state: duvida}); } - const publicarPergunta = async (titulo, mensagem) => { - await db.collection("forum").add({ - Data: new Date(), - Mensagem: mensagem, - Titulo: titulo, - Criador: auth.currentUser.uid - }).then((novoDocumento) => { - db.collection("forum").doc(novoDocumento.id).update({ - id: novoDocumento.id - }) - }) - } - - useEffect(() => { - const obterDuvidas = async () => { - db.collection("forum").onSnapshot((querySnapshot) => { - const document =[]; - querySnapshot.forEach(async (doc) => { - document.push({...doc.data(), id: doc.id}); - }); - setTodasDuvidas(document); - }) - } - return obterDuvidas; - }, []); - return ( <div className="App"> <div className="page-duvidas"> <h1> Dúvidas </h1> <div className="duvidas"> - {todasDuvidas.map((duvida) => { + {listaDeDuvidas.map((duvida) => { return ( <div className="caixa"> <CardDuvida duvida={duvida} navegacao={irPaginaDuvida} /> @@ -60,6 +38,7 @@ function Duvidas() { ) })} </div> + <button onClick={(e)=>{publicarPergunta(titulo, texto, uid)}} >Publicar Dúvida</button> </div> <div className="enviar-duvida"> diff --git a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js index 32a7799..6bbb57c 100644 --- a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js +++ b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js @@ -11,7 +11,7 @@ export function ObterDadosDuvidas() { /*Faz alterações normal, mas não obtém o query diretamente do firabase*/ useEffect(()=>{ let temp = []; - docs.forEach(doc => { + queryDuvidas?.forEach(doc => { let id_aula = doc.id; let doc_temp = {...doc.data(), id: id_aula} temp.push(doc_temp) @@ -19,6 +19,8 @@ export function ObterDadosDuvidas() { setDuvidas(temp) },[queryDuvidas]) + console.log(duvidas) + return <Duvidas listaDeDuvidas={duvidas}/>; } \ No newline at end of file -- GitLab From 2c2656b4e090726e4b6952690098fab1d63867a5 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sun, 4 Dec 2022 22:06:01 -0300 Subject: [PATCH 08/19] =?UTF-8?q?Refatorando=20arquitetura=20de=20d=C3=BAv?= =?UTF-8?q?idas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Duvidas/Componentes/PaginaDaDuvida.js | 19 +++++++++----- front-end/src/pages/Duvidas/Duvidas.js | 25 ++++++++++++++++--- .../src/pages/Duvidas/ObterDadosDuvidas.js | 4 +-- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js index 2891aae..b916cd2 100644 --- a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js @@ -10,13 +10,15 @@ import CardDuvida from './CardDuvida'; import { obterDadosPorUID } from '../../../util/obterDadosPorUID'; import { TextField } from '@mui/material'; import PublicarTexto from './PublicarTexto'; +import {useAuth} from '../../../context/AuthContext'; function PaginaDaDuvida(props){ const {state} = useLocation(); + /*const uid = useAuth().usuario.uid;*/ const [todasRespostas, setTodasRespostas] = useState([]) - const publicarResposta = async (mensagem) => { + /*const publicarResposta = async (mensagem) => { await db.collection("forum").doc(state.id).collection("respostas").add({ Data: new Date(), Mensagem: mensagem, @@ -27,7 +29,9 @@ function PaginaDaDuvida(props){ id: novoDocumento.id }) }) - } + }*/ + /*const {publicarResposta} = useAuth();*/ + const {obterRespostas} = useAuth(); let nav = useNavigate(); const voltarParaDuvidas = (duvida) => { @@ -35,7 +39,7 @@ function PaginaDaDuvida(props){ } useEffect(() => { - const obterRespostas = async () => { + /*const obterRespostas = async () => { await db.collection("forum").doc(state.id).collection("respostas").onSnapshot((querySnapshot) => { const document =[]; querySnapshot.forEach(async (doc) => { @@ -45,11 +49,14 @@ function PaginaDaDuvida(props){ }); }); setTodasRespostas(document); - }) + })*/ + const respostas = async () => { + let todasRespostasTemp = await obterRespostas(state); + setTodasRespostas(todasRespostasTemp); } - return obterRespostas; + return respostas; }, [state]); - console.log(todasRespostas) + return( <div className="App"> <div className="page-perguntas"> diff --git a/front-end/src/pages/Duvidas/Duvidas.js b/front-end/src/pages/Duvidas/Duvidas.js index 0611c5c..66741e6 100644 --- a/front-end/src/pages/Duvidas/Duvidas.js +++ b/front-end/src/pages/Duvidas/Duvidas.js @@ -16,7 +16,7 @@ function Duvidas({listaDeDuvidas}) { const publicarPergunta = useAuth(); const uid = useAuth().usuario.uid; - + const [titulo, setTitulo] = useState("") const [duvida, setDuvida] = useState("") @@ -30,14 +30,31 @@ function Duvidas({listaDeDuvidas}) { <div className="page-duvidas"> <h1> Dúvidas </h1> <div className="duvidas"> - {listaDeDuvidas.map((duvida) => { + {listaDeDuvidas.map((duvida, key) => { + console.log(converterSegundosEmData(duvida.Data.seconds)) return ( - <div className="caixa"> - <CardDuvida duvida={duvida} navegacao={irPaginaDuvida} /> + <div key={key} className="caixa" onClick={() => irPaginaDuvida(duvida.id)}> + <h2> {duvida.Titulo} </h2> + <div className="foto"> + <CardUsuario uid={duvida.Criador} /> + </div> + <p className="data">Em {converterSegundosEmData(duvida.Data.seconds)}</p> + <div className="like"> + <IconButton aria-label="delete"> + <ThumbUpIcon color="success" fontSize="large" /> + </IconButton> + </div> + + <div className="dislike"> + <IconButton aria-label="delete"> + <ThumbDownAltIcon sx={{ color: 'red' }} fontSize="large" /> + </IconButton> + </div> </div> ) })} </div> + <p>je</p> <button onClick={(e)=>{publicarPergunta(titulo, texto, uid)}} >Publicar Dúvida</button> </div> diff --git a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js index 6bbb57c..a14567b 100644 --- a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js +++ b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js @@ -19,8 +19,6 @@ export function ObterDadosDuvidas() { setDuvidas(temp) },[queryDuvidas]) - console.log(duvidas) - -return <Duvidas listaDeDuvidas={duvidas}/>; +return <><p>je</p><Duvidas listaDeDuvidas={duvidas}/></>; } \ No newline at end of file -- GitLab From 56d465bbe97e3a91292de10f7f1a56839af6172e Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sun, 4 Dec 2022 22:06:27 -0300 Subject: [PATCH 09/19] =?UTF-8?q?fazendo=20testes=20para=20d=C3=BAvidas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/pages/Duvidas/Duvidas.test.js | 234 ++++---------------- 1 file changed, 49 insertions(+), 185 deletions(-) diff --git a/front-end/src/pages/Duvidas/Duvidas.test.js b/front-end/src/pages/Duvidas/Duvidas.test.js index 434f95a..d642891 100644 --- a/front-end/src/pages/Duvidas/Duvidas.test.js +++ b/front-end/src/pages/Duvidas/Duvidas.test.js @@ -1,189 +1,53 @@ -/* eslint-disable jest/no-conditional-expect */ -import React, { useEffect, useState } from "react"; import TestRenderer from 'react-test-renderer'; // ES6 -import {expect, jest, test} from '@jest/globals'; -import ShallowRenderer from "react-test-renderer/shallow" -import firebase from 'firebase/compat'; -import {configure, shallow} from 'enzyme'; -import Duvidas from './Duvidas.js'; -import { auth, db } from '../../services/firebase.js'; -import FirestoreMock, { firestore } from '../../setupTests.js'; -import { AuthContext, AuthProvider } from '../../context/AuthContext.js'; -import { signInWithEmailAndPassword } from 'firebase/auth'; -import Adapter from 'enzyme-adapter-react-16'; - -/* it("Teste Duvidas", () => { - firebase.mockReturnValueOnce({ - currentUser: { email: 'example@gmail.com', uid: 1, photoUrl: "https://firebasestorage.googleapis.com/v0/b/mc426-olamundos.appspot.com/o/imagens%2Fperfil%2FwRvT9vHkSNYhX9LWtTNa2fBfiZA2.jpg?alt=media&token=7b6bcc23-9b38-4267-8949-a3ff098f4147", emailVerified: true }, - }); - const duvidasMock = [{Criador: "wRvT9vHkSNYhX9LWtTNa2fBfiZA2", Data: { seconds: 545116}, Mensagem: "mensagemMock", Titulo: "tituloMock", id: "o61G72a4MWPOjK54MdEM"}] - const testRenderer = TestRenderer.create(<Duvidas listaDeDuvidas={duvidasMock} />); - const testInstance = testRenderer.root; - expect(true).toBe(true) -}); - */ -configure({adapter: new Adapter()}); -const mockNavigateToProfile = jest.fn() -jest.mock('firebase/app', () => { - return { - auth: mockNavigateToProfile.mockReturnThis(), +import renderer from 'react-test-renderer'; +import { ObterProvider } from '../../context/AuthContext.js' +import { screen, fireEvent, render } from '@testing-library/react' +import Duvidas from './Duvidas.js' +import PaginaDaDuvida from './Componentes/PaginaDaDuvida.js'; +import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; + + test("Testando página de dúvidas", () => { + const AuthContext = ObterProvider(); + function publicarPergunta(){ + return true; + } + function obterDadosPorUID(){ + return true; + } + function publicarResposta(){ + return true; + } + function obterRespostas(){ + return true; + } + + const listaDeDuvidas = [{ + Criador: "wRvT9vHkSNYhX9LWtTNa2fBfiZA2", + Data: {seconds: 1669298215, nanoseconds: 305000000}, + Mensagem: "Teste Teste Teste Teste Teste Teste", + Titulo: "Teste", + id: "o61G72a4MWPOjK54MdEM" + }] + const usuario = {uid: "abdc1234", photoURL: "urlFakeFoto"} + const dadosUsuario = {nome:"Jéssica da Silva de Oliveira"}; + const value = { + usuario, + dadosUsuario, + publicarPergunta, + obterDadosPorUID, + publicarResposta, + obterRespostas, }; - }); - -let realUseContext; -let useContextMock; -// Setup mock -beforeEach(() => { - realUseContext = React.useContext; - useContextMock = React.useContext = mockNavigateToProfile; -}); -// Cleanup mock -afterEach(() => { - React.useContext = realUseContext; -}); - - -it("Aula fora do prazo", () => { - const duvidasMock = [{Criador: "wRvT9vHkSNYhX9LWtTNa2fBfiZA2", Data: { seconds: 545116}, Mensagem: "mensagemMock", Titulo: "tituloMock", id: "o61G72a4MWPOjK54MdEM"}] -/* const testRenderer = TestRenderer.create(<Duvidas listaDeDuvidas={duvidasMock} numero={2} concluido={true} />);*/ - const usuario = { name: "Giorgio" }; - /* const testRenderer = TestRenderer.create( - <AuthProvider> - <Duvidas listaDeDuvidas={duvidasMock}/> - </AuthProvider> - ); */ - const wrapper = shallow(( - <AuthProvider> - <Duvidas listaDeDuvidas={duvidasMock}/> - </AuthProvider> - )); - console.log(wrapper.children()); - const autoContextWrapper = wrapper.find(0) - /* const TestComponent = () => ( - <NameContext.Provider value="Provided Value"> - <MyComponent /> - </NameContext.Provider> + render( + <AuthContext.Provider value={value}> + <Router> + <Routes> + <Route exact path="/" element={<Duvidas listaDeDuvidas={listaDeDuvidas} />} /> + <Route exact path="/doc" element={<PaginaDaDuvida/>} /> + </Routes> + </Router> + </AuthContext.Provider> ); - const element = shallow(<TestComponent />); - expect(element.find(MyComponent).dive().text()).toBe("Provided Value"); */ - - /* const testRenderer = TestRenderer.create( - <Duvidas listaDeDuvidas={duvidasMock}/> - ); */ - /* const testInstance = testRenderer.root; */ - expect(true).toBe(true) - -}); - -describe('<Hello />', () => { - test('it should mock the context', () => { - const duvidasMock = [{Criador: "wRvT9vHkSNYhX9LWtTNa2fBfiZA2", Data: { seconds: 545116}, Mensagem: "mensagemMock", Titulo: "tituloMock", id: "o61G72a4MWPOjK54MdEM"}] - - const contextValues = { usuario: 'Salve' }; - const component = shallow(<AuthContext />); - jest.spyOn(component.instance(), 'useAuth').mockImplementation(() => contextValues); - const wrapper = shallow(<Duvidas listaDeDuvidas={duvidasMock}/>); - - - expect(true).toBe(true) - }); - test('aaa', () => { - const component = shallow(<AuthContext />); - const sumSpy = jest.spyOn(component.instance(), 'sum') - sumSpy.mockReturnValue(20); - - expect(AuthContext.sum(5, 5)).toBe(20) - }) + expect(screen.getByText('Enviado por')).toBeInTheDocument(1); + expect(screen.getByText('Em 24/10/2022 às 10:56')).toBeInTheDocument(1); }); - - -/* const mockNavigateToProfile = jest.fn() - -jest.mock('firebase/app', () => { - const mockFirebase = { - auth: mockNavigateToProfile(() => { - return { - currentUser: { - email: 'test', - uid: '123', - emailVerified: true - }, - - signInWithEmailAndPassword: mockNavigateToProfile.mockImplementation() - } - }), - initializeApp: mockNavigateToProfile - } - return mockFirebase -}) - */ -/* describe('Test for authenticate ()', () => { - it('signInWithEmailAndPassword ()', () => { - const email = 'test' - const password = 'mypassword' - const spy = jest.spyOn(video, 'play'); - signInWithEmailAndPassword(auth, email, password) - expect(signInWithEmailAndPassword).toHaveBeenCalled() - }) - }) */ - - /* describe('61358076', () => { - afterEach(() => { - jest.restoreAllMocks(); - }); - it('should pass', async () => { - const firestoreMock = { - collection: jest.fn().mockReturnThis(), - doc: jest.fn().mockReturnThis(), - set: jest.fn().mockResolvedValueOnce(), - }; - const clearFieldsSpy = jest.spyOn(Duvidas.prototype, 'clearFields'); - jest.spyOn(firebase, 'firestore').mockImplementationOnce(() => firestoreMock); - const wrapper = shallow(<Duvidas></Duvidas>); - await wrapper.instance().saveToFirebase(); - expect(firestoreMock.collection).toBeCalledWith('messages'); - expect(firestoreMock.doc).toBeCalledWith('mock@example.com'); - expect(firestoreMock.set).toBeCalledWith({ email: 'mock@example.com' }); - expect(clearFieldsSpy).toBeCalledWith('Your Message have been submitted successfully.'); - }); - }); */ - -/* describe("setDocData", () => { - const mockData = { fake: "data" }; - beforeEach(() => { - jest.clearAllMocks(); - db.collection("fakeDocID").add(mockData); - }); - - it("writes the correct doc", () => { - expect(db.doc()).toHaveBeenCalledWith("docs/fakeDocID"); - }); - - it("adds a timestamp, and writes it to the doc", () => { - expect(firestore().doc().set).toHaveBeenCalledWith({ - created: "MOCK_TIME", - fake: "data" - }); - }); - }); - -describe('The Agreement model', () => { - const firestoreMock = new FirestoreMock() - beforeEach(() => { - firebase.firestore = firestoreMock - firestoreMock.reset() - }) - - it('does something', (done) => { - firestoreMock.mockAddReturn = { id: 'test-id' } - console.log("AAAAAAAAAAAAAAAAa") - console.log(firestoreMock.mockAddReturn) - db.collection('foobar').add({foo: 'bar'}).then(res => { - console.log("BBBBBBBBBBBBBBBBB") - expect(firestoreMock.mockCollection).toBeCalledWith('foobar') - expect(firestoreMock.mockAdd).toBeCalledWith({foo: 'bar'}) - expect(res.id).toEqual('test-id') - done() - }).catch(done) - }) -}) */ \ No newline at end of file -- GitLab From 0c8ac0f71176772cd89680305044610683f7d146 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sun, 4 Dec 2022 22:08:06 -0300 Subject: [PATCH 10/19] =?UTF-8?q?excluindo=20arquivo=20de=20teste=20n?= =?UTF-8?q?=C3=A3o=20testado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/App.test.js | 1 - 1 file changed, 1 deletion(-) delete mode 100644 front-end/src/App.test.js diff --git a/front-end/src/App.test.js b/front-end/src/App.test.js deleted file mode 100644 index 8b13789..0000000 --- a/front-end/src/App.test.js +++ /dev/null @@ -1 +0,0 @@ - -- GitLab From 02ae94c18600cf06dee9047995b6d3089913693c Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Sun, 4 Dec 2022 22:08:42 -0300 Subject: [PATCH 11/19] refatorando materiais --- front-end/src/context/AuthContext.js | 31 +++++++++++++++++++++++++- front-end/src/pages/Curso/Materiais.js | 14 ++++-------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index b3ba1f6..3f51313 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -80,6 +80,33 @@ export function useAuth() { }) return dadosUsuario } + + async function publicarResposta(mensagem, uid_pergunta, uid_user_logado){ + await db.collection("forum").doc(uid_pergunta).collection("respostas").add({ + Data: new Date(), + Mensagem: mensagem, + Likes: 0, + Criador: uid_user_logado + }).then((novoDocumento) => { + db.collection("forum").doc(uid_pergunta).collection("respostas").doc(novoDocumento.id).update({ + id: novoDocumento.id + }) + }) + } + + async function obterRespostas(uid_pergunta){ + let respostas = await db.collection("forum").doc(uid_pergunta).collection("respostas").get().then((querySnapshot) => { + const document =[]; + querySnapshot.forEach((doc) => { + document.push({ + ...doc.data(), + id: doc.id + }); + }); + return document; + }) + return respostas; + } useEffect(() => { const unsubscribe = auth.onAuthStateChanged((user) => { @@ -106,7 +133,9 @@ export function useAuth() { editarInfos, queryDuvidas, publicarPergunta, - obterDadosPorUID + obterDadosPorUID, + publicarResposta, + obterRespostas, }; return ( diff --git a/front-end/src/pages/Curso/Materiais.js b/front-end/src/pages/Curso/Materiais.js index 0cb7fe7..3e096a6 100644 --- a/front-end/src/pages/Curso/Materiais.js +++ b/front-end/src/pages/Curso/Materiais.js @@ -55,8 +55,8 @@ function Materiais({aulas, numero, concluido}) { </div> <h1>Módulo 1</h1> </div> - {aulas.map((aula)=>( - <div className="aulas"> + {aulas.map((aula, key)=>( + <div key={key} className="aulas"> <div className="Aula-titulo"> <h2>{"Aula "+aula.numeroAula}</h2> @@ -80,16 +80,10 @@ function Materiais({aulas, numero, concluido}) { </AccordionSummary> <AccordionDetails> <ul className="material-list"> - <li> + <li key={aula.numero}> <a className="link-aula" href={aula.linkAula} target="_blank" >Aula Gravada</a> </li> - {aula.caminhosMateriais.map((mat,i)=>( - <Typography> - <li> - <a className="link-material" href={mat} target="_blank">{`Material ${i+1}`}</a> - </li> - </Typography> - ))} + </ul> </AccordionDetails> </Accordion> -- GitLab From 304e165a727640edcc6ad2bb72597da0acb873b0 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 15:25:39 -0300 Subject: [PATCH 12/19] corrigindo problema do perfil --- front-end/src/context/AuthContext.js | 4 +- .../src/pages/Duvidas/ObterDadosDuvidas.js | 2 +- front-end/src/pages/Perfil/Perfil.js | 53 ++++++++++++++++--- 3 files changed, 49 insertions(+), 10 deletions(-) diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index 3f51313..82c3320 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -75,10 +75,10 @@ export function useAuth() { } async function obterDadosPorUID(uid){ - const dadosUsuario = await db.collection("usuarios").doc(uid).get().then((doc)=>{ + const dadosUsuarioExterno = await db.collection("usuarios").doc(uid).get().then((doc)=>{ return doc.data(); }) - return dadosUsuario + return dadosUsuarioExterno } async function publicarResposta(mensagem, uid_pergunta, uid_user_logado){ diff --git a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js index a14567b..ceff92f 100644 --- a/front-end/src/pages/Duvidas/ObterDadosDuvidas.js +++ b/front-end/src/pages/Duvidas/ObterDadosDuvidas.js @@ -19,6 +19,6 @@ export function ObterDadosDuvidas() { setDuvidas(temp) },[queryDuvidas]) -return <><p>je</p><Duvidas listaDeDuvidas={duvidas}/></>; +return <><Duvidas listaDeDuvidas={duvidas}/></>; } \ No newline at end of file diff --git a/front-end/src/pages/Perfil/Perfil.js b/front-end/src/pages/Perfil/Perfil.js index b76cb0c..32c5e7c 100644 --- a/front-end/src/pages/Perfil/Perfil.js +++ b/front-end/src/pages/Perfil/Perfil.js @@ -17,14 +17,38 @@ function Perfil() { const {editarInfos} = useAuth(); /* Variáveis usuadas localmente */ - const [dadosAlterados, setDadosAlterados] = useState(dadosUsuario) //variável temporária - const [arquivo, setArquivo] = useState(null); //que pega mudanças do usuário + const [dadosAlterados, setDadosAlterados] = useState({ + email:"", + bairro: "", + celular: "", + cep: "", + complemento: "", + cpfAluno: "", + cpfResponsavel:" ", + dataNacimento: "", + escola: "", + nome: "", + nomeResponsavel: "", + numero: "", + parentesco: "", + rua: "", + serie: "", + senha: "", + estado: "", + cidade:"", + rgResponsavel:"", + emailResponsavel:"", + telefoneResponsavel:"", + }) + const [arquivo, setArquivo] = useState(null); const [cepValidado, setCepValidado] = useState(true); const [status, setStatus] = useState(undefined); /* Atualiza variável local com banco de dados */ useEffect(()=>{ - setDadosAlterados(dadosUsuario) + if(dadosUsuario!=undefined){ + setDadosAlterados(dadosUsuario) + } },[dadosUsuario]) /* Funções locais para validar dados e atualizar @@ -47,7 +71,6 @@ function Perfil() { fetch(`https://viacep.com.br/ws/${cepFinal}/json/`) .then((res) => res.json()) .then((data) => { - console.log("CEP", data); setDadosAlterados({...dadosAlterados, rua: data.logradouro}) setDadosAlterados({...dadosAlterados, bairro: data.bairro}) setDadosAlterados({...dadosAlterados, cidade: data.cidade}) @@ -85,10 +108,21 @@ function Perfil() { } async function validarInfos(){ - let validacao = false; + let validacao = true; + if(dadosAlterados.cep.length != 8){ + validacao = false; + } + if(dadosAlterados.cpfAluno.length != 11){ + validacao = false; + } if(validacao){ +<<<<<<< HEAD //editarInfos(uid, arquivo, dadosAlterados) setStatus({ type: 'successo' }); +======= + editarInfos(uid, arquivo, dadosAlterados) + setStatus({ type: 'sucesso' }); +>>>>>>> corrigindo problema do perfil } else { setStatus({ type: 'fracasso' }); } @@ -146,8 +180,13 @@ function Perfil() { return <div key={key}><TextFieldPerfil item={item} valor={dadosUsuario[item.value]} atualizar={atualizarCampos} /></div> })} </div> - <div className="salvar-button"> - <Button onClick={(e)=>{editarInfos()}} variant="contained" size="large">Salvar Informações</Button> + <div> + <Button onClick={(e)=>{validarInfos()}} variant="contained" size="large">Salvar Informações</Button> + <> + {status?.type === 'sucesso' && <p>Alterações Realizadas</p>} + {status?.type === 'fracasso' && <p>Problema ao salvar alterações</p>} + </> + </div> </div> </div> ); -- GitLab From aa02d8d608b3ab0003ead238071a34a8ae5dfda8 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 15:49:04 -0300 Subject: [PATCH 13/19] fazendo rebase da develop na arquitetura --- front-end/src/pages/Curso/Materiais.js | 6 ++---- front-end/src/pages/Perfil/Perfil.js | 6 +----- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/front-end/src/pages/Curso/Materiais.js b/front-end/src/pages/Curso/Materiais.js index 3e096a6..af4ecda 100644 --- a/front-end/src/pages/Curso/Materiais.js +++ b/front-end/src/pages/Curso/Materiais.js @@ -18,8 +18,6 @@ function Materiais({aulas, numero, concluido}) { const [arquivo, setArquivo] = useState(null); - console.log(useAuth()) - async function EnviarAtividade(id_aula, numero_aula){ var nomeColecao = "Modulo"+numero.toString(); var tipo_arquivo = arquivo.name.split(".")[1]; @@ -27,9 +25,9 @@ function Materiais({aulas, numero, concluido}) { const urlFile = await uploadFile(arquivo, caminho_arquivo, storage, ref, uploadBytesResumable, getDownloadURL, auth); db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao) .collection("aulas").doc(id_aula).update({caminhoTarefaEnviada: urlFile}) - }*/ + } - async function EnviarAtividade(id_aula, numero_aula){} + /*async function EnviarAtividade(id_aula, numero_aula){}*/ async function onFileChange(e) { const arquivo = e.target.files[0]; diff --git a/front-end/src/pages/Perfil/Perfil.js b/front-end/src/pages/Perfil/Perfil.js index 32c5e7c..600dd62 100644 --- a/front-end/src/pages/Perfil/Perfil.js +++ b/front-end/src/pages/Perfil/Perfil.js @@ -116,13 +116,8 @@ function Perfil() { validacao = false; } if(validacao){ -<<<<<<< HEAD - //editarInfos(uid, arquivo, dadosAlterados) - setStatus({ type: 'successo' }); -======= editarInfos(uid, arquivo, dadosAlterados) setStatus({ type: 'sucesso' }); ->>>>>>> corrigindo problema do perfil } else { setStatus({ type: 'fracasso' }); } @@ -133,6 +128,7 @@ function Perfil() { } return ( + <div> <div className="App"> <div className="logo-menu"> <Avatar -- GitLab From 382ad3e1e47e39584e895800b164550d2182d8e6 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 19:01:17 -0300 Subject: [PATCH 14/19] corrigindo erro de materiais --- front-end/src/pages/Curso/Materiais.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front-end/src/pages/Curso/Materiais.js b/front-end/src/pages/Curso/Materiais.js index af4ecda..09fc6db 100644 --- a/front-end/src/pages/Curso/Materiais.js +++ b/front-end/src/pages/Curso/Materiais.js @@ -18,16 +18,16 @@ function Materiais({aulas, numero, concluido}) { const [arquivo, setArquivo] = useState(null); - async function EnviarAtividade(id_aula, numero_aula){ + /*async function EnviarAtividade(id_aula, numero_aula){ var nomeColecao = "Modulo"+numero.toString(); var tipo_arquivo = arquivo.name.split(".")[1]; var caminho_arquivo = `atividades/${nomeColecao}/aula${numero_aula}/${uid}.${tipo_arquivo}` const urlFile = await uploadFile(arquivo, caminho_arquivo, storage, ref, uploadBytesResumable, getDownloadURL, auth); db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao) .collection("aulas").doc(id_aula).update({caminhoTarefaEnviada: urlFile}) - } + }*/ - /*async function EnviarAtividade(id_aula, numero_aula){}*/ + async function EnviarAtividade(id_aula, numero_aula){} async function onFileChange(e) { const arquivo = e.target.files[0]; -- GitLab From 5aa0601b7e8b4e12f98d5fda67b9631adab4f67f Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 19:11:43 -0300 Subject: [PATCH 15/19] corrigindo problemas de arquitetura para testes --- front-end/src/App.js | 7 ++-- .../Duvidas/Componentes/PaginaDaDuvida.js | 41 ++++--------------- front-end/src/pages/Duvidas/Duvidas.js | 2 +- front-end/src/pages/Perfil/Perfil.js | 1 + 4 files changed, 14 insertions(+), 37 deletions(-) diff --git a/front-end/src/App.js b/front-end/src/App.js index 62cadb8..c1689f9 100644 --- a/front-end/src/App.js +++ b/front-end/src/App.js @@ -17,8 +17,7 @@ import { useAuth } from "./context/AuthContext"; function App() { return ( - <AuthProvider.Consumer> - {value=> + <AuthProvider> <Router> <Routes> <Route path="/" element={<Login />} /> @@ -31,8 +30,8 @@ function App() { <Route exact path="/cadastro" element={<RotaPrivada> <Cadastro /> </RotaPrivada>} /> <Route exact path="/doc" element={<RotaPrivada> <PaginaDaDuvida/> </RotaPrivada>} /> </Routes> - </Router>} - </AuthProvider.Consumer> + </Router> + </AuthProvider> ); } diff --git a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js index b916cd2..cd38f08 100644 --- a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js @@ -14,48 +14,25 @@ import {useAuth} from '../../../context/AuthContext'; function PaginaDaDuvida(props){ const {state} = useLocation(); - /*const uid = useAuth().usuario.uid;*/ + const uid = useAuth().usuario.uid; const [todasRespostas, setTodasRespostas] = useState([]) - - - /*const publicarResposta = async (mensagem) => { - await db.collection("forum").doc(state.id).collection("respostas").add({ - Data: new Date(), - Mensagem: mensagem, - Likes: 0, - Criador: auth.currentUser.uid - }).then((novoDocumento) => { - db.collection("forum").doc(state.id).collection("respostas").doc(novoDocumento.id).update({ - id: novoDocumento.id - }) - }) - }*/ - /*const {publicarResposta} = useAuth();*/ + const {publicarResposta} = useAuth(); const {obterRespostas} = useAuth(); - let nav = useNavigate(); - const voltarParaDuvidas = (duvida) => { - nav('/duvidas'); - } - useEffect(() => { - /*const obterRespostas = async () => { - await db.collection("forum").doc(state.id).collection("respostas").onSnapshot((querySnapshot) => { - const document =[]; - querySnapshot.forEach(async (doc) => { - document.push({ - ...doc.data(), - id: doc.id, - }); - }); - setTodasRespostas(document); - })*/ const respostas = async () => { let todasRespostasTemp = await obterRespostas(state); setTodasRespostas(todasRespostasTemp); } return respostas; }, [state]); + + let nav = useNavigate(); + const voltarParaDuvidas = (duvida) => { + nav('/duvidas'); + } + + return( <div className="App"> diff --git a/front-end/src/pages/Duvidas/Duvidas.js b/front-end/src/pages/Duvidas/Duvidas.js index 66741e6..5c19a87 100644 --- a/front-end/src/pages/Duvidas/Duvidas.js +++ b/front-end/src/pages/Duvidas/Duvidas.js @@ -55,7 +55,7 @@ function Duvidas({listaDeDuvidas}) { })} </div> <p>je</p> - <button onClick={(e)=>{publicarPergunta(titulo, texto, uid)}} >Publicar Dúvida</button> + <button onClick={(e)=>{publicarPergunta(titulo, duvida, uid)}} >Publicar Dúvida</button> </div> <div className="enviar-duvida"> diff --git a/front-end/src/pages/Perfil/Perfil.js b/front-end/src/pages/Perfil/Perfil.js index 600dd62..2317ef1 100644 --- a/front-end/src/pages/Perfil/Perfil.js +++ b/front-end/src/pages/Perfil/Perfil.js @@ -6,6 +6,7 @@ import Avatar from '@mui/material/Avatar'; import { ItensInformacoesDoResponsavel, ItensMinhaSenha, ItensMinhasInformacoes } from "./Componentes/ItensPerfil"; import TextFieldPerfil from "./Componentes/TextFieldPerfil"; import { useAuth } from "../../context/AuthContext"; +import PhotoCamera from '@mui/icons-material/PhotoCamera'; function Perfil() { -- GitLab From 68106a60bf40c710acecb2d9c5738d7e70420442 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 19:18:00 -0300 Subject: [PATCH 16/19] corrigindo problema de undefined com materiais --- front-end/src/pages/Curso/Materiais.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/front-end/src/pages/Curso/Materiais.js b/front-end/src/pages/Curso/Materiais.js index 09fc6db..4aeba9c 100644 --- a/front-end/src/pages/Curso/Materiais.js +++ b/front-end/src/pages/Curso/Materiais.js @@ -1,5 +1,5 @@ import React from "react"; -//import {db, auth, storage, ref, uploadBytesResumable, getDownloadURL } from '../../services/firebase'; +import {db, auth, storage, ref, uploadBytesResumable, getDownloadURL } from '../../services/firebase'; import './Materiais.css' import {useState, useEffect} from 'react'; import Button from '@mui/material/Button'; @@ -17,15 +17,16 @@ import { useAuth } from "../../context/AuthContext"; function Materiais({aulas, numero, concluido}) { const [arquivo, setArquivo] = useState(null); + const [uid, setUid] = useState("") - /*async function EnviarAtividade(id_aula, numero_aula){ + async function EnviarAtividade(id_aula, numero_aula){ var nomeColecao = "Modulo"+numero.toString(); var tipo_arquivo = arquivo.name.split(".")[1]; var caminho_arquivo = `atividades/${nomeColecao}/aula${numero_aula}/${uid}.${tipo_arquivo}` - const urlFile = await uploadFile(arquivo, caminho_arquivo, storage, ref, uploadBytesResumable, getDownloadURL, auth); + const urlFile = await uploadFile(arquivo, caminho_arquivo); db.collection("usuarios").doc(uid).collection("curso").doc(nomeColecao) .collection("aulas").doc(id_aula).update({caminhoTarefaEnviada: urlFile}) - }*/ + } async function EnviarAtividade(id_aula, numero_aula){} @@ -41,7 +42,10 @@ function Materiais({aulas, numero, concluido}) { setExpanded(isExpanded ? panel : false); }; - //const uid = auth.currentUser.uid; + if(auth.currentUser!=undefined){ + setUid(auth.currentUser.uid) + } + const dataAtual = new Date().getTime() / 1000; return ( -- GitLab From fd716debd86eb45dc64719fc3fed3b32d9f16222 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 20:08:59 -0300 Subject: [PATCH 17/19] =?UTF-8?q?resolvendo=20problema=20com=20d=C3=BAvida?= =?UTF-8?q?s=20no=20teste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/context/AuthContext.js | 4 ++-- front-end/src/pages/Curso/Materiais.js | 14 +++++++------- .../pages/Duvidas/Componentes/CardDuvida.js | 2 ++ .../pages/Duvidas/Componentes/CardUsuario.js | 2 +- .../Duvidas/Componentes/PaginaDaDuvida.js | 18 +++++++++++++----- .../pages/Duvidas/Componentes/PublicarTexto.js | 6 ++++-- front-end/src/pages/Duvidas/Duvidas.js | 12 ++---------- 7 files changed, 31 insertions(+), 27 deletions(-) diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index 82c3320..a70ea6f 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -13,7 +13,7 @@ export function useAuth() { } export function AuthProvider({ children }) { - console.log(children); + const [usuario, setUsuario] = useState(); const [loading, setLoading] = useState(true); const [erro, setErro] = useState(""); @@ -105,6 +105,7 @@ export function useAuth() { }); return document; }) + console.log("ggggggggggggggggggggggg",respostas) return respostas; } @@ -140,7 +141,6 @@ export function useAuth() { return ( <AuthContext.Provider value={value}> - {console.log(value)} {!loading && children} </AuthContext.Provider> ); diff --git a/front-end/src/pages/Curso/Materiais.js b/front-end/src/pages/Curso/Materiais.js index 4aeba9c..5e67baa 100644 --- a/front-end/src/pages/Curso/Materiais.js +++ b/front-end/src/pages/Curso/Materiais.js @@ -1,5 +1,5 @@ import React from "react"; -import {db, auth, storage, ref, uploadBytesResumable, getDownloadURL } from '../../services/firebase'; +import {db, auth} from '../../services/firebase'; import './Materiais.css' import {useState, useEffect} from 'react'; import Button from '@mui/material/Button'; @@ -11,8 +11,6 @@ import AccordionSummary from '@mui/material/AccordionSummary'; import Typography from '@mui/material/Typography'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import uploadFile from "../../util/uploadFile.js"; -import { async } from "@firebase/util"; -import { useAuth } from "../../context/AuthContext"; function Materiais({aulas, numero, concluido}) { @@ -42,9 +40,12 @@ function Materiais({aulas, numero, concluido}) { setExpanded(isExpanded ? panel : false); }; - if(auth.currentUser!=undefined){ - setUid(auth.currentUser.uid) - } + useEffect(()=>{ + if(auth.currentUser!=undefined){ + setUid(auth.currentUser.uid) + } + },[auth.currentUser]) + const dataAtual = new Date().getTime() / 1000; @@ -117,5 +118,4 @@ function Materiais({aulas, numero, concluido}) { ) } - export default Materiais; \ No newline at end of file diff --git a/front-end/src/pages/Duvidas/Componentes/CardDuvida.js b/front-end/src/pages/Duvidas/Componentes/CardDuvida.js index 65a518d..e471c64 100644 --- a/front-end/src/pages/Duvidas/Componentes/CardDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/CardDuvida.js @@ -9,6 +9,8 @@ function CardDuvida(props){ const duvida = props.duvida const navegacao = props.navegacao + console.log("fffffffff",duvida) + return( <div className='caixa2' onClick={() => navegacao(duvida)}> <h2> {duvida.Titulo} </h2> diff --git a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js index b2d0cad..0d2d6a4 100644 --- a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js +++ b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js @@ -6,7 +6,7 @@ function CardUsuario({uid}){ const {obterDadosPorUID} = useAuth(); - const [dadosUsuario, setDadosUsuario] = useState("") + const [dadosUsuario, setDadosUsuario] = useState({tipo: ""}) useEffect(()=>{ const obterDados = async () => { diff --git a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js index cd38f08..8e560ef 100644 --- a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js @@ -12,26 +12,33 @@ import { TextField } from '@mui/material'; import PublicarTexto from './PublicarTexto'; import {useAuth} from '../../../context/AuthContext'; -function PaginaDaDuvida(props){ - const {state} = useLocation(); +function PaginaDaDuvida(){ + const {state} = useLocation(); //uid da dúvida const uid = useAuth().usuario.uid; const [todasRespostas, setTodasRespostas] = useState([]) const {publicarResposta} = useAuth(); const {obterRespostas} = useAuth(); + console.log(obterRespostas) + useEffect(() => { + console.log("AQUIIIIIIIIIIIIIIIIIIIII") const respostas = async () => { - let todasRespostasTemp = await obterRespostas(state); + console.log('YYYYYYYYYY',state) + const todasRespostasTemp = await obterRespostas(state); setTodasRespostas(todasRespostasTemp); + console.log(todasRespostasTemp, "WWWWWWWWWWWWWW") } return respostas; - }, [state]); + }); let nav = useNavigate(); const voltarParaDuvidas = (duvida) => { nav('/duvidas'); } + console.log(todasRespostas, "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ") + return( @@ -49,7 +56,8 @@ function PaginaDaDuvida(props){ </div> <div className="respostas"> - {todasRespostas.map((resposta) => { + {todasRespostas?.map((resposta) => { + console.log("eeeeeeeeeeeeeeeeeeeeeeee",resposta) return ( <div className="resposta"> <div className="resposta-msg"> diff --git a/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js b/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js index 0b0b177..9451c24 100644 --- a/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js +++ b/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js @@ -5,11 +5,13 @@ import ThumbUpIcon from '@mui/icons-material/ThumbUp'; import ThumbDownAltIcon from '@mui/icons-material/ThumbDownAlt'; import "../Duvidas.css"; import { useState } from 'react'; +import { useAuth } from '../../../context/AuthContext.js'; function PublicarTexto(props){ const [titulo, setTitulo] = useState("") const [duvida, setDuvida] = useState("") - const funcao = props.funcao + const {publicarPergunta} = useAuth(); + const uid = useAuth().usuario.uid; return( <div> @@ -17,7 +19,7 @@ function PublicarTexto(props){ <hr/> <textarea placeholder="Escreva aqui sua dúvida..." onChange={e => setDuvida(e.target.value)} /> <div className="enviar-duvida-button"> - <Button variant="contained" onClick={() => funcao(titulo, duvida)}>Enviar</Button> + <Button variant="contained" onClick={() => publicarPergunta(titulo, duvida, uid)}>Enviar</Button> </div> </div> ) diff --git a/front-end/src/pages/Duvidas/Duvidas.js b/front-end/src/pages/Duvidas/Duvidas.js index 5c19a87..d1a3b74 100644 --- a/front-end/src/pages/Duvidas/Duvidas.js +++ b/front-end/src/pages/Duvidas/Duvidas.js @@ -13,12 +13,6 @@ import PublicarTexto from "./Componentes/PublicarTexto"; import { useAuth } from '../../context/AuthContext.js'; function Duvidas({listaDeDuvidas}) { - - const publicarPergunta = useAuth(); - const uid = useAuth().usuario.uid; - - const [titulo, setTitulo] = useState("") - const [duvida, setDuvida] = useState("") let nav = useNavigate(); const irPaginaDuvida = (duvida) => { @@ -31,7 +25,7 @@ function Duvidas({listaDeDuvidas}) { <h1> Dúvidas </h1> <div className="duvidas"> {listaDeDuvidas.map((duvida, key) => { - console.log(converterSegundosEmData(duvida.Data.seconds)) + console.log(duvida.Criador) return ( <div key={key} className="caixa" onClick={() => irPaginaDuvida(duvida.id)}> <h2> {duvida.Titulo} </h2> @@ -54,13 +48,11 @@ function Duvidas({listaDeDuvidas}) { ) })} </div> - <p>je</p> - <button onClick={(e)=>{publicarPergunta(titulo, duvida, uid)}} >Publicar Dúvida</button> </div> <div className="enviar-duvida"> <h3>Enviar uma dúvida</h3> - <PublicarTexto funcao={publicarPergunta} /> + <PublicarTexto/> </div> </div> ); -- GitLab From cd93dd404263884712ec6e86d76f369bc715d6c8 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 20:56:45 -0300 Subject: [PATCH 18/19] =?UTF-8?q?Corrigido=20bugs=20com=20as=20p=C3=A1gina?= =?UTF-8?q?s=20de=20Duvida?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/src/context/AuthContext.js | 12 ++++++---- .../pages/Duvidas/Componentes/CardDuvida.js | 2 +- .../pages/Duvidas/Componentes/CardUsuario.js | 4 ++++ .../Duvidas/Componentes/PaginaDaDuvida.js | 6 ++--- .../Duvidas/Componentes/PublicarTexto.js | 12 +++++++++- front-end/src/pages/Duvidas/Duvidas.js | 24 ++++--------------- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index a70ea6f..f90cb01 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -46,7 +46,7 @@ export function useAuth() { Data: new Date(), Mensagem: mensagem, Titulo: titulo, - criador: uid, + Criador: uid, }).then((novoDocumento) => { db.collection("forum").doc(novoDocumento.id).update({ id: novoDocumento.id @@ -81,18 +81,20 @@ export function useAuth() { return dadosUsuarioExterno } - async function publicarResposta(mensagem, uid_pergunta, uid_user_logado){ - await db.collection("forum").doc(uid_pergunta).collection("respostas").add({ + + async function publicarResposta(mensagem, id_pergunta, uid_logado){ + await db.collection("forum").doc(id_pergunta).collection("respostas").add({ Data: new Date(), Mensagem: mensagem, Likes: 0, - Criador: uid_user_logado + Criador: uid_logado }).then((novoDocumento) => { - db.collection("forum").doc(uid_pergunta).collection("respostas").doc(novoDocumento.id).update({ + db.collection("forum").doc(id_pergunta).collection("respostas").doc(novoDocumento.id).update({ id: novoDocumento.id }) }) } + async function obterRespostas(uid_pergunta){ let respostas = await db.collection("forum").doc(uid_pergunta).collection("respostas").get().then((querySnapshot) => { diff --git a/front-end/src/pages/Duvidas/Componentes/CardDuvida.js b/front-end/src/pages/Duvidas/Componentes/CardDuvida.js index e471c64..12c0574 100644 --- a/front-end/src/pages/Duvidas/Componentes/CardDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/CardDuvida.js @@ -9,7 +9,7 @@ function CardDuvida(props){ const duvida = props.duvida const navegacao = props.navegacao - console.log("fffffffff",duvida) + console.log(duvida, "adúvida") return( <div className='caixa2' onClick={() => navegacao(duvida)}> diff --git a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js index 0d2d6a4..f55a912 100644 --- a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js +++ b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js @@ -16,6 +16,10 @@ function CardUsuario({uid}){ return obterDados; }, [uid]) + console.log(uid) + + console.log("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", dadosUsuario) + return( <div className={dadosUsuario.tipo === "Administrador" ? 'resposta-professor' : ''}> <p className="nome"> Enviado por <b>{dadosUsuario.nome}</b> </p> diff --git a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js index 8e560ef..3e78380 100644 --- a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js @@ -20,12 +20,12 @@ function PaginaDaDuvida(){ const {obterRespostas} = useAuth(); console.log(obterRespostas) - + console.log("!!!!!!!!!!!!!!!!!!!!!!", state) useEffect(() => { console.log("AQUIIIIIIIIIIIIIIIIIIIII") const respostas = async () => { console.log('YYYYYYYYYY',state) - const todasRespostasTemp = await obterRespostas(state); + const todasRespostasTemp = await obterRespostas(state.id); setTodasRespostas(todasRespostasTemp); console.log(todasRespostasTemp, "WWWWWWWWWWWWWW") } @@ -78,7 +78,7 @@ function PaginaDaDuvida(){ <div className="enviar-msg"> <h3>Enviar uma resposta</h3> - <PublicarTexto funcao={publicarResposta} /> + <PublicarTexto proposito={"resposta"} id_pergunta={state.id} /> </div> </div> </div> diff --git a/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js b/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js index 9451c24..d660e7d 100644 --- a/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js +++ b/front-end/src/pages/Duvidas/Componentes/PublicarTexto.js @@ -11,15 +11,25 @@ function PublicarTexto(props){ const [titulo, setTitulo] = useState("") const [duvida, setDuvida] = useState("") const {publicarPergunta} = useAuth(); + const {publicarResposta} = useAuth(); const uid = useAuth().usuario.uid; + function funcaoApropriada(){ + if(props.proposito=="pergunta"){ + publicarPergunta(titulo, duvida, uid) + } + else if(props.proposito=="resposta"){ + publicarResposta(duvida, props.id_pergunta, uid) + } + } + return( <div> <TextField name="Titulo" placeholder="Titulo" onChange={e => setTitulo(e.target.value)}/> <hr/> <textarea placeholder="Escreva aqui sua dúvida..." onChange={e => setDuvida(e.target.value)} /> <div className="enviar-duvida-button"> - <Button variant="contained" onClick={() => publicarPergunta(titulo, duvida, uid)}>Enviar</Button> + <Button variant="contained" onClick={() => funcaoApropriada()}>Enviar</Button> </div> </div> ) diff --git a/front-end/src/pages/Duvidas/Duvidas.js b/front-end/src/pages/Duvidas/Duvidas.js index d1a3b74..a4ba8a7 100644 --- a/front-end/src/pages/Duvidas/Duvidas.js +++ b/front-end/src/pages/Duvidas/Duvidas.js @@ -24,26 +24,10 @@ function Duvidas({listaDeDuvidas}) { <div className="page-duvidas"> <h1> Dúvidas </h1> <div className="duvidas"> - {listaDeDuvidas.map((duvida, key) => { - console.log(duvida.Criador) + {listaDeDuvidas.map((duvida) => { return ( - <div key={key} className="caixa" onClick={() => irPaginaDuvida(duvida.id)}> - <h2> {duvida.Titulo} </h2> - <div className="foto"> - <CardUsuario uid={duvida.Criador} /> - </div> - <p className="data">Em {converterSegundosEmData(duvida.Data.seconds)}</p> - <div className="like"> - <IconButton aria-label="delete"> - <ThumbUpIcon color="success" fontSize="large" /> - </IconButton> - </div> - - <div className="dislike"> - <IconButton aria-label="delete"> - <ThumbDownAltIcon sx={{ color: 'red' }} fontSize="large" /> - </IconButton> - </div> + <div className="caixa"> + <CardDuvida duvida={duvida} navegacao={irPaginaDuvida} /> </div> ) })} @@ -52,7 +36,7 @@ function Duvidas({listaDeDuvidas}) { <div className="enviar-duvida"> <h3>Enviar uma dúvida</h3> - <PublicarTexto/> + <PublicarTexto proposito={"pergunta"}/> </div> </div> ); -- GitLab From 2e2ca6ebb119d03c58d37578a3d60cca90d69e49 Mon Sep 17 00:00:00 2001 From: j173931 <j173931@dac.unicamp.br> Date: Mon, 5 Dec 2022 21:32:45 -0300 Subject: [PATCH 19/19] excluindo consoles --- front-end/src/componentes/Menu/MenuAdmin.js | 1 - front-end/src/context/AuthContext.js | 21 +++++++++++++------ .../Curso/Componentes/GerarCertificado.js | 2 -- front-end/src/pages/Curso/Curso.js | 2 -- front-end/src/pages/Curso/ObterDados.js | 2 -- .../pages/Duvidas/Componentes/CardDuvida.js | 2 -- .../pages/Duvidas/Componentes/CardUsuario.js | 4 ---- .../Duvidas/Componentes/PaginaDaDuvida.js | 9 -------- front-end/src/pages/Login/Login.js | 1 + front-end/src/pages/Perfil/Perfil.test.js | 2 -- front-end/src/pages/Perfil/PerfilUtils.js | 1 - front-end/src/util/obterDadosPorUID.js | 1 - 12 files changed, 16 insertions(+), 32 deletions(-) diff --git a/front-end/src/componentes/Menu/MenuAdmin.js b/front-end/src/componentes/Menu/MenuAdmin.js index 4f79c68..d819677 100644 --- a/front-end/src/componentes/Menu/MenuAdmin.js +++ b/front-end/src/componentes/Menu/MenuAdmin.js @@ -10,7 +10,6 @@ import {useState, useEffect} from 'react'; function MenuAdmin () { const { logout } = useAuth(); async function sair() { - console.log("SAIR") logout() } const [foto, setFoto] = useState(null); diff --git a/front-end/src/context/AuthContext.js b/front-end/src/context/AuthContext.js index f90cb01..3abc084 100644 --- a/front-end/src/context/AuthContext.js +++ b/front-end/src/context/AuthContext.js @@ -41,6 +41,11 @@ export function useAuth() { return signOut(auth); } + function login(email, senha) { + return signInWithEmailAndPassword(auth, email, senha).then((e) => console.log(e)).catch((a) => console.log(a)); + } + + async function publicarPergunta(titulo, mensagem, uid) { await db.collection("forum").add({ Data: new Date(), @@ -107,19 +112,21 @@ export function useAuth() { }); return document; }) - console.log("ggggggggggggggggggggggg",respostas) return respostas; } useEffect(() => { const unsubscribe = auth.onAuthStateChanged((user) => { + console.log(user) setUsuario(user); - db.collection('usuarios').doc(user.uid).onSnapshot((doc)=>{ - setDadosUsuario(doc.data()) + if(user!=null){ + db.collection('usuarios').doc(user.uid).onSnapshot((doc)=>{ + setDadosUsuario(doc.data()) + }) + db.collection("forum").onSnapshot((docs)=>{ + setQueryDuvidas(docs) }) - db.collection("forum").onSnapshot((docs)=>{ - setQueryDuvidas(docs) - }) + } setLoading(false); }); @@ -139,7 +146,9 @@ export function useAuth() { obterDadosPorUID, publicarResposta, obterRespostas, + login, }; + return ( <AuthContext.Provider value={value}> diff --git a/front-end/src/pages/Curso/Componentes/GerarCertificado.js b/front-end/src/pages/Curso/Componentes/GerarCertificado.js index e81a916..d2bb781 100644 --- a/front-end/src/pages/Curso/Componentes/GerarCertificado.js +++ b/front-end/src/pages/Curso/Componentes/GerarCertificado.js @@ -31,8 +31,6 @@ function GerarCertificado({numeroModulosCompletos, naoCompleto}) { } async function chamarApi(headers, config){ - console.log(headers) - console.log(config) await axios.post(urlApi, config, { headers: headers }).then((response) => { diff --git a/front-end/src/pages/Curso/Curso.js b/front-end/src/pages/Curso/Curso.js index 61d0903..e044fdb 100644 --- a/front-end/src/pages/Curso/Curso.js +++ b/front-end/src/pages/Curso/Curso.js @@ -33,8 +33,6 @@ function Curso() { }) },[uid]) - console.log(modulos) - return ( <div className="App"> <div className="page"> diff --git a/front-end/src/pages/Curso/ObterDados.js b/front-end/src/pages/Curso/ObterDados.js index 79d86b9..88b4b41 100644 --- a/front-end/src/pages/Curso/ObterDados.js +++ b/front-end/src/pages/Curso/ObterDados.js @@ -10,8 +10,6 @@ const location = useLocation() const { numero, concluido } = location.state const dataAtual = new Date().getTime() / 1000; -console.log("Função chamada") - const [aulas, setAulas] = useState([]) const uid = auth.currentUser.uid; diff --git a/front-end/src/pages/Duvidas/Componentes/CardDuvida.js b/front-end/src/pages/Duvidas/Componentes/CardDuvida.js index 12c0574..65a518d 100644 --- a/front-end/src/pages/Duvidas/Componentes/CardDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/CardDuvida.js @@ -9,8 +9,6 @@ function CardDuvida(props){ const duvida = props.duvida const navegacao = props.navegacao - console.log(duvida, "adúvida") - return( <div className='caixa2' onClick={() => navegacao(duvida)}> <h2> {duvida.Titulo} </h2> diff --git a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js index f55a912..0d2d6a4 100644 --- a/front-end/src/pages/Duvidas/Componentes/CardUsuario.js +++ b/front-end/src/pages/Duvidas/Componentes/CardUsuario.js @@ -16,10 +16,6 @@ function CardUsuario({uid}){ return obterDados; }, [uid]) - console.log(uid) - - console.log("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", dadosUsuario) - return( <div className={dadosUsuario.tipo === "Administrador" ? 'resposta-professor' : ''}> <p className="nome"> Enviado por <b>{dadosUsuario.nome}</b> </p> diff --git a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js index 3e78380..2156e04 100644 --- a/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js +++ b/front-end/src/pages/Duvidas/Componentes/PaginaDaDuvida.js @@ -18,16 +18,11 @@ function PaginaDaDuvida(){ const [todasRespostas, setTodasRespostas] = useState([]) const {publicarResposta} = useAuth(); const {obterRespostas} = useAuth(); - console.log(obterRespostas) - console.log("!!!!!!!!!!!!!!!!!!!!!!", state) useEffect(() => { - console.log("AQUIIIIIIIIIIIIIIIIIIIII") const respostas = async () => { - console.log('YYYYYYYYYY',state) const todasRespostasTemp = await obterRespostas(state.id); setTodasRespostas(todasRespostasTemp); - console.log(todasRespostasTemp, "WWWWWWWWWWWWWW") } return respostas; }); @@ -37,9 +32,6 @@ function PaginaDaDuvida(){ nav('/duvidas'); } - console.log(todasRespostas, "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ") - - return( <div className="App"> @@ -57,7 +49,6 @@ function PaginaDaDuvida(){ <div className="respostas"> {todasRespostas?.map((resposta) => { - console.log("eeeeeeeeeeeeeeeeeeeeeeee",resposta) return ( <div className="resposta"> <div className="resposta-msg"> diff --git a/front-end/src/pages/Login/Login.js b/front-end/src/pages/Login/Login.js index 4ad12b2..e159844 100644 --- a/front-end/src/pages/Login/Login.js +++ b/front-end/src/pages/Login/Login.js @@ -93,6 +93,7 @@ function Login() { <div className="button"> <Button + onClick={(e)=>realizarLogin(e)} variant="contained" type="submit" disabled={loading} diff --git a/front-end/src/pages/Perfil/Perfil.test.js b/front-end/src/pages/Perfil/Perfil.test.js index 7c29446..aebf6e9 100644 --- a/front-end/src/pages/Perfil/Perfil.test.js +++ b/front-end/src/pages/Perfil/Perfil.test.js @@ -35,9 +35,7 @@ it('testar validação do cep', () => { const wrapper = renderer.create(<Perfil dadosUsuario={dados} />); const inst = wrapper.root; - console.log(wrapper.root.consultarCep); expect(inst.consultarCep('12060590')===endereco_esperado).toBe(true); - console.log(inst); /*const testRenderer = TestRenderer.create(<Perfil dadosUsuario={dados} />); const testInstance = testRenderer.root; expect(testInstance.consultarCep('12060590')===endereco_esperado).toBe(true);*/ diff --git a/front-end/src/pages/Perfil/PerfilUtils.js b/front-end/src/pages/Perfil/PerfilUtils.js index 6859754..453ca52 100644 --- a/front-end/src/pages/Perfil/PerfilUtils.js +++ b/front-end/src/pages/Perfil/PerfilUtils.js @@ -10,7 +10,6 @@ async function consultarCEP() { fetch(`https://viacep.com.br/ws/${cepFinal}/json/`) .then((res) => res.json()) .then((data) => { - console.log("CEP", data); setDadosUsuarios({...dadosUsuario, rua: data.logradouro}) setDadosUsuarios({...dadosUsuario, bairro: data.bairro}) setDadosUsuarios({...dadosUsuario, cidade: data.cidade}) diff --git a/front-end/src/util/obterDadosPorUID.js b/front-end/src/util/obterDadosPorUID.js index 53ded65..ddc14b4 100644 --- a/front-end/src/util/obterDadosPorUID.js +++ b/front-end/src/util/obterDadosPorUID.js @@ -1,7 +1,6 @@ import { db } from "../services/firebase"; export async function obterDadosPorUID(uid){ - console.log(uid) const dadosUsuario = await db.collection("usuarios").doc(uid).get().then((doc)=>{ return doc.data(); }) -- GitLab