From 0bc8fc1ce2f35e69fc52830988a006a68141a7f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rafael?= Date: Mon, 7 Dec 2020 14:59:14 -0300 Subject: [PATCH 01/64] separei as pastas que trabalharemos --- src/App.js | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/App.js b/src/App.js index ce9cbd2..3eecc0c 100644 --- a/src/App.js +++ b/src/App.js @@ -1,24 +1,9 @@ import React from 'react'; -import logo from './logo.svg'; -import './App.css'; function App() { return (
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
+
); } From 31fb231730164d40558312e83eed613dab922d22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rafael?= Date: Mon, 7 Dec 2020 15:47:30 -0300 Subject: [PATCH 02/64] fiz o global state, rotas e autenticacao --- debug.log | 1 + package-lock.json | 114 +++++++++++++++++++++++++++++++ package.json | 2 + src/App.js | 8 ++- src/global/globalState.js | 19 ++++++ src/global/globalStateContext.js | 5 ++ src/hooks/useProtectedPage.js | 15 ++++ src/hooks/useUnprotectedPage.js | 15 ++++ src/router/router.js | 40 +++++++++++ 9 files changed, 216 insertions(+), 3 deletions(-) create mode 100644 debug.log create mode 100644 src/global/globalState.js create mode 100644 src/global/globalStateContext.js create mode 100644 src/hooks/useProtectedPage.js create mode 100644 src/hooks/useUnprotectedPage.js create mode 100644 src/router/router.js diff --git a/debug.log b/debug.log new file mode 100644 index 0000000..45d3b22 --- /dev/null +++ b/debug.log @@ -0,0 +1 @@ +[1207/150005.674:ERROR:directory_reader_win.cc(43)] FindFirstFile: O sistema não pode encontrar o caminho especificado. (0x3) diff --git a/package-lock.json b/package-lock.json index e8c18b2..5863d7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2437,6 +2437,14 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, + "axios": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", + "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, "axobject-query": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", @@ -6241,6 +6249,19 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -6251,6 +6272,14 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -8153,6 +8182,25 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, + "mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "requires": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, "mini-css-extract-plugin": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", @@ -10648,6 +10696,52 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, "react-scripts": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.1.tgz", @@ -11051,6 +11145,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -12518,6 +12617,16 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12889,6 +12998,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/package.json b/package.json index 2d4ff44..a378c0c 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,10 @@ "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.1", + "axios": "^0.21.0", "react": "^16.13.1", "react-dom": "^16.13.1", + "react-router-dom": "^5.2.0", "react-scripts": "3.4.1" }, "scripts": { diff --git a/src/App.js b/src/App.js index 3eecc0c..48a8e64 100644 --- a/src/App.js +++ b/src/App.js @@ -1,10 +1,12 @@ import React from 'react'; +import Router from "./router/router" +import GlobalState from "./global/globalState" function App() { return ( -
- -
+ + + ); } diff --git a/src/global/globalState.js b/src/global/globalState.js new file mode 100644 index 0000000..e9cf519 --- /dev/null +++ b/src/global/globalState.js @@ -0,0 +1,19 @@ +import React, { useState } from "react" +import GlobalStateContex from "./globalStateContext" + +const GlobalState = (props) =>{ + + + const states = {} + const setters = {} + + const data = {states,setters} + + return( + + {props.children} + + + ) +} +export default GlobalState \ No newline at end of file diff --git a/src/global/globalStateContext.js b/src/global/globalStateContext.js new file mode 100644 index 0000000..5ea1652 --- /dev/null +++ b/src/global/globalStateContext.js @@ -0,0 +1,5 @@ +import React from "react" + +const GlobalStateContext = React.createContext() + +export default GlobalStateContext \ No newline at end of file diff --git a/src/hooks/useProtectedPage.js b/src/hooks/useProtectedPage.js new file mode 100644 index 0000000..b71c550 --- /dev/null +++ b/src/hooks/useProtectedPage.js @@ -0,0 +1,15 @@ +import {useEffect} from "react" +import {useHistory} from "react-router-dom" + +function useProtectedPage(){ + const history = useHistory() + + useEffect(()=>{ + const token = localStorage.getItem("token") + if(!token){ + history.push("/login") + } + }) + +} +export default useProtectedPage \ No newline at end of file diff --git a/src/hooks/useUnprotectedPage.js b/src/hooks/useUnprotectedPage.js new file mode 100644 index 0000000..5773c30 --- /dev/null +++ b/src/hooks/useUnprotectedPage.js @@ -0,0 +1,15 @@ +import {useEffect} from "react" +import {useHistory} from "react-router-dom" + +function useProtectedPage(){ + const history = useHistory() + + useEffect(()=>{ + const token = localStorage.getItem("token") + if(token){ + history.push("/feed") + } + }) + +} +export default useProtectedPage \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js new file mode 100644 index 0000000..005a52f --- /dev/null +++ b/src/router/router.js @@ -0,0 +1,40 @@ +import React from "react" +import {BrowserRouter, Route, Switch} from "react-router-dom" + + +function Router(){ +return( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +) +} +export default Router \ No newline at end of file From 8e936c76f03b12908de0725ca2172c88e0bdcd54 Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Mon, 7 Dec 2020 16:48:16 -0300 Subject: [PATCH 03/64] Criada a pagina de Login, useForm, a pasta contants com a baseURL e o user com os posts de login e signup. --- package-lock.json | 81 +++++++++++++++++++++++++++++++++ package.json | 3 +- src/constants/constants.js | 2 + src/constants/user.js | 28 ++++++++++++ src/hooks/useForm.js | 15 ++++++ src/hooks/useUnprotectedPage.js | 4 +- src/screens/loginPage.js | 50 ++++++++++++++++++++ 7 files changed, 180 insertions(+), 3 deletions(-) create mode 100644 src/constants/constants.js create mode 100644 src/constants/user.js create mode 100644 src/hooks/useForm.js create mode 100644 src/screens/loginPage.js diff --git a/package-lock.json b/package-lock.json index 5863d7f..7e5c9ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1117,6 +1117,29 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -2682,6 +2705,22 @@ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" }, + "babel-plugin-styled-components": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz", + "integrity": "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", @@ -3351,6 +3390,11 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3978,6 +4022,11 @@ "postcss": "^7.0.5" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -4068,6 +4117,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -11623,6 +11682,11 @@ } } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12311,6 +12375,23 @@ } } }, + "styled-components": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.1.tgz", + "integrity": "sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", diff --git a/package.json b/package.json index a378c0c..8ca73ea 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", - "react-scripts": "3.4.1" + "react-scripts": "3.4.1", + "styled-components": "^5.2.1" }, "scripts": { "start": "react-scripts start", diff --git a/src/constants/constants.js b/src/constants/constants.js new file mode 100644 index 0000000..6236fdc --- /dev/null +++ b/src/constants/constants.js @@ -0,0 +1,2 @@ +export const baseUrl = + "https://us-central1-missao-newton.cloudfunctions.net/futureEatsA"; \ No newline at end of file diff --git a/src/constants/user.js b/src/constants/user.js new file mode 100644 index 0000000..28dc907 --- /dev/null +++ b/src/constants/user.js @@ -0,0 +1,28 @@ +import axios from "axios" +import {baseUrl} from "./constants" + + +export const login = (body, history) =>{ +axios.post(`${baseUrl}/login`, body) +.then ((response)=>{ + localStorage.setItem("token", response.data.token) + // goToFeed(history) +}).catch ((error) =>{ + alert ("Deu ruim rapá!") + console.log (error.message) +}) + +} + +export const signUp = (body, history) => { + axios + .post(`${baseUrl}/signup`, body) + .then((response) => { + localStorage.setItem("token", response.data.token); + // goToFeed(history) + }) + .catch((error) => { + alert("Deu ruim rapá!"); + console.log(error.message); + }); +}; \ No newline at end of file diff --git a/src/hooks/useForm.js b/src/hooks/useForm.js new file mode 100644 index 0000000..3556526 --- /dev/null +++ b/src/hooks/useForm.js @@ -0,0 +1,15 @@ +import { useState } from "react"; + +export const useForm = (initialValues) => { + const [form, setForm] = useState(initialValues); + + const onChange = (value, name) => { + setForm({ ...form, [name]: value }); + }; + + const resetForm = () => { + setForm(initialValues); + }; + + return { form, onChange, resetForm }; +}; diff --git a/src/hooks/useUnprotectedPage.js b/src/hooks/useUnprotectedPage.js index 5773c30..f274234 100644 --- a/src/hooks/useUnprotectedPage.js +++ b/src/hooks/useUnprotectedPage.js @@ -1,7 +1,7 @@ import {useEffect} from "react" import {useHistory} from "react-router-dom" -function useProtectedPage(){ +function useUnProtectedPage(){ const history = useHistory() useEffect(()=>{ @@ -12,4 +12,4 @@ function useProtectedPage(){ }) } -export default useProtectedPage \ No newline at end of file +export default useUnProtectedPage \ No newline at end of file diff --git a/src/screens/loginPage.js b/src/screens/loginPage.js new file mode 100644 index 0000000..73f4b23 --- /dev/null +++ b/src/screens/loginPage.js @@ -0,0 +1,50 @@ +import React from "react" +import { useHistory } from "react-router-dom" +import { login } from "../constants/user" +import { useForm } from "../hooks/useForm" +import { useUnProtectedPage } from "../hooks/useUnprotectedPage"; + +function LoginPage(){ +useUnProtectedPage(); +const history = useHistory() +const {form, onChange} = useForm({email: "", password: ""}) + +const handleInputChange = (event) =>{ + const {value, name} = event.target + onChange(value, name) +} + +const handleSubmit = (event)=>{ + event.preventDefault() + login(form, history) +} + + return ( +
+
+ + + + +
+ + Não possui cadastro? Clique aqui! +
+ ); + + +} + +export default LoginPage \ No newline at end of file From decc2d6a2715a32deb07619fa20624cb04ed5050 Mon Sep 17 00:00:00 2001 From: rafae Date: Mon, 7 Dec 2020 16:51:28 -0300 Subject: [PATCH 04/64] Redirecionamento temporizado --- package-lock.json | 81 ++++++++++++++++++++++++++ package.json | 3 +- src/hooks/useUnprotectedPage.js | 4 +- src/router/coordinator.js | 11 ++++ src/router/router.js | 43 +++++++------- src/screens/InitialPage/InitialPage.js | 26 +++++++++ src/screens/InitialPage/styles.js | 14 +++++ 7 files changed, 158 insertions(+), 24 deletions(-) create mode 100644 src/router/coordinator.js create mode 100644 src/screens/InitialPage/InitialPage.js create mode 100644 src/screens/InitialPage/styles.js diff --git a/package-lock.json b/package-lock.json index 5863d7f..7e5c9ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1117,6 +1117,29 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -2682,6 +2705,22 @@ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" }, + "babel-plugin-styled-components": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz", + "integrity": "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", @@ -3351,6 +3390,11 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3978,6 +4022,11 @@ "postcss": "^7.0.5" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -4068,6 +4117,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -11623,6 +11682,11 @@ } } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12311,6 +12375,23 @@ } } }, + "styled-components": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.1.tgz", + "integrity": "sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", diff --git a/package.json b/package.json index a378c0c..8ca73ea 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", - "react-scripts": "3.4.1" + "react-scripts": "3.4.1", + "styled-components": "^5.2.1" }, "scripts": { "start": "react-scripts start", diff --git a/src/hooks/useUnprotectedPage.js b/src/hooks/useUnprotectedPage.js index 5773c30..8c3f889 100644 --- a/src/hooks/useUnprotectedPage.js +++ b/src/hooks/useUnprotectedPage.js @@ -1,7 +1,7 @@ import {useEffect} from "react" import {useHistory} from "react-router-dom" -function useProtectedPage(){ +function useUnprotectedPage(){ const history = useHistory() useEffect(()=>{ @@ -12,4 +12,4 @@ function useProtectedPage(){ }) } -export default useProtectedPage \ No newline at end of file +export default useUnprotectedPage \ No newline at end of file diff --git a/src/router/coordinator.js b/src/router/coordinator.js new file mode 100644 index 0000000..0becf1f --- /dev/null +++ b/src/router/coordinator.js @@ -0,0 +1,11 @@ +export const goToFeedPage = (history) => { + history.push('/feed') +} + +export const goToLoginPage = (history) => { + history.push('/login') +} + +export const goToSignUpPage = (history) => { + history.push('/signup') +} \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 005a52f..a8cbacf 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -1,39 +1,40 @@ import React from "react" import {BrowserRouter, Route, Switch} from "react-router-dom" +import InitialPage from "../screens/InitialPage/InitialPage" function Router(){ return( - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + ) } diff --git a/src/screens/InitialPage/InitialPage.js b/src/screens/InitialPage/InitialPage.js new file mode 100644 index 0000000..49a1aec --- /dev/null +++ b/src/screens/InitialPage/InitialPage.js @@ -0,0 +1,26 @@ +import React, { useEffect } from 'react' +import { useHistory } from 'react-router-dom' +import { goToLoginPage } from '../../router/coordinator' +import { InitialPageContainer, Title } from './styles' + +const InitialPage = () => { + + useEffect(()=>{ + setTimeout(RedirectToLogin, 6000); + },[]) + + const history = useHistory() + function RedirectToLogin() { + goToLoginPage(history) + } + + return ( + + + FutureEats + + + ) +} + +export default InitialPage \ No newline at end of file diff --git a/src/screens/InitialPage/styles.js b/src/screens/InitialPage/styles.js new file mode 100644 index 0000000..9b6e262 --- /dev/null +++ b/src/screens/InitialPage/styles.js @@ -0,0 +1,14 @@ +import styled from 'styled-components' + +export const InitialPageContainer = styled.div ` + display: flex; + justify-content: center; + align-items: center; + background-color: black; + width: 100vw; + height: 100vh; + margin: 0 auto; +` +export const Title = styled.h1 ` + color: white; +` \ No newline at end of file From 26f2df60b34b261ab0373e36d7732e1d68a3c223 Mon Sep 17 00:00:00 2001 From: rafae Date: Mon, 7 Dec 2020 17:25:06 -0300 Subject: [PATCH 05/64] =?UTF-8?q?Estiliza=C3=A7=C3=A3o=20da=20Tela=20Inici?= =?UTF-8?q?al=20e=20cria=C3=A7=C3=A3o=20de=20componente=20Header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/Header.js | 12 ++++++++++++ src/components/Header/styles.js | 0 src/screens/InitialPage/styles.js | 9 +++++---- 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 src/components/Header/Header.js create mode 100644 src/components/Header/styles.js diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js new file mode 100644 index 0000000..7401743 --- /dev/null +++ b/src/components/Header/Header.js @@ -0,0 +1,12 @@ +import React from 'react' + +const Header = () => { + + return ( +
+ +

Título da Página

+
+ ) + +} \ No newline at end of file diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js new file mode 100644 index 0000000..e69de29 diff --git a/src/screens/InitialPage/styles.js b/src/screens/InitialPage/styles.js index 9b6e262..4af7500 100644 --- a/src/screens/InitialPage/styles.js +++ b/src/screens/InitialPage/styles.js @@ -4,10 +4,11 @@ export const InitialPageContainer = styled.div ` display: flex; justify-content: center; align-items: center; - background-color: black; - width: 100vw; - height: 100vh; - margin: 0 auto; + width: 360px; + height: 640px; + padding: 288px 117px 287px; + background-color: #000000; + margin: auto; ` export const Title = styled.h1 ` color: white; From f19e13e4c3419689994c33a63e3d2b7df71ce46c Mon Sep 17 00:00:00 2001 From: rafae Date: Mon, 7 Dec 2020 17:34:23 -0300 Subject: [PATCH 06/64] =?UTF-8?q?Estiliza=C3=A7=C3=A3o=20da=20tela=20inici?= =?UTF-8?q?al=20e=20cria=C3=A7=C3=A3o=20de=20Header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/Header.js | 2 +- src/components/Header/styles.js | 1 + src/screens/InitialPage/InitialPage.js | 2 +- src/screens/InitialPage/styles.js | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 7401743..36d982f 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -8,5 +8,5 @@ const Header = () => {

Título da Página

) - + } \ No newline at end of file diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js index e69de29..0e8e6cd 100644 --- a/src/components/Header/styles.js +++ b/src/components/Header/styles.js @@ -0,0 +1 @@ +import styled from 'styled-components' \ No newline at end of file diff --git a/src/screens/InitialPage/InitialPage.js b/src/screens/InitialPage/InitialPage.js index 49a1aec..d6266c8 100644 --- a/src/screens/InitialPage/InitialPage.js +++ b/src/screens/InitialPage/InitialPage.js @@ -4,7 +4,7 @@ import { goToLoginPage } from '../../router/coordinator' import { InitialPageContainer, Title } from './styles' const InitialPage = () => { - + useEffect(()=>{ setTimeout(RedirectToLogin, 6000); },[]) diff --git a/src/screens/InitialPage/styles.js b/src/screens/InitialPage/styles.js index 4af7500..3e50f88 100644 --- a/src/screens/InitialPage/styles.js +++ b/src/screens/InitialPage/styles.js @@ -12,4 +12,4 @@ export const InitialPageContainer = styled.div ` ` export const Title = styled.h1 ` color: white; -` \ No newline at end of file +` \ No newline at end of file From 9b46019badd14ade197cd1c2895eee5d47636f7b Mon Sep 17 00:00:00 2001 From: rafae Date: Mon, 7 Dec 2020 17:39:44 -0300 Subject: [PATCH 07/64] =?UTF-8?q?Estiliza=C3=A7=C3=A3o=20de=20tela=20inici?= =?UTF-8?q?al=20e=20cria=C3=A7=C3=A3o=20de=20Header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/Header.js | 2 +- src/components/Header/styles.js | 2 +- src/screens/InitialPage/styles.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 36d982f..7401743 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -8,5 +8,5 @@ const Header = () => {

Título da Página

) - + } \ No newline at end of file diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js index 0e8e6cd..5e94b74 100644 --- a/src/components/Header/styles.js +++ b/src/components/Header/styles.js @@ -1 +1 @@ -import styled from 'styled-components' \ No newline at end of file +import styled from 'styled-components' diff --git a/src/screens/InitialPage/styles.js b/src/screens/InitialPage/styles.js index 3e50f88..0cc69d3 100644 --- a/src/screens/InitialPage/styles.js +++ b/src/screens/InitialPage/styles.js @@ -12,4 +12,4 @@ export const InitialPageContainer = styled.div ` ` export const Title = styled.h1 ` color: white; -` \ No newline at end of file +` From bc5952d46cb9d885de67f2dd0b74514d60afaacd Mon Sep 17 00:00:00 2001 From: rafae Date: Mon, 7 Dec 2020 17:47:43 -0300 Subject: [PATCH 08/64] =?UTF-8?q?Cria=C3=A7=C3=A3o=20de=20Header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/Header.js | 11 +++++++++++ src/components/Header/styles.js | 1 + src/screens/InitialPage/styles.js | 7 ++++--- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 src/components/Header/Header.js create mode 100644 src/components/Header/styles.js diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js new file mode 100644 index 0000000..906ca75 --- /dev/null +++ b/src/components/Header/Header.js @@ -0,0 +1,11 @@ +import React from 'react' + +const Header = () => { + + return ( +
+ +

Título da Página

+
+ ) +} \ No newline at end of file diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js new file mode 100644 index 0000000..0e8e6cd --- /dev/null +++ b/src/components/Header/styles.js @@ -0,0 +1 @@ +import styled from 'styled-components' \ No newline at end of file diff --git a/src/screens/InitialPage/styles.js b/src/screens/InitialPage/styles.js index 9b6e262..ce922e9 100644 --- a/src/screens/InitialPage/styles.js +++ b/src/screens/InitialPage/styles.js @@ -4,9 +4,10 @@ export const InitialPageContainer = styled.div ` display: flex; justify-content: center; align-items: center; - background-color: black; - width: 100vw; - height: 100vh; + width: 360px; + height: 640px; + padding: 288px 117px 287px; + background-color: #000000; margin: 0 auto; ` export const Title = styled.h1 ` From 2bf970de383b5e385c50b5805abccd1239ace3cc Mon Sep 17 00:00:00 2001 From: rafae Date: Mon, 7 Dec 2020 18:13:47 -0300 Subject: [PATCH 09/64] logotipo --- src/assets/img/logo-future-eats.png | Bin 0 -> 3821 bytes src/assets/img/logo-future-eats@2x.png | Bin 0 -> 7482 bytes src/assets/img/logo-future-eats@3x.png | Bin 0 -> 11355 bytes src/screens/InitialPage/InitialPage.js | 7 +++---- src/screens/InitialPage/styles.js | 5 +++++ 5 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 src/assets/img/logo-future-eats.png create mode 100644 src/assets/img/logo-future-eats@2x.png create mode 100644 src/assets/img/logo-future-eats@3x.png diff --git a/src/assets/img/logo-future-eats.png b/src/assets/img/logo-future-eats.png new file mode 100644 index 0000000000000000000000000000000000000000..f551f292f99660392a11330d92c667c084b31dd0 GIT binary patch literal 3821 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/logo-future-eats@3x.png b/src/assets/img/logo-future-eats@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7847d6465e7b515a5a870878d9d5b1fe864264cd GIT binary patch literal 11355 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 literal 0 HcmV?d00001 diff --git a/src/screens/InitialPage/InitialPage.js b/src/screens/InitialPage/InitialPage.js index 49a1aec..6930448 100644 --- a/src/screens/InitialPage/InitialPage.js +++ b/src/screens/InitialPage/InitialPage.js @@ -1,7 +1,8 @@ import React, { useEffect } from 'react' import { useHistory } from 'react-router-dom' import { goToLoginPage } from '../../router/coordinator' -import { InitialPageContainer, Title } from './styles' +import { InitialPageContainer, Logo_FutureEats, Title } from './styles' +import InitialLogo from '../../assets/img/logo-future-eats.png' const InitialPage = () => { @@ -16,9 +17,7 @@ const InitialPage = () => { return ( - - FutureEats - + ) } diff --git a/src/screens/InitialPage/styles.js b/src/screens/InitialPage/styles.js index ce922e9..9accd46 100644 --- a/src/screens/InitialPage/styles.js +++ b/src/screens/InitialPage/styles.js @@ -12,4 +12,9 @@ export const InitialPageContainer = styled.div ` ` export const Title = styled.h1 ` color: white; +` +export const Logo_FutureEats = styled.img ` + width: 126px; + height: 65px; + object-fit: contain; ` \ No newline at end of file From f2a79b7c4bb3655ec06a9dfd78789cc999e60710 Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Mon, 7 Dec 2020 20:20:37 -0300 Subject: [PATCH 10/64] ajustes na pagina de login e router, aguardando a pagina de signup para dar andamento --- src/constants/user.js | 5 +++-- src/router/router.js | 2 ++ src/screens/{ => loginPage}/loginPage.js | 13 +++++++++---- src/screens/loginPage/styled.js | 7 +++++++ 4 files changed, 21 insertions(+), 6 deletions(-) rename src/screens/{ => loginPage}/loginPage.js (71%) create mode 100644 src/screens/loginPage/styled.js diff --git a/src/constants/user.js b/src/constants/user.js index 28dc907..4d23184 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -1,12 +1,13 @@ import axios from "axios" import {baseUrl} from "./constants" +import { goToFeedPage } from "../router/coordinator" export const login = (body, history) =>{ axios.post(`${baseUrl}/login`, body) .then ((response)=>{ localStorage.setItem("token", response.data.token) - // goToFeed(history) + goToFeedPage(history); }).catch ((error) =>{ alert ("Deu ruim rapá!") console.log (error.message) @@ -19,7 +20,7 @@ export const signUp = (body, history) => { .post(`${baseUrl}/signup`, body) .then((response) => { localStorage.setItem("token", response.data.token); - // goToFeed(history) + goToFeedPage(history); }) .catch((error) => { alert("Deu ruim rapá!"); diff --git a/src/router/router.js b/src/router/router.js index a8cbacf..252d813 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -1,6 +1,7 @@ import React from "react" import {BrowserRouter, Route, Switch} from "react-router-dom" import InitialPage from "../screens/InitialPage/InitialPage" +import LoginPage from "../screens/loginPage/loginPage" function Router(){ @@ -14,6 +15,7 @@ return( + diff --git a/src/screens/loginPage.js b/src/screens/loginPage/loginPage.js similarity index 71% rename from src/screens/loginPage.js rename to src/screens/loginPage/loginPage.js index 73f4b23..3bbdf4f 100644 --- a/src/screens/loginPage.js +++ b/src/screens/loginPage/loginPage.js @@ -1,8 +1,11 @@ import React from "react" import { useHistory } from "react-router-dom" -import { login } from "../constants/user" -import { useForm } from "../hooks/useForm" -import { useUnProtectedPage } from "../hooks/useUnprotectedPage"; +import { login } from "../../constants/user" +import { useForm } from "../../hooks/useForm" +import useUnProtectedPage from "../../hooks/useUnprotectedPage"; +import {goToSignUpPage} from "../../router/coordinator" +// import {LoginContainer} from "./styled" + function LoginPage(){ useUnProtectedPage(); @@ -40,7 +43,9 @@ const handleSubmit = (event)=>{ - Não possui cadastro? Clique aqui! + goToSignUpPage(history)}> + Não possui cadastro? Clique aqui! + ); diff --git a/src/screens/loginPage/styled.js b/src/screens/loginPage/styled.js new file mode 100644 index 0000000..78966b7 --- /dev/null +++ b/src/screens/loginPage/styled.js @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +export const LoginContainer = styled.div` + width: 360px; + height: 640px; + padding: 0 0 184px; +` From 97b9c176728fe4f9593ae03bb6501b26f3af02c5 Mon Sep 17 00:00:00 2001 From: rafae Date: Tue, 8 Dec 2020 09:22:47 -0300 Subject: [PATCH 11/64] Logo animado --- src/components/Header/Header.js | 4 ++- src/components/Loading/Loading.js | 14 ++++++++ src/components/Loading/styels.js | 44 ++++++++++++++++++++++++++ src/screens/InitialPage/InitialPage.js | 12 +++---- 4 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 src/components/Loading/Loading.js create mode 100644 src/components/Loading/styels.js diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 906ca75..e7d5417 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -8,4 +8,6 @@ const Header = () => {

Título da Página

) -} \ No newline at end of file +} + +export default Header \ No newline at end of file diff --git a/src/components/Loading/Loading.js b/src/components/Loading/Loading.js new file mode 100644 index 0000000..709f1d3 --- /dev/null +++ b/src/components/Loading/Loading.js @@ -0,0 +1,14 @@ +import React from 'react' +import InitialLogo from '../../assets/img/logo-future-eats.png' +import { AppLogo, LogoContainer } from './styels' + +const Loading = () => { + + return ( + + + + ) +} + +export default Loading \ No newline at end of file diff --git a/src/components/Loading/styels.js b/src/components/Loading/styels.js new file mode 100644 index 0000000..981a31b --- /dev/null +++ b/src/components/Loading/styels.js @@ -0,0 +1,44 @@ +import styled, { keyframes } from 'styled-components' + +export const LogoContainer = styled.div ` + background-color: transparent; +` +export const AppLogoMove = keyframes ` + 0% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 10% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 20% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 30% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 40% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 50% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 60% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 70% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 80% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 90% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 100% { + transform: scaleX(0.80) scaleY(0.80) ; + } +` +export const AppLogo = styled.img ` + pointer-events: none; + animation: ${AppLogoMove} infinite 15s linear; +` \ No newline at end of file diff --git a/src/screens/InitialPage/InitialPage.js b/src/screens/InitialPage/InitialPage.js index ae692f6..3035371 100644 --- a/src/screens/InitialPage/InitialPage.js +++ b/src/screens/InitialPage/InitialPage.js @@ -1,13 +1,13 @@ import React, { useEffect } from 'react' import { useHistory } from 'react-router-dom' import { goToLoginPage } from '../../router/coordinator' -import { InitialPageContainer, Logo_FutureEats, Title } from './styles' -import InitialLogo from '../../assets/img/logo-future-eats.png' +import { InitialPageContainer } from './styles' +import Loading from '../../components/Loading/Loading' const InitialPage = () => { useEffect(()=>{ - setTimeout(RedirectToLogin, 6000); + setTimeout(RedirectToLogin, 4500); },[]) const history = useHistory() @@ -16,9 +16,9 @@ const InitialPage = () => { } return ( - - - + + + ) } From cf8abd19969a47ca5e29109e3b6718ec5c2d1de4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Tue, 8 Dec 2020 12:25:29 -0300 Subject: [PATCH 12/64] =?UTF-8?q?P=C3=A1gina=20de=20cadastro=20funcionando?= =?UTF-8?q?.=20P=C3=A1gina=20de=20endere=C3=A7o=20dando=20erro=20401.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/user.js | 31 ++++++- src/router/coordinator.js | 6 +- src/router/router.js | 7 +- src/screens/addressPage/addressPage.js | 86 +++++++++++++++++++ src/screens/addressPage/styles.js | 0 src/screens/signupPage/signupPage.js | 110 +++++++++++++++++++++++++ src/screens/signupPage/styles.js | 0 7 files changed, 234 insertions(+), 6 deletions(-) create mode 100644 src/screens/addressPage/addressPage.js create mode 100644 src/screens/addressPage/styles.js create mode 100644 src/screens/signupPage/signupPage.js create mode 100644 src/screens/signupPage/styles.js diff --git a/src/constants/user.js b/src/constants/user.js index 4d23184..10e71af 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -1,7 +1,12 @@ import axios from "axios" import {baseUrl} from "./constants" -import { goToFeedPage } from "../router/coordinator" +import { goToFeedPage, goToAdressPage } from "../router/coordinator" +const axiosConfig = { + headers: { + Authorization: localStorage.getItem('token') + } +} export const login = (body, history) =>{ axios.post(`${baseUrl}/login`, body) @@ -20,10 +25,30 @@ export const signUp = (body, history) => { .post(`${baseUrl}/signup`, body) .then((response) => { localStorage.setItem("token", response.data.token); - goToFeedPage(history); + goToAdressPage(history); }) .catch((error) => { alert("Deu ruim rapá!"); console.log(error.message); }); -}; \ No newline at end of file +}; + +export const Address = (body, history) => { + + axios + .put(`${baseUrl}/address`, body, axiosConfig) + + .then ((response)=>{ + localStorage.setItem('token', response.data.token) + alert("Endereço cadastro com sucesso!") + goToFeedPage(history) + + }) + + .catch((error)=>{ + alert("Deu ruim rapá!") + console.log(error) + }) + + +} \ No newline at end of file diff --git a/src/router/coordinator.js b/src/router/coordinator.js index 0becf1f..5aa39af 100644 --- a/src/router/coordinator.js +++ b/src/router/coordinator.js @@ -8,4 +8,8 @@ export const goToLoginPage = (history) => { export const goToSignUpPage = (history) => { history.push('/signup') -} \ No newline at end of file +} + +export const goToAdressPage = (history) => { + history.push ('/endereco') +} \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 252d813..687527f 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -1,7 +1,9 @@ import React from "react" import {BrowserRouter, Route, Switch} from "react-router-dom" +import AddressPage from "../screens/addressPage/addressPage" import InitialPage from "../screens/InitialPage/InitialPage" import LoginPage from "../screens/loginPage/loginPage" +import SignupPage from "../screens/signupPage/signupPage" function Router(){ @@ -12,7 +14,7 @@ return(
- + @@ -31,8 +33,9 @@ return( - + + diff --git a/src/screens/addressPage/addressPage.js b/src/screens/addressPage/addressPage.js new file mode 100644 index 0000000..7a6478c --- /dev/null +++ b/src/screens/addressPage/addressPage.js @@ -0,0 +1,86 @@ +import React from 'react' +import { Address } from '../../constants/user' +import {useForm} from '../../hooks/useForm' +import { useHistory } from 'react-router-dom' +import useProtectedPage from '../../hooks/useProtectedPage' + + + +const AddressPage = () => { + + useProtectedPage() + + const history = useHistory() + const { form, onChange } = useForm({ street: "", number: "", neighbourhood: "", city: "", state: "", complement: "" }) + + const handleInput = (event) => { + const { value, name } = event.target + onChange(value, name) + } + + const handleSubmit = (event) => { + event.preventDefault() + Address(form, history) + } + + return ( +
+ +
+ + + + + + + + + + + + + +
+ +
+ ) +} + +export default AddressPage \ No newline at end of file diff --git a/src/screens/addressPage/styles.js b/src/screens/addressPage/styles.js new file mode 100644 index 0000000..e69de29 diff --git a/src/screens/signupPage/signupPage.js b/src/screens/signupPage/signupPage.js new file mode 100644 index 0000000..5c55cb4 --- /dev/null +++ b/src/screens/signupPage/signupPage.js @@ -0,0 +1,110 @@ +import React from 'react' +import { useHistory } from 'react-router-dom' +import { useForm } from '../../hooks/useForm' +import { signUp } from '../../constants/user' +import { goToAdressPage } from '../../router/coordinator' +import useUnProtectedPage from '../../hooks/useUnprotectedPage' + +const SignupPage = () => { + + useUnProtectedPage() + + const history = useHistory() + + + const { form, onChange } = useForm({ name: "", email: "", cpf: "", password: "", confirmPassword: "" }) + + const handleInput = (event) => { + const { value, name } = event.target + + onChange(value, name) + } + + const handleSubmit = (event) => { + signUp(form, history) + } + + const validate = (event) => { + + const passwordOne = form.password + const passwordTwo = form.confirmPassword + event.preventDefault() + + if(passwordOne === passwordTwo) { + handleSubmit() + alert("Tudo certo!") + + } else { + alert("As senhas digitadas não são iguais!") + } + } + + return ( + +
+ +
+ + + + + + + + + + + + + +
+ + + + + +
+ ) + +} + +export default SignupPage \ No newline at end of file diff --git a/src/screens/signupPage/styles.js b/src/screens/signupPage/styles.js new file mode 100644 index 0000000..e69de29 From 1299915f4efbcd0a27601187087e7b0134ba091b Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Tue, 8 Dec 2020 13:01:19 -0300 Subject: [PATCH 13/64] =?UTF-8?q?Inicio=20da=20implementa=C3=A7=C3=A3o=20d?= =?UTF-8?q?o=20styled=20na=20pagina=20de=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/user.js | 22 ++++--- src/screens/loginPage/loginPage.js | 97 ++++++++++++++++++----------- src/screens/loginPage/styled.js | 99 +++++++++++++++++++++++++++++- 3 files changed, 173 insertions(+), 45 deletions(-) diff --git a/src/constants/user.js b/src/constants/user.js index 4d23184..d20a17f 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -1,19 +1,25 @@ import axios from "axios" import {baseUrl} from "./constants" -import { goToFeedPage } from "../router/coordinator" +import { goToFeedPage, goToSignUpPage } from "../router/coordinator" export const login = (body, history) =>{ axios.post(`${baseUrl}/login`, body) .then ((response)=>{ - localStorage.setItem("token", response.data.token) - goToFeedPage(history); -}).catch ((error) =>{ - alert ("Deu ruim rapá!") - console.log (error.message) -}) + localStorage.setItem('user', response.data.user) + localStorage.setItem('token', response.data.token) -} + if(response.data.user.hasAddress){ + goToFeedPage(history) + }else{ + goToSignUpPage(history) + } + + }).catch(error=>{ + alert ("Deu ruim rapá!") + console.log(error.message) + }) + } export const signUp = (body, history) => { axios diff --git a/src/screens/loginPage/loginPage.js b/src/screens/loginPage/loginPage.js index 3bbdf4f..743808e 100644 --- a/src/screens/loginPage/loginPage.js +++ b/src/screens/loginPage/loginPage.js @@ -1,55 +1,80 @@ -import React from "react" -import { useHistory } from "react-router-dom" -import { login } from "../../constants/user" -import { useForm } from "../../hooks/useForm" -import useUnProtectedPage from "../../hooks/useUnprotectedPage"; -import {goToSignUpPage} from "../../router/coordinator" -// import {LoginContainer} from "./styled" - - -function LoginPage(){ -useUnProtectedPage(); -const history = useHistory() -const {form, onChange} = useForm({email: "", password: ""}) - -const handleInputChange = (event) =>{ - const {value, name} = event.target - onChange(value, name) -} +import React from "react"; +import { useHistory } from "react-router-dom"; +import { login } from "../../constants/user"; +import { useForm } from "../../hooks/useForm"; +import useUnProtectedPage from "../../hooks/useUnprotectedPage"; +import { goToSignUpPage } from "../../router/coordinator"; +import logo from "../../assets/img/logo-future-eats.png"; +import { + LoginContainer, + Logo, + TextLogin, + Title, + RectanglePassword, + RectangleEmail, + Input, + Button, + TextRegister, + DivRegister, + +} from "../loginPage/styled"; -const handleSubmit = (event)=>{ - event.preventDefault() - login(form, history) -} +function LoginPage() { + useUnProtectedPage(); + const history = useHistory(); + const { form, onChange } = useForm({ email: "", password: "" }); + + const handleInputChange = (event) => { + const { value, name } = event.target; + onChange(value, name); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + login(form, history); + }; - return ( -
-
- + + + <TextLogin>Entrar</TextLogin> + + + + + + - + - - + + + + + - goToSignUpPage(history)}> + + goToSignUpPage(history)}> Não possui cadastro? Clique aqui! - -
- ); - - + + + + ); } -export default LoginPage \ No newline at end of file +export default LoginPage; diff --git a/src/screens/loginPage/styled.js b/src/screens/loginPage/styled.js index 78966b7..5a522a8 100644 --- a/src/screens/loginPage/styled.js +++ b/src/screens/loginPage/styled.js @@ -4,4 +4,101 @@ export const LoginContainer = styled.div` width: 360px; height: 640px; padding: 0 0 184px; -` + background-color: pink; +`; + +export const Logo = styled.img` +width: 104px; + height: 58px; + margin: 68px 128px 16px; + object-fit: contain; + +` + +export const Title = styled.div` + width: 360px; + height: 42px; + margin: 16px 0 0; + padding: 12px 32px; +`; + +export const TextLogin = styled.p` + width: 296px; + height: 18px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + text-align: center; + color: #000000; +`; + +export const RectangleEmail = styled.div` + width: 328px; + height: 56px; + margin: 8px 0 0; + padding: 19px 48px 19px 16px; + border-radius: 2px; + border: solid 1px var(--greyish); +`; + + export const RectanglePassword = styled.div` + width: 328px; + height: 56px; + margin: 8px 0 0; + padding: 16px; + border-radius: 2px; + border: solid 1px var(--greyish); + `; + +export const Input = styled.input` + width: 264px; + height: 18px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #d0d0d0; +`; + +export const Button = styled.button` + width: 328px; + height: 42px; + padding: 12px 16px; + border-radius: 2px; + background-color: #5cb646; + +`; + + + +export const TextRegister = styled.p` + width: 296px; + height: 18px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + text-align: center; + color: #000000; +`; + + + +export const DivRegister = styled.div` + width: 360px; + height: 42px; + margin: 16px 0 0; + padding: 12px 32px; +`; + + From 09ff8fb0dfb9b0d872e613114106cb73be3da079 Mon Sep 17 00:00:00 2001 From: rafae Date: Tue, 8 Dec 2020 13:34:24 -0300 Subject: [PATCH 14/64] =?UTF-8?q?Cria=C3=A7=C3=A3o=20de=20FeedPage=20e=20C?= =?UTF-8?q?ardFeed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 244 ++++++++++++++++++ package.json | 2 + src/assets/img/logo-future-eats-invert.png | Bin 0 -> 3154 bytes src/assets/img/logo-future-eats-invert@2x.png | Bin 0 -> 6013 bytes src/assets/img/logo-future-eats-invert@3x.png | Bin 0 -> 9110 bytes src/components/CardFeed/CardFeed.js | 33 +++ src/components/CardFeed/styles.js | 0 src/components/Header/Header.js | 11 +- src/components/Header/styles.js | 13 + src/hooks/useRequestData.js | 0 src/router/router.js | 4 +- src/screens/FeedPage/FeedPage.js | 47 ++++ src/screens/FeedPage/styles.js | 11 + 13 files changed, 359 insertions(+), 6 deletions(-) create mode 100644 src/assets/img/logo-future-eats-invert.png create mode 100644 src/assets/img/logo-future-eats-invert@2x.png create mode 100644 src/assets/img/logo-future-eats-invert@3x.png create mode 100644 src/components/CardFeed/CardFeed.js create mode 100644 src/components/CardFeed/styles.js create mode 100644 src/hooks/useRequestData.js create mode 100644 src/screens/FeedPage/FeedPage.js create mode 100644 src/screens/FeedPage/styles.js diff --git a/package-lock.json b/package-lock.json index 7e5c9ac..dfcee96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1117,6 +1117,11 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, "@emotion/is-prop-valid": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", @@ -1365,6 +1370,82 @@ "@types/yargs": "^13.0.0" } }, + "@material-ui/core": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.2.tgz", + "integrity": "sha512-/D1+AQQeYX/WhT/FUk78UCRj8ch/RCglsQLYujYTIqPSJlwZHKcvHidNeVhODXeApojeXjkl0tWdk5C9ofwOkQ==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.11.2", + "@material-ui/system": "^4.11.2", + "@material-ui/types": "^5.1.0", + "@material-ui/utils": "^4.11.2", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "1.16.1-lts", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0", + "react-transition-group": "^4.4.0" + } + }, + "@material-ui/icons": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz", + "integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==", + "requires": { + "@babel/runtime": "^7.4.4" + } + }, + "@material-ui/styles": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.2.tgz", + "integrity": "sha512-xbItf8zkfD3FuGoD9f2vlcyPf9jTEtj9YTJoNNV+NMWaSAHXgrW6geqRoo/IwBuMjqpwqsZhct13e2nUyU9Ljw==", + "requires": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "^5.1.0", + "@material-ui/utils": "^4.11.2", + "clsx": "^1.0.4", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.0.3", + "jss-plugin-camel-case": "^10.0.3", + "jss-plugin-default-unit": "^10.0.3", + "jss-plugin-global": "^10.0.3", + "jss-plugin-nested": "^10.0.3", + "jss-plugin-props-sort": "^10.0.3", + "jss-plugin-rule-value-function": "^10.0.3", + "jss-plugin-vendor-prefixer": "^10.0.3", + "prop-types": "^15.7.2" + } + }, + "@material-ui/system": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.11.2.tgz", + "integrity": "sha512-BELFJEel5E+5DMiZb6XXT3peWRn6UixRvBtKwSxqntmD0+zwbbfCij6jtGwwdJhN1qX/aXrKu10zX31GBaeR7A==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.11.2", + "csstype": "^2.5.2", + "prop-types": "^15.7.2" + } + }, + "@material-ui/types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" + }, + "@material-ui/utils": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", + "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", + "requires": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0" + } + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -1748,6 +1829,14 @@ "@types/react": "*" } }, + "@types/react-transition-group": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", + "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", + "requires": { + "@types/react": "*" + } + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -3629,6 +3718,11 @@ "shallow-clone": "^0.1.2" } }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4143,6 +4237,15 @@ } } }, + "css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "requires": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, "css-what": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", @@ -4602,6 +4705,22 @@ "utila": "~0.4" } }, + "dom-helpers": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", + "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", + "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + } + } + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -6542,6 +6661,11 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -6625,6 +6749,14 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "indefinite-observable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz", + "integrity": "sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ==", + "requires": { + "symbol-observable": "1.2.0" + } + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -6910,6 +7042,11 @@ "is-extglob": "^2.1.1" } }, + "is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -7767,6 +7904,92 @@ "verror": "1.10.0" } }, + "jss": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.5.0.tgz", + "integrity": "sha512-B6151NvG+thUg3murLNHRPLxTLwQ13ep4SH5brj4d8qKtogOx/jupnpfkPGSHPqvcwKJaCLctpj2lEk+5yGwMw==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "indefinite-observable": "^2.0.1", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", + "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + } + } + }, + "jss-plugin-camel-case": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.0.tgz", + "integrity": "sha512-GSjPL0adGAkuoqeYiXTgO7PlIrmjv5v8lA6TTBdfxbNYpxADOdGKJgIEkffhlyuIZHlPuuiFYTwUreLUmSn7rg==", + "requires": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.5.0" + } + }, + "jss-plugin-default-unit": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.0.tgz", + "integrity": "sha512-rsbTtZGCMrbcb9beiDd+TwL991NGmsAgVYH0hATrYJtue9e+LH/Gn4yFD1ENwE+3JzF3A+rPnM2JuD9L/SIIWw==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.5.0" + } + }, + "jss-plugin-global": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.5.0.tgz", + "integrity": "sha512-FZd9+JE/3D7HMefEG54fEC0XiQ9rhGtDHAT/ols24y8sKQ1D5KIw6OyXEmIdKFmACgxZV2ARQ5pAUypxkk2IFQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.5.0" + } + }, + "jss-plugin-nested": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.5.0.tgz", + "integrity": "sha512-ejPlCLNlEGgx8jmMiDk/zarsCZk+DV0YqXfddpgzbO9Toamo0HweCFuwJ3ZO40UFOfqKwfpKMVH/3HUXgxkTMg==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.5.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-props-sort": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.0.tgz", + "integrity": "sha512-kTLRvrOetFKz5vM88FAhLNeJIxfjhCepnvq65G7xsAQ/Wgy7HwO1BS/2wE5mx8iLaAWC6Rj5h16mhMk9sKdZxg==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.5.0" + } + }, + "jss-plugin-rule-value-function": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.0.tgz", + "integrity": "sha512-jXINGr8BSsB13JVuK274oEtk0LoooYSJqTBCGeBu2cG/VJ3+4FPs1gwLgsq24xTgKshtZ+WEQMVL34OprLidRA==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.5.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-vendor-prefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.0.tgz", + "integrity": "sha512-rux3gmfwDdOKCLDx0IQjTwTm03IfBa+Rm/hs747cOw5Q7O3RaTUIMPKjtVfc31Xr/XI9Abz2XEupk1/oMQ7zRA==", + "requires": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "10.5.0" + } + }, "jsx-ast-utils": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", @@ -9265,6 +9488,11 @@ "ts-pnp": "^1.1.6" } }, + "popper.js": { + "version": "1.16.1-lts", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", + "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" + }, "portfinder": { "version": "1.0.26", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", @@ -10861,6 +11089,17 @@ "workbox-webpack-plugin": "4.3.1" } }, + "react-transition-group": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -12447,6 +12686,11 @@ "util.promisify": "~1.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", diff --git a/package.json b/package.json index 8ca73ea..ac3a50e 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { + "@material-ui/core": "^4.11.2", + "@material-ui/icons": "^4.11.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.1", diff --git a/src/assets/img/logo-future-eats-invert.png b/src/assets/img/logo-future-eats-invert.png new file mode 100644 index 0000000000000000000000000000000000000000..975540aa4082fbe926b9a2481c77c3a7573251e6 GIT binary patch literal 3154 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/logo-future-eats-invert@3x.png b/src/assets/img/logo-future-eats-invert@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..318c9c29c378eaa9c62aae7bd1391146848be601 GIT binary patch literal 9110 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 literal 0 HcmV?d00001 diff --git a/src/components/CardFeed/CardFeed.js b/src/components/CardFeed/CardFeed.js new file mode 100644 index 0000000..a7cb416 --- /dev/null +++ b/src/components/CardFeed/CardFeed.js @@ -0,0 +1,33 @@ +import React from 'react' +import Card from '@material-ui/core/Card' +import CardActionArea from '@material-ui/core/CardActionArea' +import CardContent from '@material-ui/core/CardContent' +import CardMedia from '@material-ui/core/CardMedia' +import Typography from '@material-ui/core/Typography' + +const CardFeed = () => { + + return ( +
+ + + + + + Vinil Butantã + + + 50-60 min + Frete R$6,00 + + + + +
+ ) +} + +export default CardFeed \ No newline at end of file diff --git a/src/components/CardFeed/styles.js b/src/components/CardFeed/styles.js new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 906ca75..778fd08 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -1,11 +1,14 @@ import React from 'react' +import { HeaderContainer, PageTitle } from './styles' const Header = () => { return ( -
+ -

Título da Página

-
+ Título da Página + ) -} \ No newline at end of file +} + +export default Header \ No newline at end of file diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js index 5e94b74..c3f83f1 100644 --- a/src/components/Header/styles.js +++ b/src/components/Header/styles.js @@ -1 +1,14 @@ import styled from 'styled-components' + +export const HeaderContainer = styled.div ` + display: flex; + position:fixed; + top: 0; +` +export const PageTitle = styled.p ` + @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); + body { + font-family: 'Roboto', sans-serif; + font-size: 16px; + } +` \ No newline at end of file diff --git a/src/hooks/useRequestData.js b/src/hooks/useRequestData.js new file mode 100644 index 0000000..e69de29 diff --git a/src/router/router.js b/src/router/router.js index 252d813..9ea906d 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -1,5 +1,6 @@ import React from "react" import {BrowserRouter, Route, Switch} from "react-router-dom" +import FeedPage from "../screens/FeedPage/FeedPage" import InitialPage from "../screens/InitialPage/InitialPage" import LoginPage from "../screens/loginPage/loginPage" @@ -16,10 +17,9 @@ return( - - + diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js new file mode 100644 index 0000000..b53e7e4 --- /dev/null +++ b/src/screens/FeedPage/FeedPage.js @@ -0,0 +1,47 @@ +import Axios from 'axios' +import React, { useEffect } from 'react' +import Header from '../../components/Header/Header' +import { FeedPageContainer } from './styles' +import { baseUrl } from '../../constants/constants' +import CardFeed from '../../components/CardFeed/CardFeed' +import { InputLabel, InputAdornment, OutlinedInput } from '@material-ui/core' +import SearchIcon from '@material-ui/icons/Search' + +const FeedPage = () => { + + useEffect(()=> { + Axios.get(`${baseUrl}/restaurants`, + { + headers:{ + Authorization: localStorage.getItem("token") + } + }) + .then((res)=>{ + console.log(res) + }) + .catch((err)=>{ + console.log(err) + }) + },[]) + + + return ( + +
+
+ + + + + } + /> + + +
+ + ) +} + +export default FeedPage \ No newline at end of file diff --git a/src/screens/FeedPage/styles.js b/src/screens/FeedPage/styles.js new file mode 100644 index 0000000..7b016f5 --- /dev/null +++ b/src/screens/FeedPage/styles.js @@ -0,0 +1,11 @@ +import styled from 'styled-components' + +export const FeedPageContainer = styled.div ` + display: flex; + justify-content: center; + align-items: center; + margin: auto; + width: 360px; + height: 640px; + border: 1px black solid; +` \ No newline at end of file From 230bc2ccd0890f8ef2d23e1b4a417195dfc114a4 Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Tue, 8 Dec 2020 14:24:01 -0300 Subject: [PATCH 15/64] Styled login --- src/screens/loginPage/styled.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/screens/loginPage/styled.js b/src/screens/loginPage/styled.js index 5a522a8..ec2dcd3 100644 --- a/src/screens/loginPage/styled.js +++ b/src/screens/loginPage/styled.js @@ -90,6 +90,7 @@ export const TextRegister = styled.p` letter-spacing: -0.39px; text-align: center; color: #000000; + cursor: pointer; `; From 834519e74cf3848b6334ed584d159951f2010e70 Mon Sep 17 00:00:00 2001 From: rafae Date: Tue, 8 Dec 2020 14:30:33 -0300 Subject: [PATCH 16/64] =?UTF-8?q?Pequenas=20mudan=C3=A7as=20de=20estiliza?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardFeed/CardFeed.js | 7 +++++-- src/components/CardFeed/styles.js | 6 ++++++ src/components/Header/Header.js | 15 ++++++++++++--- src/components/Header/styles.js | 7 +++++++ src/screens/InitialPage/styles.js | 1 - 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/components/CardFeed/CardFeed.js b/src/components/CardFeed/CardFeed.js index a7cb416..110b50c 100644 --- a/src/components/CardFeed/CardFeed.js +++ b/src/components/CardFeed/CardFeed.js @@ -4,6 +4,7 @@ import CardActionArea from '@material-ui/core/CardActionArea' import CardContent from '@material-ui/core/CardContent' import CardMedia from '@material-ui/core/CardMedia' import Typography from '@material-ui/core/Typography' +import { InfoContainer } from './styles' const CardFeed = () => { @@ -20,8 +21,10 @@ const CardFeed = () => { Vinil Butantã - 50-60 min - Frete R$6,00 + +

50-60 min

+

Frete R$6,00

+
diff --git a/src/components/CardFeed/styles.js b/src/components/CardFeed/styles.js index e69de29..52cbd83 100644 --- a/src/components/CardFeed/styles.js +++ b/src/components/CardFeed/styles.js @@ -0,0 +1,6 @@ +import styled from 'styled-components' + +export const InfoContainer = styled.div ` + display: flex; + justify-content: space-between; +` \ No newline at end of file diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 778fd08..90aa456 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -1,12 +1,21 @@ import React from 'react' -import { HeaderContainer, PageTitle } from './styles' +import { ButtonStyled, HeaderContainer, PageTitle } from './styles' +import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' +import { Button } from '@material-ui/core' +import { useHistory } from 'react-router-dom' const Header = () => { + const history = useHistory() return ( - - Título da Página + + {history.location.pathname==='/feed' + ? + FutureEats + : + Título da Página + } ) } diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js index c3f83f1..f13886e 100644 --- a/src/components/Header/styles.js +++ b/src/components/Header/styles.js @@ -1,3 +1,4 @@ +import { Button } from '@material-ui/core' import styled from 'styled-components' export const HeaderContainer = styled.div ` @@ -11,4 +12,10 @@ export const PageTitle = styled.p ` font-family: 'Roboto', sans-serif; font-size: 16px; } +` +export const ButtonStyled = styled(Button) ` + padding: 0; + margin: 0; + /* height: 20px; + width: 20px; */ ` \ No newline at end of file diff --git a/src/screens/InitialPage/styles.js b/src/screens/InitialPage/styles.js index 9dc279e..5b6d793 100644 --- a/src/screens/InitialPage/styles.js +++ b/src/screens/InitialPage/styles.js @@ -6,7 +6,6 @@ export const InitialPageContainer = styled.div ` align-items: center; width: 360px; height: 640px; - padding: 288px 117px 287px; background-color: #000000; margin: auto; ` From 2787e2f0a6f81f27aff2b1ed0fbe2646367d5f88 Mon Sep 17 00:00:00 2001 From: rafae Date: Tue, 8 Dec 2020 14:37:55 -0300 Subject: [PATCH 17/64] =?UTF-8?q?Mudan=C3=A7a=20para=20auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/screens/FeedPage/FeedPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index b53e7e4..a5c34a0 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -13,7 +13,7 @@ const FeedPage = () => { Axios.get(`${baseUrl}/restaurants`, { headers:{ - Authorization: localStorage.getItem("token") + auth: localStorage.getItem("token") } }) .then((res)=>{ From 68edb67d498d9fb467e193fd787af447f0f8b7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Tue, 8 Dec 2020 14:49:51 -0300 Subject: [PATCH 18/64] =?UTF-8?q?P=C3=A1gina=20de=20signup=20funcional=20e?= =?UTF-8?q?=20endere=C3=A7o=20com=20erro.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/user.js b/src/constants/user.js index 10e71af..55f4040 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -39,7 +39,7 @@ export const Address = (body, history) => { .put(`${baseUrl}/address`, body, axiosConfig) .then ((response)=>{ - localStorage.setItem('token', response.data.token) + // localStorage.setItem('token', response.data.token) alert("Endereço cadastro com sucesso!") goToFeedPage(history) From 98544b05e36daf763142034e55ce354f90281f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rafael?= Date: Tue, 8 Dec 2020 15:25:37 -0300 Subject: [PATCH 19/64] adicionei useRequestData --- debug.log | 1 + src/constants/user.js | 2 +- src/hooks/useRequestData.js | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/debug.log b/debug.log index 45d3b22..e96b395 100644 --- a/debug.log +++ b/debug.log @@ -1 +1,2 @@ [1207/150005.674:ERROR:directory_reader_win.cc(43)] FindFirstFile: O sistema não pode encontrar o caminho especificado. (0x3) +[1208/142513.186:ERROR:directory_reader_win.cc(43)] FindFirstFile: O sistema não pode encontrar o caminho especificado. (0x3) diff --git a/src/constants/user.js b/src/constants/user.js index 032c795..5959822 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -1,6 +1,6 @@ import axios from "axios" import {baseUrl} from "./constants" -import { goToFeedPage, goToAdressPage } from "../router/coordinator" +import { goToFeedPage, goToAdressPage,goToSignUpPage } from "../router/coordinator" const axiosConfig = { headers: { diff --git a/src/hooks/useRequestData.js b/src/hooks/useRequestData.js index e69de29..3791825 100644 --- a/src/hooks/useRequestData.js +++ b/src/hooks/useRequestData.js @@ -0,0 +1,16 @@ +import { useEffect, useState } from "react" +import axios from "axios" + +function useRequestData(url,initialState){ +const [data,setData] = useState(initialState) + +useEffect(()=>{ + axios.get(url,{headers:{auth:localStorage.getItem("token")}}).then(response =>{ + setData(response.data) + }).catch(error =>{ + console.log(error) + }) +},[url]) +return data +} +export default useRequestData \ No newline at end of file From 977806b642f13d98b5f1cbebf16dc5b5465fc4fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Tue, 8 Dec 2020 15:54:02 -0300 Subject: [PATCH 20/64] Commit para debugar --- src/constants/user.js | 6 +-- src/screens/signupPage/styles.js | 88 ++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 3 deletions(-) diff --git a/src/constants/user.js b/src/constants/user.js index 5959822..db8c00a 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -4,7 +4,7 @@ import { goToFeedPage, goToAdressPage,goToSignUpPage } from "../router/coordinat const axiosConfig = { headers: { - Authorization: localStorage.getItem('token') + auth: localStorage.getItem('token') } } @@ -45,8 +45,8 @@ export const Address = (body, history) => { .put(`${baseUrl}/address`, body, axiosConfig) .then ((response)=>{ - // localStorage.setItem('token', response.data.token) - alert("Endereço cadastro com sucesso!") + localStorage.setItem('token', response.data.token) + alert("Endereço cadastrado com sucesso!") goToFeedPage(history) }) diff --git a/src/screens/signupPage/styles.js b/src/screens/signupPage/styles.js index e69de29..c961449 100644 --- a/src/screens/signupPage/styles.js +++ b/src/screens/signupPage/styles.js @@ -0,0 +1,88 @@ +import styled from 'styled-components' + +export const Bar = styled.div` + width: 360px; + height: 64px; + margin: 0 0 24px; + padding: 0 0 10px; + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + box-shadow: 0 0.5px 0 0 rgba(0, 0, 0, 0.25); + background-color: #ffffff; +` + +export const SignUp = styled.div` +width: 360px; + height: 640px; + padding: 0 0 26px; +` + +export const Logo_SignUp = styled.img` +width: 104px; + height: 58px; + margin: 24px 128px 16px; + object-fit: contain; +` + +export const TitleSignUp = styled.div` +width: 360px; + height: 42px; + margin: 16px 0 0; + padding: 12px 32px; +` + +export const Title = styled.h1` +width: 296px; + height: 18px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + text-align: center; + color: #000000; +` + +export const InputSignUpDiv = styled.div` +width: 360px; + height: 72px; + margin: 58px 0 0; + padding: 0 16px 8px; +` + +export const InputSignUp = styled.input` +width: 328px; + height: 56px; + margin: 8px 0 0; + padding: 19px 48px 19px 16px; + border-radius: 2px; + border: solid 1px #b8b8b8; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #d0d0d0; +` +export const InputButton = styled.button` +width: 328px; + height: 42px; + padding: 12px 16px; + border-radius: 2px; + background-color:#5cb646; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + text-align: center; + color: #000000; + margin-top: 50px; + margin-left: 45px; +` \ No newline at end of file From e2487fe3a762e9aa5ab1adbcc4d2b35e58e10115 Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Tue, 8 Dec 2020 15:54:26 -0300 Subject: [PATCH 21/64] =?UTF-8?q?Integra=C3=A7=C3=A3o=20com=20a=20API,=20e?= =?UTF-8?q?=20pagina=20de=20cadastro=20de=20endere=C3=A7os=20funcionando?= =?UTF-8?q?=20quando=20quer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/user.js | 13 +++++++++---- src/screens/FeedPage/FeedPage.js | 2 ++ src/screens/loginPage/loginPage.js | 2 +- src/screens/loginPage/styled.js | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/constants/user.js b/src/constants/user.js index 032c795..f346b9c 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -4,7 +4,7 @@ import { goToFeedPage, goToAdressPage } from "../router/coordinator" const axiosConfig = { headers: { - Authorization: localStorage.getItem('token') + auth: localStorage.getItem('token') } } @@ -12,14 +12,19 @@ export const login = (body, history) =>{ axios.post(`${baseUrl}/login`, body) .then ((response)=>{ localStorage.setItem('user', response.data.user) - localStorage.setItem('token', response.data.token) + if(response.data.user.hasAddress){ + localStorage.setItem("token", response.data.token); goToFeedPage(history) + }else{ - goToSignUpPage(history) + localStorage.setItem("token", response.data.token); + goToAdressPage(history); } + + }).catch(error=>{ alert ("Deu ruim rapá!") console.log(error.message) @@ -45,7 +50,7 @@ export const Address = (body, history) => { .put(`${baseUrl}/address`, body, axiosConfig) .then ((response)=>{ - // localStorage.setItem('token', response.data.token) + localStorage.setItem('token', response.data.token) alert("Endereço cadastro com sucesso!") goToFeedPage(history) diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index a5c34a0..8957dc8 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -7,7 +7,9 @@ import CardFeed from '../../components/CardFeed/CardFeed' import { InputLabel, InputAdornment, OutlinedInput } from '@material-ui/core' import SearchIcon from '@material-ui/icons/Search' + const FeedPage = () => { + useEffect(()=> { Axios.get(`${baseUrl}/restaurants`, diff --git a/src/screens/loginPage/loginPage.js b/src/screens/loginPage/loginPage.js index 743808e..bbab020 100644 --- a/src/screens/loginPage/loginPage.js +++ b/src/screens/loginPage/loginPage.js @@ -4,7 +4,7 @@ import { login } from "../../constants/user"; import { useForm } from "../../hooks/useForm"; import useUnProtectedPage from "../../hooks/useUnprotectedPage"; import { goToSignUpPage } from "../../router/coordinator"; -import logo from "../../assets/img/logo-future-eats.png"; +import logo from "../../assets/img/logo-future-eats-invert.png"; import { LoginContainer, Logo, diff --git a/src/screens/loginPage/styled.js b/src/screens/loginPage/styled.js index ec2dcd3..83d8a9c 100644 --- a/src/screens/loginPage/styled.js +++ b/src/screens/loginPage/styled.js @@ -4,7 +4,7 @@ export const LoginContainer = styled.div` width: 360px; height: 640px; padding: 0 0 184px; - background-color: pink; + `; export const Logo = styled.img` From cefc49761bca3eea64e6327048542355271bb979 Mon Sep 17 00:00:00 2001 From: rafae Date: Tue, 8 Dec 2020 16:10:58 -0300 Subject: [PATCH 22/64] =?UTF-8?q?Requisi=C3=A7=C3=A3o=20mapeada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardFeed/CardFeed.js | 15 ++++++++------- src/components/CardFeed/styles.js | 3 +++ src/constants/user.js | 4 ++-- src/router/router.js | 2 +- src/screens/FeedPage/FeedPage.js | 25 ++++++++++++++++++++----- src/screens/FeedPage/styles.js | 4 ++++ 6 files changed, 38 insertions(+), 15 deletions(-) diff --git a/src/components/CardFeed/CardFeed.js b/src/components/CardFeed/CardFeed.js index 110b50c..c36b10e 100644 --- a/src/components/CardFeed/CardFeed.js +++ b/src/components/CardFeed/CardFeed.js @@ -4,26 +4,27 @@ import CardActionArea from '@material-ui/core/CardActionArea' import CardContent from '@material-ui/core/CardContent' import CardMedia from '@material-ui/core/CardMedia' import Typography from '@material-ui/core/Typography' -import { InfoContainer } from './styles' +import { InfoContainer, ImageRestaurant } from './styles' -const CardFeed = () => { +const CardFeed = (props) => { return (
+ - Vinil Butantã + {props.name} -

50-60 min

-

Frete R$6,00

+

{props.deliveryTime} min

+

Frete R${props.shipping}

diff --git a/src/components/CardFeed/styles.js b/src/components/CardFeed/styles.js index 52cbd83..080cb85 100644 --- a/src/components/CardFeed/styles.js +++ b/src/components/CardFeed/styles.js @@ -3,4 +3,7 @@ import styled from 'styled-components' export const InfoContainer = styled.div ` display: flex; justify-content: space-between; +` +export const ImageRestaurant = styled.img ` + max-height:120px; ` \ No newline at end of file diff --git a/src/constants/user.js b/src/constants/user.js index 032c795..b2d445e 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -1,10 +1,10 @@ import axios from "axios" import {baseUrl} from "./constants" -import { goToFeedPage, goToAdressPage } from "../router/coordinator" +import { goToFeedPage, goToAdressPage, goToSignUpPage } from "../router/coordinator" const axiosConfig = { headers: { - Authorization: localStorage.getItem('token') + auth: localStorage.getItem('token') } } diff --git a/src/router/router.js b/src/router/router.js index 2597f46..94842cd 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -15,7 +15,7 @@ return( - + diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index a5c34a0..b10eb5c 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -1,13 +1,14 @@ import Axios from 'axios' -import React, { useEffect } from 'react' +import React, { useEffect, useState } from 'react' import Header from '../../components/Header/Header' -import { FeedPageContainer } from './styles' +import { CardsContainer, FeedPageContainer } from './styles' import { baseUrl } from '../../constants/constants' import CardFeed from '../../components/CardFeed/CardFeed' import { InputLabel, InputAdornment, OutlinedInput } from '@material-ui/core' import SearchIcon from '@material-ui/icons/Search' const FeedPage = () => { + const [restaurants,setRestaurants] = useState([]) useEffect(()=> { Axios.get(`${baseUrl}/restaurants`, @@ -17,7 +18,8 @@ const FeedPage = () => { } }) .then((res)=>{ - console.log(res) + console.log(res.data.restaurants) + setRestaurants(res.data.restaurants) }) .catch((err)=>{ console.log(err) @@ -37,8 +39,21 @@ const FeedPage = () => { } /> - - + + {restaurants.map(restaurant =>{ + return ( + + ) + } + )} +
) diff --git a/src/screens/FeedPage/styles.js b/src/screens/FeedPage/styles.js index 7b016f5..3dd6a89 100644 --- a/src/screens/FeedPage/styles.js +++ b/src/screens/FeedPage/styles.js @@ -8,4 +8,8 @@ export const FeedPageContainer = styled.div ` width: 360px; height: 640px; border: 1px black solid; +` +export const CardsContainer = styled.div ` + height: 462px; + overflow: auto; ` \ No newline at end of file From 1914e9a752010c72b04802c2a5361657a8356fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Tue, 8 Dec 2020 16:58:00 -0300 Subject: [PATCH 23/64] =?UTF-8?q?P=C3=A1gina=20de=20endere=C3=A7o=20finali?= =?UTF-8?q?zada=20e=20estilizada.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/screens/addressPage/addressPage.js | 138 ++++++++++++++---------- src/screens/addressPage/styles.js | 67 ++++++++++++ src/screens/signupPage/signupPage.js | 139 ++++++++++++++----------- src/screens/signupPage/styles.js | 4 +- 4 files changed, 232 insertions(+), 116 deletions(-) diff --git a/src/screens/addressPage/addressPage.js b/src/screens/addressPage/addressPage.js index 7a6478c..7330247 100644 --- a/src/screens/addressPage/addressPage.js +++ b/src/screens/addressPage/addressPage.js @@ -1,15 +1,17 @@ import React from 'react' import { Address } from '../../constants/user' -import {useForm} from '../../hooks/useForm' +import { useForm } from '../../hooks/useForm' import { useHistory } from 'react-router-dom' import useProtectedPage from '../../hooks/useProtectedPage' +import { StyledAddress, Bar, TitleAddress, InputAddressDiv, InputAddress } from './styles' +import { InputButton, Title } from '../signupPage/styles' const AddressPage = () => { useProtectedPage() - + const history = useHistory() const { form, onChange } = useForm({ street: "", number: "", neighbourhood: "", city: "", state: "", complement: "" }) @@ -24,62 +26,88 @@ const AddressPage = () => { } return ( -
+ + + + + + + + Meu endereço +
- - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Salvar
- -
+ + ) } diff --git a/src/screens/addressPage/styles.js b/src/screens/addressPage/styles.js index e69de29..ddf4b0a 100644 --- a/src/screens/addressPage/styles.js +++ b/src/screens/addressPage/styles.js @@ -0,0 +1,67 @@ +import styled from 'styled-components' + +export const Bar = styled.div` + width: 420px; + height: 64px; + margin: 0 0 24px; + padding: 0 0 10px; + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + box-shadow: 0 0.5px 0 0 rgba(0, 0, 0, 0.25); + background-color: #ffffff; +` + +export const StyledAddress = styled.div` +width: 360px; + height: 640px; + padding: 0 0 36px; +` + +export const TitleAddress = styled.div` +width: 360px; + height: 42px; + margin: 16px 0 0; + padding: 12px 32px; +` + +export const InputAddressDiv = styled.div` +width: 360px; + height: 72px; + margin: 58px 0 0; + padding: 0 16px 8px; +` + +export const InputAddress = styled.input` +width: 328px; + height: 56px; + margin: 8px 0 0; + padding: 19px 48px 19px 16px; + border-radius: 2px; + border: solid 1px #b8b8b8; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` +export const InputButton = styled.button` +width: 328px; + height: 42px; + padding: 12px 16px; + border-radius: 2px; + background-color:#5cb646; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + text-align: center; + color: #000000; + margin-top: 50px; + margin-left: 45px; +` \ No newline at end of file diff --git a/src/screens/signupPage/signupPage.js b/src/screens/signupPage/signupPage.js index 5c55cb4..2de5b38 100644 --- a/src/screens/signupPage/signupPage.js +++ b/src/screens/signupPage/signupPage.js @@ -4,6 +4,8 @@ import { useForm } from '../../hooks/useForm' import { signUp } from '../../constants/user' import { goToAdressPage } from '../../router/coordinator' import useUnProtectedPage from '../../hooks/useUnprotectedPage' +import { Bar, InputButton, InputSignUp, InputSignUpDiv, Logo_SignUp, SignUp, Title, TitleSignUp } from './styles' +import SignUpLogo from '../../assets/img/logo-future-eats-invert.png' const SignupPage = () => { @@ -30,79 +32,98 @@ const SignupPage = () => { const passwordTwo = form.confirmPassword event.preventDefault() - if(passwordOne === passwordTwo) { - handleSubmit() - alert("Tudo certo!") - + if (passwordOne === passwordTwo) { + handleSubmit() + } else { - alert("As senhas digitadas não são iguais!") + alert("As senhas digitadas não são iguais!") } - } + } return ( -
+ + -
+ - - - - - - - - - - - + + + Cadastrar + + + + + + + + + + + + + + + + + + + + + + + Criar -
+ + + ) } diff --git a/src/screens/signupPage/styles.js b/src/screens/signupPage/styles.js index c961449..fc0e0d3 100644 --- a/src/screens/signupPage/styles.js +++ b/src/screens/signupPage/styles.js @@ -1,7 +1,7 @@ import styled from 'styled-components' export const Bar = styled.div` - width: 360px; + width: 420px; height: 64px; margin: 0 0 24px; padding: 0 0 10px; @@ -66,7 +66,7 @@ width: 328px; font-style: normal; line-height: normal; letter-spacing: -0.39px; - color: #d0d0d0; + color: #000000; ` export const InputButton = styled.button` width: 328px; From b5ff36740e82bee9e802cf00ad1f11f702f7faa6 Mon Sep 17 00:00:00 2001 From: rafae Date: Wed, 9 Dec 2020 01:19:32 -0300 Subject: [PATCH 24/64] =?UTF-8?q?Mudan=C3=A7as=20no=20Feed,=20GoBack=20no?= =?UTF-8?q?=20Header,=20Cria=C3=A7=C3=A3o=20de=20Tela=20Restaurante?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardFeed/CardFeed.js | 42 +++----- src/components/CardFeed/styles.js | 25 +++++ src/components/Header/Header.js | 24 +++-- src/components/Header/styles.js | 6 +- src/components/LoadingInvert/LoadingInvert.js | 14 +++ src/components/LoadingInvert/styels.js | 44 ++++++++ src/router/coordinator.js | 4 + src/router/router.js | 5 +- src/screens/FeedPage/FeedPage.js | 102 +++++++++++++----- src/screens/FeedPage/styles.js | 23 +++- src/screens/RestaurantPage/RestaurantPage.js | 47 ++++++++ src/screens/RestaurantPage/styles.js | 14 +++ 12 files changed, 281 insertions(+), 69 deletions(-) create mode 100644 src/components/LoadingInvert/LoadingInvert.js create mode 100644 src/components/LoadingInvert/styels.js create mode 100644 src/screens/RestaurantPage/RestaurantPage.js create mode 100644 src/screens/RestaurantPage/styles.js diff --git a/src/components/CardFeed/CardFeed.js b/src/components/CardFeed/CardFeed.js index c36b10e..a544d7d 100644 --- a/src/components/CardFeed/CardFeed.js +++ b/src/components/CardFeed/CardFeed.js @@ -1,36 +1,22 @@ import React from 'react' -import Card from '@material-ui/core/Card' -import CardActionArea from '@material-ui/core/CardActionArea' -import CardContent from '@material-ui/core/CardContent' -import CardMedia from '@material-ui/core/CardMedia' -import Typography from '@material-ui/core/Typography' -import { InfoContainer, ImageRestaurant } from './styles' +import { useHistory } from 'react-router-dom' +import { goToRestaurantPage } from '../../router/coordinator' +import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer } from './styles' const CardFeed = (props) => { + const history = useHistory() return ( -
- - - - - - - {props.name} - - - -

{props.deliveryTime} min

-

Frete R${props.shipping}

-
-
-
-
-
-
+ goToRestaurantPage(history,props.id)}> + + + + {props.name} + + {props.deliveryTime} min + Frete R${props.shipping} + + ) } diff --git a/src/components/CardFeed/styles.js b/src/components/CardFeed/styles.js index 080cb85..e46dc22 100644 --- a/src/components/CardFeed/styles.js +++ b/src/components/CardFeed/styles.js @@ -1,9 +1,34 @@ +import { Card } from '@material-ui/core' import styled from 'styled-components' export const InfoContainer = styled.div ` display: flex; justify-content: space-between; ` +export const ImageContainer = styled.div ` + text-align: center; +` export const ImageRestaurant = styled.img ` max-height:120px; +` +export const CardStyled = styled(Card) ` + height: 188px; + width: 328px; + border: 1px lightgrey solid; + border-radius: 1px; + margin: 8px; +` +export const InfoText = styled.p ` + font-family: 'Roboto', sans-serif; + font-size: 16px; + padding: 1px; + margin: 4px; + color: #b8b8b8; +` +export const InfoName = styled.p ` + font-family: 'Roboto', sans-serif; + font-size: 16px; + padding: 1px; + margin: 4px; + color: #5cb646; ` \ No newline at end of file diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 90aa456..50bf3f4 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -1,22 +1,32 @@ import React from 'react' import { ButtonStyled, HeaderContainer, PageTitle } from './styles' import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' -import { Button } from '@material-ui/core' import { useHistory } from 'react-router-dom' -const Header = () => { +const Header = (props) => { const history = useHistory() return ( - - +
{history.location.pathname==='/feed' ? - FutureEats + + + FutureEats + : - Título da Página + "" } - + {history.location.pathname.includes('/restaurantes') + ? + + + Restaurante + + : + "" + } +
) } diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js index f13886e..47c3046 100644 --- a/src/components/Header/styles.js +++ b/src/components/Header/styles.js @@ -4,18 +4,14 @@ import styled from 'styled-components' export const HeaderContainer = styled.div ` display: flex; position:fixed; + height: 44px; top: 0; ` export const PageTitle = styled.p ` - @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); - body { font-family: 'Roboto', sans-serif; font-size: 16px; - } ` export const ButtonStyled = styled(Button) ` padding: 0; margin: 0; - /* height: 20px; - width: 20px; */ ` \ No newline at end of file diff --git a/src/components/LoadingInvert/LoadingInvert.js b/src/components/LoadingInvert/LoadingInvert.js new file mode 100644 index 0000000..786c009 --- /dev/null +++ b/src/components/LoadingInvert/LoadingInvert.js @@ -0,0 +1,14 @@ +import React from 'react' +import InitialLogo from '../../assets/img/logo-future-eats-invert.png' +import { AppLogo, LogoContainer } from './styels' + +const Loading = () => { + + return ( + + + + ) +} + +export default Loading \ No newline at end of file diff --git a/src/components/LoadingInvert/styels.js b/src/components/LoadingInvert/styels.js new file mode 100644 index 0000000..981a31b --- /dev/null +++ b/src/components/LoadingInvert/styels.js @@ -0,0 +1,44 @@ +import styled, { keyframes } from 'styled-components' + +export const LogoContainer = styled.div ` + background-color: transparent; +` +export const AppLogoMove = keyframes ` + 0% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 10% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 20% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 30% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 40% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 50% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 60% { + transform: scaleX(0.80) scaleY(0.80) ; + } + 70% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 80% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 90% { + transform: scaleX(1.20) scaleY(1.20) ; + } + 100% { + transform: scaleX(0.80) scaleY(0.80) ; + } +` +export const AppLogo = styled.img ` + pointer-events: none; + animation: ${AppLogoMove} infinite 15s linear; +` \ No newline at end of file diff --git a/src/router/coordinator.js b/src/router/coordinator.js index 5aa39af..88e6c73 100644 --- a/src/router/coordinator.js +++ b/src/router/coordinator.js @@ -12,4 +12,8 @@ export const goToSignUpPage = (history) => { export const goToAdressPage = (history) => { history.push ('/endereco') +} + +export const goToRestaurantPage = (history, id) => { + history.push (`/restaurantes/${id}`) } \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 94842cd..27bb7fc 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -4,6 +4,7 @@ import AddressPage from "../screens/addressPage/addressPage" import FeedPage from "../screens/FeedPage/FeedPage" import InitialPage from "../screens/InitialPage/InitialPage" import LoginPage from "../screens/loginPage/loginPage" +import RestaurantPage from "../screens/RestaurantPage/RestaurantPage" import SignupPage from "../screens/signupPage/signupPage" @@ -26,8 +27,8 @@ return( - - + + diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index 9abcd96..ba60c42 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -1,17 +1,18 @@ import Axios from 'axios' import React, { useEffect, useState } from 'react' import Header from '../../components/Header/Header' -import { CardsContainer, FeedPageContainer } from './styles' +import { CardsContainer, FeedPageContainer, FilterContainer, InputContainer, InputStyled, LoadingContainer } from './styles' import { baseUrl } from '../../constants/constants' import CardFeed from '../../components/CardFeed/CardFeed' -import { InputLabel, InputAdornment, OutlinedInput } from '@material-ui/core' -import SearchIcon from '@material-ui/icons/Search' +import LoadingInvert from '../../components/LoadingInvert/LoadingInvert' +import { useHistory } from 'react-router-dom' const FeedPage = () => { - + const history = useHistory() const [restaurants,setRestaurants] = useState([]) - + const [filteredRestaurants,setFilteredRestaurants] = useState([]) + const [searchContent,setSearchContent] = useState("") useEffect(()=> { Axios.get(`${baseUrl}/restaurants`, @@ -29,33 +30,82 @@ const FeedPage = () => { }) },[]) + const SearchFilter = (e) => { + const searchArray = restaurants.filter((restaurant) => { + const name = restaurant.name.toLowerCase() + return ( + name.includes(e.target.value.toLowerCase()) + ) + }) + setFilteredRestaurants(searchArray) + setSearchContent(e.target.value) + } + + function goBack() { + window.history.back() + } return ( -
+
- - - - - } - /> + + + + +

Ãrabe

+

Asiática

+

Baiana

+

Carnes

+ {/*

Hamburguer

+

Italiana

+

Mexicana

+

Sorvetes

+

Petiscos

*/} +
- {restaurants.map(restaurant =>{ - return ( - - ) + {restaurants.length===0 + ? + + + + : + searchContent==="" + ? + restaurants.map(restaurant =>{ + return ( + + ) + }) + : +
+ {filteredRestaurants.length===0 + ? +

Não encontramos :(

+ : + "" + } + {filteredRestaurants.map(restaurant =>{ + return ( + + ) + })} +
} - )}
diff --git a/src/screens/FeedPage/styles.js b/src/screens/FeedPage/styles.js index 3dd6a89..f6c2e04 100644 --- a/src/screens/FeedPage/styles.js +++ b/src/screens/FeedPage/styles.js @@ -10,6 +10,27 @@ export const FeedPageContainer = styled.div ` border: 1px black solid; ` export const CardsContainer = styled.div ` - height: 462px; + height: 450px; + text-align: center; overflow: auto; +` +export const InputContainer = styled.div ` + text-align: center; +` +export const FilterContainer = styled.div ` + display: flex; + justify-content: space-between; + align-items: center; + margin-left: 32px; + margin-right: 32px; +` +export const InputStyled = styled.input ` + height: 56px; + width: 328px; +` +export const LoadingContainer = styled.div ` + display: flex; + justify-content: center; + align-items: center; + margin-top: 150px; ` \ No newline at end of file diff --git a/src/screens/RestaurantPage/RestaurantPage.js b/src/screens/RestaurantPage/RestaurantPage.js new file mode 100644 index 0000000..3c10068 --- /dev/null +++ b/src/screens/RestaurantPage/RestaurantPage.js @@ -0,0 +1,47 @@ +import Axios from 'axios' +import React, { useEffect, useState } from 'react' +import { useHistory, useParams } from 'react-router-dom' +import Header from '../../components/Header/Header' +import { baseUrl } from '../../constants/constants' +import { RestaurantPageContainer, ImageRestaurant } from './styles' + +const RestaurantPage = () => { + const history = useHistory() + const params = useParams() + const [restaurantDetails, setRestaurantDetails] = useState([]) + + useEffect(()=> { + Axios.get(`${baseUrl}/restaurants/${params.id}`, + { + headers:{ + auth: localStorage.getItem("token") + } + }) + .then((res)=>{ + console.log(res.data.restaurant) + setRestaurantDetails(res.data.restaurant) + }) + .catch((err)=>{ + console.log(err) + }) + },[]) + + function goBack() { + window.history.back() + } + + return ( + +
+
+ +

{restaurantDetails.name}

+

{restaurantDetails.deliveryTime}

+

{restaurantDetails.shipping}

+

{restaurantDetails.address}

+
+ + ) +} + +export default RestaurantPage \ No newline at end of file diff --git a/src/screens/RestaurantPage/styles.js b/src/screens/RestaurantPage/styles.js new file mode 100644 index 0000000..7856e38 --- /dev/null +++ b/src/screens/RestaurantPage/styles.js @@ -0,0 +1,14 @@ +import styled from 'styled-components' + +export const RestaurantPageContainer = styled.div ` + display: flex; + justify-content: center; + align-items: center; + margin: auto; + width: 360px; + height: 640px; + border: 1px black solid; +` +export const ImageRestaurant = styled.img ` + max-height:120px; +` \ No newline at end of file From 6fd314f7305cad47b3b71fa1db1b583341da778b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Wed, 9 Dec 2020 13:03:37 -0300 Subject: [PATCH 25/64] =?UTF-8?q?P=C3=A1gina=20de=20perfil=20funcional?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/global/globalState.js | 6 ++-- src/router/coordinator.js | 4 +++ src/router/router.js | 3 +- src/screens/profilePage/profilePage.js | 50 ++++++++++++++++++++++++++ src/screens/profilePage/styles.js | 0 5 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 src/screens/profilePage/profilePage.js create mode 100644 src/screens/profilePage/styles.js diff --git a/src/global/globalState.js b/src/global/globalState.js index e9cf519..8d80a4a 100644 --- a/src/global/globalState.js +++ b/src/global/globalState.js @@ -3,9 +3,11 @@ import GlobalStateContex from "./globalStateContext" const GlobalState = (props) =>{ + const [profile, setProfile] = useState([]) - const states = {} - const setters = {} + + const states = {profile} + const setters = {setProfile} const data = {states,setters} diff --git a/src/router/coordinator.js b/src/router/coordinator.js index 5aa39af..f474772 100644 --- a/src/router/coordinator.js +++ b/src/router/coordinator.js @@ -12,4 +12,8 @@ export const goToSignUpPage = (history) => { export const goToAdressPage = (history) => { history.push ('/endereco') +} + +export const goToProfilePage = (history) =>{ + history.push('/perfil') } \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 94842cd..6bdf031 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -4,6 +4,7 @@ import AddressPage from "../screens/addressPage/addressPage" import FeedPage from "../screens/FeedPage/FeedPage" import InitialPage from "../screens/InitialPage/InitialPage" import LoginPage from "../screens/loginPage/loginPage" +import ProfilePage from "../screens/profilePage/profilePage" import SignupPage from "../screens/signupPage/signupPage" @@ -30,7 +31,7 @@ return( - + diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js new file mode 100644 index 0000000..1aef454 --- /dev/null +++ b/src/screens/profilePage/profilePage.js @@ -0,0 +1,50 @@ +import React, { useContext } from 'react' +import { useHistory } from 'react-router-dom' +import { baseUrl } from '../../constants/constants' +import GlobalStateContext from '../../global/globalStateContext' +import useProtectedPage from '../../hooks/useProtectedPage' +import useRequestData from '../../hooks/useRequestData' + +const ProfilePage = () => { + + useProtectedPage() + + const { states, setters } = useContext(GlobalStateContext) + + const history = useHistory() + + const profileInfo = useRequestData(`${baseUrl}/profile`, undefined) + + + + return ( + profileInfo ? + +
+
+

Nome: {profileInfo.user.name}

+

Email: {profileInfo.user.email}

+

CPF: {profileInfo.user.cpf}

+ +
+ +
+

Endereço cadastrado:

+

{profileInfo.user.address}

+
+
+ + + : + +
+

Carregando...

+
+ + + ) + + +} + +export default ProfilePage \ No newline at end of file diff --git a/src/screens/profilePage/styles.js b/src/screens/profilePage/styles.js new file mode 100644 index 0000000..e69de29 From b968c0dea4d48100008beec4c342269e78e32fe9 Mon Sep 17 00:00:00 2001 From: rafae Date: Wed, 9 Dec 2020 13:37:45 -0300 Subject: [PATCH 26/64] Lista de produtos mapeados --- src/components/CardFeed/CardFeed.js | 2 +- src/components/CardFeed/styles.js | 5 +- src/components/CardProduct/CardProduct.js | 27 ++++++++++ src/components/CardProduct/styles.js | 54 ++++++++++++++++++++ src/components/Header/Header.js | 6 ++- src/components/Header/styles.js | 7 ++- src/screens/FeedPage/FeedPage.js | 21 ++++---- src/screens/FeedPage/styles.js | 10 ++-- src/screens/RestaurantPage/RestaurantPage.js | 46 +++++++++++++---- src/screens/RestaurantPage/styles.js | 39 +++++++++++++- 10 files changed, 185 insertions(+), 32 deletions(-) create mode 100644 src/components/CardProduct/CardProduct.js create mode 100644 src/components/CardProduct/styles.js diff --git a/src/components/CardFeed/CardFeed.js b/src/components/CardFeed/CardFeed.js index a544d7d..9eaf6eb 100644 --- a/src/components/CardFeed/CardFeed.js +++ b/src/components/CardFeed/CardFeed.js @@ -9,7 +9,7 @@ const CardFeed = (props) => { return ( goToRestaurantPage(history,props.id)}> - + {props.name} diff --git a/src/components/CardFeed/styles.js b/src/components/CardFeed/styles.js index e46dc22..46ebd14 100644 --- a/src/components/CardFeed/styles.js +++ b/src/components/CardFeed/styles.js @@ -1,4 +1,3 @@ -import { Card } from '@material-ui/core' import styled from 'styled-components' export const InfoContainer = styled.div ` @@ -11,11 +10,11 @@ export const ImageContainer = styled.div ` export const ImageRestaurant = styled.img ` max-height:120px; ` -export const CardStyled = styled(Card) ` +export const CardStyled = styled.div ` height: 188px; width: 328px; border: 1px lightgrey solid; - border-radius: 1px; + border-radius: 5px; margin: 8px; ` export const InfoText = styled.p ` diff --git a/src/components/CardProduct/CardProduct.js b/src/components/CardProduct/CardProduct.js new file mode 100644 index 0000000..81e66c9 --- /dev/null +++ b/src/components/CardProduct/CardProduct.js @@ -0,0 +1,27 @@ +import React from 'react' +import { useHistory } from 'react-router-dom' +import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer } from './styles' + +const CardProduct = (props) => { + const history = useHistory() + + return ( + + + + + + + {props.name} + {props.description} + + + {props.price.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })} + + + + + ) +} + +export default CardProduct \ No newline at end of file diff --git a/src/components/CardProduct/styles.js b/src/components/CardProduct/styles.js new file mode 100644 index 0000000..e408620 --- /dev/null +++ b/src/components/CardProduct/styles.js @@ -0,0 +1,54 @@ +import styled from 'styled-components' + +export const InfoContainer = styled.div ` + display: flex; + justify-content: space-between; + margin-left: 8px; + margin-right: 0px; +` +export const ImageContainer = styled.div ` + display: flex; + align-items: center; +` +export const ImageRestaurant = styled.img ` + max-width: 96px; +` +export const CardStyled = styled.div ` + display: flex; + flex-direction: row; + height: 112px; + width: 328px; + border: 1px lightgrey solid; + border-radius: 5px; + margin: 8px; +` +export const InfoText = styled.p ` + font-family: 'Roboto', sans-serif; + font-size: 12px; + padding: 1px; + margin: 4px; + color: #b8b8b8; +` +export const PriceText = styled.p ` + font-family: 'Roboto', sans-serif; + font-size: 16px; + padding: 1px; + margin: 4px; + color: black; +` +export const InfoName = styled.p ` + font-family: 'Roboto', sans-serif; + font-size: 16px; + padding: 1px; + margin: 4px; + color: #5cb646; +` +export const TextContainer = styled.div ` + display: flex; + flex-direction: column; + justify-content: space-between; +` +export const DescriptionContainer = styled.div ` + text-align: left; + margin: 8px; +` \ No newline at end of file diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 50bf3f4..cedebfe 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -1,5 +1,5 @@ import React from 'react' -import { ButtonStyled, HeaderContainer, PageTitle } from './styles' +import { ButtonStyled, HeaderContainer, PageTitle, TitleContainer } from './styles' import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' import { useHistory } from 'react-router-dom' @@ -12,7 +12,9 @@ const Header = (props) => { ? - FutureEats + + FutureEats + : "" diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js index 47c3046..ca2191f 100644 --- a/src/components/Header/styles.js +++ b/src/components/Header/styles.js @@ -8,8 +8,11 @@ export const HeaderContainer = styled.div ` top: 0; ` export const PageTitle = styled.p ` - font-family: 'Roboto', sans-serif; - font-size: 16px; + font-family: 'Roboto', sans-serif; + font-size: 16px; +` +export const TitleContainer = styled.div ` + ` export const ButtonStyled = styled(Button) ` padding: 0; diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index ba60c42..cae70e1 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -1,7 +1,7 @@ import Axios from 'axios' import React, { useEffect, useState } from 'react' import Header from '../../components/Header/Header' -import { CardsContainer, FeedPageContainer, FilterContainer, InputContainer, InputStyled, LoadingContainer } from './styles' +import { CardsContainer, FeedPageContainer, Filter, FilterContainer, InputContainer, InputStyled, LoadingContainer } from './styles' import { baseUrl } from '../../constants/constants' import CardFeed from '../../components/CardFeed/CardFeed' import LoadingInvert from '../../components/LoadingInvert/LoadingInvert' @@ -53,15 +53,16 @@ const FeedPage = () => { -

Ãrabe

-

Asiática

-

Baiana

-

Carnes

- {/*

Hamburguer

-

Italiana

-

Mexicana

-

Sorvetes

-

Petiscos

*/} + Todos + Ãrabe + Asiática + Baiana + Carnes + Hamburguer + Italiana + Mexicana + Sorvetes + Petiscos
{restaurants.length===0 diff --git a/src/screens/FeedPage/styles.js b/src/screens/FeedPage/styles.js index f6c2e04..eff23fc 100644 --- a/src/screens/FeedPage/styles.js +++ b/src/screens/FeedPage/styles.js @@ -19,10 +19,12 @@ export const InputContainer = styled.div ` ` export const FilterContainer = styled.div ` display: flex; - justify-content: space-between; align-items: center; - margin-left: 32px; - margin-right: 32px; + width: 330px; + overflow: auto; +` +export const Filter = styled.p ` + margin-right: 5px; ` export const InputStyled = styled.input ` height: 56px; @@ -32,5 +34,5 @@ export const LoadingContainer = styled.div ` display: flex; justify-content: center; align-items: center; - margin-top: 150px; + margin-top: 180px; ` \ No newline at end of file diff --git a/src/screens/RestaurantPage/RestaurantPage.js b/src/screens/RestaurantPage/RestaurantPage.js index 3c10068..e30a899 100644 --- a/src/screens/RestaurantPage/RestaurantPage.js +++ b/src/screens/RestaurantPage/RestaurantPage.js @@ -1,9 +1,11 @@ import Axios from 'axios' import React, { useEffect, useState } from 'react' import { useHistory, useParams } from 'react-router-dom' +import CardProduct from '../../components/CardProduct/CardProduct' import Header from '../../components/Header/Header' import { baseUrl } from '../../constants/constants' -import { RestaurantPageContainer, ImageRestaurant } from './styles' +import { RestaurantPageContainer, ImageRestaurant, RestaurantContainer, InfoContainer, InfoName, InfoText, ImageContainer, LoadingContainer, CardsContainer } from './styles' +import LoadingInvert from '../../components/LoadingInvert/LoadingInvert' const RestaurantPage = () => { const history = useHistory() @@ -29,17 +31,43 @@ const RestaurantPage = () => { function goBack() { window.history.back() } - +console.log(restaurantDetails.products) return (
-
- -

{restaurantDetails.name}

-

{restaurantDetails.deliveryTime}

-

{restaurantDetails.shipping}

-

{restaurantDetails.address}

-
+ {restaurantDetails.length===0 + ? + + + + : + + + + + + {restaurantDetails.name} + + {restaurantDetails.deliveryTime} min + Frete R${restaurantDetails.shipping} + + {restaurantDetails.address} + + {restaurantDetails.products.map(product => { + return ( + + ) + }) + } + + } ) } diff --git a/src/screens/RestaurantPage/styles.js b/src/screens/RestaurantPage/styles.js index 7856e38..706a671 100644 --- a/src/screens/RestaurantPage/styles.js +++ b/src/screens/RestaurantPage/styles.js @@ -10,5 +10,42 @@ export const RestaurantPageContainer = styled.div ` border: 1px black solid; ` export const ImageRestaurant = styled.img ` - max-height:120px; + max-height: 120px; +` +export const RestaurantContainer = styled.div ` + border: 1px transparent solid; + border-radius: 5px; + margin: 8px; + text-align: left; +` +export const InfoContainer = styled.div ` + display: flex; + justify-content: space-between; +` +export const ImageContainer = styled.div ` + text-align: center; +` +export const InfoText = styled.p ` + font-family: 'Roboto', sans-serif; + font-size: 16px; + padding: 1px; + margin: 4px; + color: #b8b8b8; +` +export const InfoName = styled.p ` + font-family: 'Roboto', sans-serif; + font-size: 16px; + padding: 1px; + margin: 4px; + color: #5cb646; +` +export const LoadingContainer = styled.div ` + display: flex; + justify-content: center; + align-items: center; +` +export const CardsContainer = styled.div ` + height: 550px; + text-align: center; + overflow: auto; ` \ No newline at end of file From 9c1072aa1911b0955c8c67f0ea2944d07033bd96 Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Wed, 9 Dec 2020 14:07:36 -0300 Subject: [PATCH 27/64] Criado card de pedidos, precisa dos pedidos para poder testar --- src/components/CardOrder/cardOrder.js | 38 ++++++++++++++++++++ src/constants/user.js | 5 ++- src/screens/profilePage/profilePage.js | 49 ++++++++++++-------------- 3 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 src/components/CardOrder/cardOrder.js diff --git a/src/components/CardOrder/cardOrder.js b/src/components/CardOrder/cardOrder.js new file mode 100644 index 0000000..40c9e0f --- /dev/null +++ b/src/components/CardOrder/cardOrder.js @@ -0,0 +1,38 @@ +import React from "react"; + +import { baseUrl } from "../../constants/constants"; +import useRequestData from "../../hooks/useRequestData"; + +const CardOrder = () => { + + + const order = useRequestData(`${baseUrl}/orders/history`, { + headers: { + auth: localStorage.getItem("token") + } + } ) + + + return order ? ( +
+

Você não realizou nenhum pedido.

+
+ ) : ( +
+
+

Frete {order.shipping}

+

Subtotal: R$ 00,00

+
+
+

Método de pagamento

+ +
+
+ ); +} + +export default CardOrder; diff --git a/src/constants/user.js b/src/constants/user.js index beb9879..f436dc3 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -63,4 +63,7 @@ export const Address = (body, history) => { }) -} \ No newline at end of file +} + + + diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js index 1aef454..df8d875 100644 --- a/src/screens/profilePage/profilePage.js +++ b/src/screens/profilePage/profilePage.js @@ -4,6 +4,7 @@ import { baseUrl } from '../../constants/constants' import GlobalStateContext from '../../global/globalStateContext' import useProtectedPage from '../../hooks/useProtectedPage' import useRequestData from '../../hooks/useRequestData' +import CardOrder from "../../components/CardOrder/cardOrder" const ProfilePage = () => { @@ -17,32 +18,28 @@ const ProfilePage = () => { - return ( - profileInfo ? - -
-
-

Nome: {profileInfo.user.name}

-

Email: {profileInfo.user.email}

-

CPF: {profileInfo.user.cpf}

- -
- -
-

Endereço cadastrado:

-

{profileInfo.user.address}

-
-
- - - : - -
-

Carregando...

-
- - - ) + return profileInfo ? ( +
+
+

Nome: {profileInfo.user.name}

+

Email: {profileInfo.user.email}

+

CPF: {profileInfo.user.cpf}

+
+
+

Endereço cadastrado:

+

{profileInfo.user.address}

+
+
+ +
+ +
+ ) : ( +
+

Carregando...

+
+ ); + } From 1869253651c27b8f3ffd02ffd9f2b8f5e7da4614 Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Wed, 9 Dec 2020 14:22:06 -0300 Subject: [PATCH 28/64] Faltou a data do card de historico de pedidos --- src/components/CardOrder/cardOrder.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/CardOrder/cardOrder.js b/src/components/CardOrder/cardOrder.js index 40c9e0f..08b0af2 100644 --- a/src/components/CardOrder/cardOrder.js +++ b/src/components/CardOrder/cardOrder.js @@ -20,7 +20,8 @@ const CardOrder = () => { ) : (
-

Frete {order.shipping}

+

Nome do Restaurante

+

09 de dezembro de 2020

Subtotal: R$ 00,00

From 4fc004406dc59eafbdd81dab8b05504c6740867a Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Wed, 9 Dec 2020 16:35:13 -0300 Subject: [PATCH 29/64] =?UTF-8?q?pequena=20altera=C3=A7=C3=A3o=20no=20layo?= =?UTF-8?q?ut=20da=20pagina=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/screens/loginPage/styled.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/screens/loginPage/styled.js b/src/screens/loginPage/styled.js index 83d8a9c..ab964a6 100644 --- a/src/screens/loginPage/styled.js +++ b/src/screens/loginPage/styled.js @@ -4,7 +4,8 @@ export const LoginContainer = styled.div` width: 360px; height: 640px; padding: 0 0 184px; - + margin: auto; + border: 1px black solid; `; export const Logo = styled.img` From 231cfc8f8d8e53a62f463a84415c8cd9264f3157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Wed, 9 Dec 2020 16:59:52 -0300 Subject: [PATCH 30/64] =?UTF-8?q?P=C3=A1gina=20de=20editar=20perfil=20func?= =?UTF-8?q?ional=20e=20op=C3=A7=C3=A3o=20para=20editar=20endere=C3=A7o=20l?= =?UTF-8?q?inkada=20ao=20perfil.=20Falta=20estiliza=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/user.js | 18 ++++++- src/router/coordinator.js | 4 ++ src/router/router.js | 4 ++ src/screens/profilePage/editProfilePage.js | 55 ++++++++++++++++++++++ src/screens/profilePage/profilePage.js | 10 ++++ 5 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 src/screens/profilePage/editProfilePage.js diff --git a/src/constants/user.js b/src/constants/user.js index beb9879..30b6355 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -1,6 +1,6 @@ import axios from "axios" import {baseUrl} from "./constants" -import { goToFeedPage, goToAdressPage, goToSignUpPage } from "../router/coordinator" +import { goToFeedPage, goToAdressPage, goToSignUpPage, goToProfilePage } from "../router/coordinator" const axiosConfig = { @@ -63,4 +63,20 @@ export const Address = (body, history) => { }) +} + +export const UpdateProfile = (body, history) => { + + axios + .put(`${baseUrl}/profile`, body, axiosConfig) + + .then (()=>{ + alert('Perfil alterado com sucesso!') + goToProfilePage(history) + + }) + .catch((error)=>{ + alert('Deu ruim rapá!') + console.log(error.message) + }) } \ No newline at end of file diff --git a/src/router/coordinator.js b/src/router/coordinator.js index f474772..71ead27 100644 --- a/src/router/coordinator.js +++ b/src/router/coordinator.js @@ -16,4 +16,8 @@ export const goToAdressPage = (history) => { export const goToProfilePage = (history) =>{ history.push('/perfil') +} + +export const goToEditProfile = (history) =>{ + history.push('/editprofile') } \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 6bdf031..c984d16 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -4,6 +4,7 @@ import AddressPage from "../screens/addressPage/addressPage" import FeedPage from "../screens/FeedPage/FeedPage" import InitialPage from "../screens/InitialPage/InitialPage" import LoginPage from "../screens/loginPage/loginPage" +import EditProfilePage from "../screens/profilePage/editProfilePage" import ProfilePage from "../screens/profilePage/profilePage" import SignupPage from "../screens/signupPage/signupPage" @@ -33,6 +34,9 @@ return( + + + diff --git a/src/screens/profilePage/editProfilePage.js b/src/screens/profilePage/editProfilePage.js new file mode 100644 index 0000000..4fa0f7e --- /dev/null +++ b/src/screens/profilePage/editProfilePage.js @@ -0,0 +1,55 @@ +import React from 'react' +import { useHistory } from 'react-router-dom' +import { UpdateProfile } from '../../constants/user' +import { useForm } from '../../hooks/useForm' + +const EditProfilePage = () => { + + const history = useHistory() + const { form, onChange } = useForm({ name: '', email: '', cpf: '' }) + + const handleInput = (event) => { + const { value, name } = event.target + onChange(value, name) + } + + const handleSubmit = (event) => { + event.preventDefault() + UpdateProfile(form, history) + } + + return ( +
+ +
+ + + + + + + +
+ +
+ ) +} + +export default EditProfilePage \ No newline at end of file diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js index 1aef454..9f5e2ce 100644 --- a/src/screens/profilePage/profilePage.js +++ b/src/screens/profilePage/profilePage.js @@ -4,6 +4,7 @@ import { baseUrl } from '../../constants/constants' import GlobalStateContext from '../../global/globalStateContext' import useProtectedPage from '../../hooks/useProtectedPage' import useRequestData from '../../hooks/useRequestData' +import { goToAdressPage, goToEditProfile, goToFeedPage } from '../../router/coordinator' const ProfilePage = () => { @@ -18,19 +19,28 @@ const ProfilePage = () => { return ( + + profileInfo ?
+

Nome: {profileInfo.user.name}

Email: {profileInfo.user.email}

CPF: {profileInfo.user.cpf}

+

Endereço cadastrado:

{profileInfo.user.address}

+ +
+ +
+
From e332d01532db41728f2eeb87f846b3dd6172ba10 Mon Sep 17 00:00:00 2001 From: rafae Date: Wed, 9 Dec 2020 17:30:23 -0300 Subject: [PATCH 31/64] =?UTF-8?q?Pequenas=20mudan=C3=A7as?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardFeed/styles.js | 3 ++ src/components/CardProduct/CardProduct.js | 13 +++++-- src/components/CardProduct/styles.js | 38 ++++++++++++++++++++ src/router/coordinator.js | 1 + src/screens/RestaurantPage/RestaurantPage.js | 3 +- 5 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/components/CardFeed/styles.js b/src/components/CardFeed/styles.js index 46ebd14..4d784a7 100644 --- a/src/components/CardFeed/styles.js +++ b/src/components/CardFeed/styles.js @@ -16,6 +16,9 @@ export const CardStyled = styled.div ` border: 1px lightgrey solid; border-radius: 5px; margin: 8px; + &:hover { + cursor: pointer; + } ` export const InfoText = styled.p ` font-family: 'Roboto', sans-serif; diff --git a/src/components/CardProduct/CardProduct.js b/src/components/CardProduct/CardProduct.js index 81e66c9..c7f5719 100644 --- a/src/components/CardProduct/CardProduct.js +++ b/src/components/CardProduct/CardProduct.js @@ -1,10 +1,14 @@ import React from 'react' import { useHistory } from 'react-router-dom' -import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer } from './styles' +import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer, AddRemoveButton, QuantityContainer, NameContainer } from './styles' const CardProduct = (props) => { const history = useHistory() + const ChangeCart = () => { + alert("mudou carrinho") + } + return ( @@ -12,12 +16,15 @@ const CardProduct = (props) => { - {props.name} + + {props.name} + 2 + {props.description} {props.price.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })} - + adicionar diff --git a/src/components/CardProduct/styles.js b/src/components/CardProduct/styles.js index e408620..79d492b 100644 --- a/src/components/CardProduct/styles.js +++ b/src/components/CardProduct/styles.js @@ -5,6 +5,7 @@ export const InfoContainer = styled.div ` justify-content: space-between; margin-left: 8px; margin-right: 0px; + padding: 0; ` export const ImageContainer = styled.div ` display: flex; @@ -21,6 +22,7 @@ export const CardStyled = styled.div ` border: 1px lightgrey solid; border-radius: 5px; margin: 8px; + padding: 0; ` export const InfoText = styled.p ` font-family: 'Roboto', sans-serif; @@ -51,4 +53,40 @@ export const TextContainer = styled.div ` export const DescriptionContainer = styled.div ` text-align: left; margin: 8px; +` +export const AddRemoveButton = styled.button ` + border: 1px #5cb646 solid; + background-color: transparent; + color: #5cb646; + border-radius: 0px 0px 5px 0px; + height: 31px; + width: 90px; + /* overflow: hidden; + position: relative; + margin: 1em; + &:before{ + content: ''; + display: block; + background: #d33; + height: 31px; + width: 90px; + transform: rotate(45deg); + position: relative; + bottom: 4px; + left: 0px; + } */ + &:hover { + cursor: pointer; + } +` +export const QuantityContainer = styled.div ` + border: 1px #5cb646 solid; + color: #5cb646; + border-radius: 0px 5px 0px 0px; + height: 33px; + width: 33px; +` +export const NameContainer = styled.div ` + display: flex; + justify-content: space-between; ` \ No newline at end of file diff --git a/src/router/coordinator.js b/src/router/coordinator.js index facb178..678eb6c 100644 --- a/src/router/coordinator.js +++ b/src/router/coordinator.js @@ -16,6 +16,7 @@ export const goToAdressPage = (history) => { export const goToRestaurantPage = (history, id) => { history.push (`/restaurantes/${id}`) +} export const goToProfilePage = (history) =>{ history.push('/perfil') diff --git a/src/screens/RestaurantPage/RestaurantPage.js b/src/screens/RestaurantPage/RestaurantPage.js index e30a899..e8d955a 100644 --- a/src/screens/RestaurantPage/RestaurantPage.js +++ b/src/screens/RestaurantPage/RestaurantPage.js @@ -20,7 +20,6 @@ const RestaurantPage = () => { } }) .then((res)=>{ - console.log(res.data.restaurant) setRestaurantDetails(res.data.restaurant) }) .catch((err)=>{ @@ -31,7 +30,7 @@ const RestaurantPage = () => { function goBack() { window.history.back() } -console.log(restaurantDetails.products) + return (
From 248ef6f1e423f196390f9344995631434c390d99 Mon Sep 17 00:00:00 2001 From: rafae Date: Wed, 9 Dec 2020 21:07:24 -0300 Subject: [PATCH 32/64] Filtros funcionais de categorias --- src/screens/FeedPage/FeedPage.js | 80 ++++++++++++++++++++++++-------- src/screens/FeedPage/styles.js | 7 ++- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index cae70e1..21cd4e6 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -12,7 +12,9 @@ const FeedPage = () => { const history = useHistory() const [restaurants,setRestaurants] = useState([]) const [filteredRestaurants,setFilteredRestaurants] = useState([]) + const [categoryRestaurants,setCategoryRestaurants] = useState([]) const [searchContent,setSearchContent] = useState("") + const [filter,setFilter] = useState("") useEffect(()=> { Axios.get(`${baseUrl}/restaurants`, @@ -31,14 +33,34 @@ const FeedPage = () => { },[]) const SearchFilter = (e) => { - const searchArray = restaurants.filter((restaurant) => { - const name = restaurant.name.toLowerCase() - return ( - name.includes(e.target.value.toLowerCase()) - ) - }) - setFilteredRestaurants(searchArray) - setSearchContent(e.target.value) + if(filter===''){ + const searchArray = restaurants.filter((restaurant) => { + const name = restaurant.name.toLowerCase() + return ( + name.includes(e.target.value.toLowerCase()) + ) + }) + setFilteredRestaurants(searchArray) + setSearchContent(e.target.value) + } else { + const searchArray = categoryRestaurants.filter((restaurant) => { + const name = restaurant.name.toLowerCase() + return ( + name.includes(e.target.value.toLowerCase()) + ) + }) + setFilteredRestaurants(searchArray) + setSearchContent('') + } + } + + const FilterCategory = (category) => { + const filteredArray = restaurants.filter(restaurant =>{ + return restaurant.category === category + }) + setFilteredRestaurants(filteredArray) + setCategoryRestaurants(filteredArray) + setFilter(category) } function goBack() { @@ -53,16 +75,36 @@ const FeedPage = () => { - Todos - Ãrabe - Asiática - Baiana - Carnes - Hamburguer - Italiana - Mexicana - Sorvetes - Petiscos + FilterCategory('')}> + {filter===''?

Todos

:

Todos

} +
+ FilterCategory('Ãrabe')}> + {filter==='Ãrabe'?

Ãrabe

:

Ãrabe

} +
+ FilterCategory('Asiática')}> + {filter==='Asiática'?

Asiática

:

Asiática

} +
+ FilterCategory('Baiana')}> + {filter==='Baiana'?

Baiana

:

Baiana

} +
+ FilterCategory('Carnes')}> + {filter==='Carnes'?

Carnes

:

Carnes

} +
+ FilterCategory('Hamburguer')}> + {filter==='Hamburguer'?

Hamburguer

:

Hamburguer

} +
+ FilterCategory('Italiana')}> + {filter==='Italiana'?

Italiana

:

Italiana

} +
+ FilterCategory('Mexicana')}> + {filter==='Mexicana'?

Mexicana

:

Mexicana

} +
+ FilterCategory('Sorvetes')}> + {filter==='Sorvetes'?

Sorvetes

:

Sorvetes

} +
+ FilterCategory('Petiscos')}> + {filter==='Petiscos'?

Petiscos

:

Petiscos

} +
{restaurants.length===0 @@ -71,7 +113,7 @@ const FeedPage = () => { : - searchContent==="" + searchContent==="" && filter==="" ? restaurants.map(restaurant =>{ return ( diff --git a/src/screens/FeedPage/styles.js b/src/screens/FeedPage/styles.js index eff23fc..a90ae07 100644 --- a/src/screens/FeedPage/styles.js +++ b/src/screens/FeedPage/styles.js @@ -10,7 +10,7 @@ export const FeedPageContainer = styled.div ` border: 1px black solid; ` export const CardsContainer = styled.div ` - height: 450px; + height: 400px; text-align: center; overflow: auto; ` @@ -24,7 +24,10 @@ export const FilterContainer = styled.div ` overflow: auto; ` export const Filter = styled.p ` - margin-right: 5px; + margin-right: 10px; + &:hover{ + cursor: pointer; + } ` export const InputStyled = styled.input ` height: 56px; From 251a319faae3cc01287c9c16701dfd8bbfd9ffad Mon Sep 17 00:00:00 2001 From: rafae Date: Thu, 10 Dec 2020 11:01:15 -0300 Subject: [PATCH 33/64] Footer --- src/components/Footer/Footer.js | 48 ++++++++++++++++++++ src/components/Footer/styles.js | 15 ++++++ src/screens/FeedPage/FeedPage.js | 2 + src/screens/RestaurantPage/RestaurantPage.js | 2 + 4 files changed, 67 insertions(+) create mode 100644 src/components/Footer/Footer.js create mode 100644 src/components/Footer/styles.js diff --git a/src/components/Footer/Footer.js b/src/components/Footer/Footer.js new file mode 100644 index 0000000..f6e5dba --- /dev/null +++ b/src/components/Footer/Footer.js @@ -0,0 +1,48 @@ +import React from 'react' +import { ButtonStyled, FooterContainer } from './styles' +import HomeOutlinedIcon from '@material-ui/icons/HomeOutlined'; +import ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined'; +import PersonOutlineOutlinedIcon from '@material-ui/icons/PersonOutlineOutlined'; +import { useHistory } from 'react-router-dom' +import { goToFeedPage, goToProfilePage } from '../../router/coordinator'; + +const Footer = (props) => { + const history = useHistory() + + return ( + + {history.location.pathname==='/feed' + ? + goToFeedPage(history)}> + + + : + goToFeedPage(history)}> + + + } + {history.location.pathname==='/cart' + ? + + + + : + + + + } + {history.location.pathname==='/perfil' + ? + goToProfilePage(history)}> + + + : + goToProfilePage(history)}> + + + } + + ) +} + +export default Footer \ No newline at end of file diff --git a/src/components/Footer/styles.js b/src/components/Footer/styles.js new file mode 100644 index 0000000..cdab7da --- /dev/null +++ b/src/components/Footer/styles.js @@ -0,0 +1,15 @@ +import { Button } from '@material-ui/core' +import styled from 'styled-components' + +export const FooterContainer = styled.div ` + display: flex; + position:fixed; + justify-content: space-around; + height: 49px; + width: 360px; + top: 600px; +` +export const ButtonStyled = styled(Button) ` + padding: 0; + margin: 0; +` \ No newline at end of file diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index 21cd4e6..15497c9 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -6,6 +6,7 @@ import { baseUrl } from '../../constants/constants' import CardFeed from '../../components/CardFeed/CardFeed' import LoadingInvert from '../../components/LoadingInvert/LoadingInvert' import { useHistory } from 'react-router-dom' +import Footer from '../../components/Footer/Footer' const FeedPage = () => { @@ -151,6 +152,7 @@ const FeedPage = () => { }
+
) } diff --git a/src/screens/RestaurantPage/RestaurantPage.js b/src/screens/RestaurantPage/RestaurantPage.js index e8d955a..d405643 100644 --- a/src/screens/RestaurantPage/RestaurantPage.js +++ b/src/screens/RestaurantPage/RestaurantPage.js @@ -6,6 +6,7 @@ import Header from '../../components/Header/Header' import { baseUrl } from '../../constants/constants' import { RestaurantPageContainer, ImageRestaurant, RestaurantContainer, InfoContainer, InfoName, InfoText, ImageContainer, LoadingContainer, CardsContainer } from './styles' import LoadingInvert from '../../components/LoadingInvert/LoadingInvert' +import Footer from '../../components/Footer/Footer' const RestaurantPage = () => { const history = useHistory() @@ -67,6 +68,7 @@ const RestaurantPage = () => { } } +
) } From a7907e513f275ede6cc7aae9b142ec1bf047ddf8 Mon Sep 17 00:00:00 2001 From: rafae Date: Thu, 10 Dec 2020 11:58:47 -0300 Subject: [PATCH 34/64] =?UTF-8?q?Ajustes=20estiliza=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Footer/styles.js | 3 +- src/components/Header/Header.js | 15 +- src/components/Header/styles.js | 4 +- src/screens/FeedPage/FeedPage.js | 165 ++++++++++--------- src/screens/FeedPage/styles.js | 4 +- src/screens/RestaurantPage/RestaurantPage.js | 1 - src/screens/RestaurantPage/styles.js | 3 +- 7 files changed, 107 insertions(+), 88 deletions(-) diff --git a/src/components/Footer/styles.js b/src/components/Footer/styles.js index cdab7da..30337c6 100644 --- a/src/components/Footer/styles.js +++ b/src/components/Footer/styles.js @@ -7,7 +7,8 @@ export const FooterContainer = styled.div ` justify-content: space-around; height: 49px; width: 360px; - top: 600px; + top: 595px; + border-top: 1px solid #b8b8b8; ` export const ButtonStyled = styled(Button) ` padding: 0; diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index cedebfe..11f921b 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -11,7 +11,6 @@ const Header = (props) => { {history.location.pathname==='/feed' ? - FutureEats @@ -23,7 +22,19 @@ const Header = (props) => { ? - Restaurante + + Restaurante + + + : + "" + } + {history.location.pathname==='/perfil' + ? + + + Meu Perfil + : "" diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js index ca2191f..9553adf 100644 --- a/src/components/Header/styles.js +++ b/src/components/Header/styles.js @@ -5,14 +5,16 @@ export const HeaderContainer = styled.div ` display: flex; position:fixed; height: 44px; + width: 360px; top: 0; + border-bottom: 1px solid #b8b8b8; ` export const PageTitle = styled.p ` font-family: 'Roboto', sans-serif; font-size: 16px; ` export const TitleContainer = styled.div ` - + margin: auto; ` export const ButtonStyled = styled(Button) ` padding: 0; diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index 15497c9..58f051b 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -69,91 +69,94 @@ const FeedPage = () => { } return ( - -
-
- - - - - FilterCategory('')}> - {filter===''?

Todos

:

Todos

} -
- FilterCategory('Ãrabe')}> - {filter==='Ãrabe'?

Ãrabe

:

Ãrabe

} -
- FilterCategory('Asiática')}> - {filter==='Asiática'?

Asiática

:

Asiática

} -
- FilterCategory('Baiana')}> - {filter==='Baiana'?

Baiana

:

Baiana

} -
- FilterCategory('Carnes')}> - {filter==='Carnes'?

Carnes

:

Carnes

} -
- FilterCategory('Hamburguer')}> - {filter==='Hamburguer'?

Hamburguer

:

Hamburguer

} -
- FilterCategory('Italiana')}> - {filter==='Italiana'?

Italiana

:

Italiana

} -
- FilterCategory('Mexicana')}> - {filter==='Mexicana'?

Mexicana

:

Mexicana

} -
- FilterCategory('Sorvetes')}> - {filter==='Sorvetes'?

Sorvetes

:

Sorvetes

} -
- FilterCategory('Petiscos')}> - {filter==='Petiscos'?

Petiscos

:

Petiscos

} -
-
- - {restaurants.length===0 - ? - - - - : - searchContent==="" && filter==="" + + + +
+
+ + + + + FilterCategory('')}> + {filter===''?

Todos

:

Todos

} +
+ FilterCategory('Ãrabe')}> + {filter==='Ãrabe'?

Ãrabe

:

Ãrabe

} +
+ FilterCategory('Asiática')}> + {filter==='Asiática'?

Asiática

:

Asiática

} +
+ FilterCategory('Baiana')}> + {filter==='Baiana'?

Baiana

:

Baiana

} +
+ FilterCategory('Carnes')}> + {filter==='Carnes'?

Carnes

:

Carnes

} +
+ FilterCategory('Hamburguer')}> + {filter==='Hamburguer'?

Hamburguer

:

Hamburguer

} +
+ FilterCategory('Italiana')}> + {filter==='Italiana'?

Italiana

:

Italiana

} +
+ FilterCategory('Mexicana')}> + {filter==='Mexicana'?

Mexicana

:

Mexicana

} +
+ FilterCategory('Sorvetes')}> + {filter==='Sorvetes'?

Sorvetes

:

Sorvetes

} +
+ FilterCategory('Petiscos')}> + {filter==='Petiscos'?

Petiscos

:

Petiscos

} +
+
+ + {restaurants.length===0 ? - restaurants.map(restaurant =>{ - return ( - - ) - }) + + + : -
- {filteredRestaurants.length===0 + searchContent==="" && filter==="" ? -

Não encontramos :(

+ restaurants.map(restaurant =>{ + return ( + + ) + }) : - "" - } - {filteredRestaurants.map(restaurant =>{ - return ( - - ) - })} -
- } -
-
-
- +
+ {filteredRestaurants.length===0 + ? +

Não encontramos :(

+ : + "" + } + {filteredRestaurants.map(restaurant =>{ + return ( + + ) + })} +
+ } + +
+
+ + ) } diff --git a/src/screens/FeedPage/styles.js b/src/screens/FeedPage/styles.js index a90ae07..37376ed 100644 --- a/src/screens/FeedPage/styles.js +++ b/src/screens/FeedPage/styles.js @@ -5,12 +5,13 @@ export const FeedPageContainer = styled.div ` justify-content: center; align-items: center; margin: auto; + padding: 0; width: 360px; height: 640px; border: 1px black solid; ` export const CardsContainer = styled.div ` - height: 400px; + height: 380px; text-align: center; overflow: auto; ` @@ -21,6 +22,7 @@ export const FilterContainer = styled.div ` display: flex; align-items: center; width: 330px; + margin-left: 8px; overflow: auto; ` export const Filter = styled.p ` diff --git a/src/screens/RestaurantPage/RestaurantPage.js b/src/screens/RestaurantPage/RestaurantPage.js index d405643..6be8743 100644 --- a/src/screens/RestaurantPage/RestaurantPage.js +++ b/src/screens/RestaurantPage/RestaurantPage.js @@ -68,7 +68,6 @@ const RestaurantPage = () => { } } -
) } diff --git a/src/screens/RestaurantPage/styles.js b/src/screens/RestaurantPage/styles.js index 706a671..3b2bde4 100644 --- a/src/screens/RestaurantPage/styles.js +++ b/src/screens/RestaurantPage/styles.js @@ -45,7 +45,8 @@ export const LoadingContainer = styled.div ` align-items: center; ` export const CardsContainer = styled.div ` - height: 550px; + height: 595px; text-align: center; + margin-top: 40px; overflow: auto; ` \ No newline at end of file From b323accf6f50cba9e71e960f61a60b9fab6fd456 Mon Sep 17 00:00:00 2001 From: rafae Date: Thu, 10 Dec 2020 12:43:41 -0300 Subject: [PATCH 35/64] Ajustes e ErrorPage --- src/components/CardProduct/styles.js | 14 -------------- src/components/Footer/Footer.js | 4 ++-- src/router/coordinator.js | 4 ++++ src/router/router.js | 8 ++++---- src/screens/ErrorPage/ErrorPage.js | 25 +++++++++++++++++++++++++ src/screens/ErrorPage/styles.js | 26 ++++++++++++++++++++++++++ 6 files changed, 61 insertions(+), 20 deletions(-) create mode 100644 src/screens/ErrorPage/ErrorPage.js create mode 100644 src/screens/ErrorPage/styles.js diff --git a/src/components/CardProduct/styles.js b/src/components/CardProduct/styles.js index 79d492b..9092c51 100644 --- a/src/components/CardProduct/styles.js +++ b/src/components/CardProduct/styles.js @@ -61,20 +61,6 @@ export const AddRemoveButton = styled.button ` border-radius: 0px 0px 5px 0px; height: 31px; width: 90px; - /* overflow: hidden; - position: relative; - margin: 1em; - &:before{ - content: ''; - display: block; - background: #d33; - height: 31px; - width: 90px; - transform: rotate(45deg); - position: relative; - bottom: 4px; - left: 0px; - } */ &:hover { cursor: pointer; } diff --git a/src/components/Footer/Footer.js b/src/components/Footer/Footer.js index f6e5dba..bccc065 100644 --- a/src/components/Footer/Footer.js +++ b/src/components/Footer/Footer.js @@ -4,7 +4,7 @@ import HomeOutlinedIcon from '@material-ui/icons/HomeOutlined'; import ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined'; import PersonOutlineOutlinedIcon from '@material-ui/icons/PersonOutlineOutlined'; import { useHistory } from 'react-router-dom' -import { goToFeedPage, goToProfilePage } from '../../router/coordinator'; +import { goToCart, goToFeedPage, goToProfilePage } from '../../router/coordinator'; const Footer = (props) => { const history = useHistory() @@ -23,7 +23,7 @@ const Footer = (props) => { } {history.location.pathname==='/cart' ? - + goToCart(history)}> : diff --git a/src/router/coordinator.js b/src/router/coordinator.js index 8d26791..b71720d 100644 --- a/src/router/coordinator.js +++ b/src/router/coordinator.js @@ -24,4 +24,8 @@ export const goToProfilePage = (history) =>{ export const goToEditProfile = (history) =>{ history.push('/editprofile') +} + +export const goToCart = (history) =>{ + history.push('/carrinho') } \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 0f12c2f..6a80a21 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -11,6 +11,7 @@ import RestaurantPage from "../screens/RestaurantPage/RestaurantPage" import ProfilePage from "../screens/profilePage/profilePage" import SignupPage from "../screens/signupPage/signupPage" +import ErrorPage from "../screens/ErrorPage/ErrorPage" function Router(){ @@ -36,17 +37,16 @@ return( - + - + - - + diff --git a/src/screens/ErrorPage/ErrorPage.js b/src/screens/ErrorPage/ErrorPage.js new file mode 100644 index 0000000..998fbaf --- /dev/null +++ b/src/screens/ErrorPage/ErrorPage.js @@ -0,0 +1,25 @@ + +import React, { useEffect, useState } from 'react' +import { useHistory } from 'react-router-dom' +import Footer from '../../components/Footer/Footer' +import { goToFeedPage } from '../../router/coordinator' +import { ButtonStyled, ErrorPageContainer } from './styles' + + +const ErrorPage = () => { + const history = useHistory() + + return ( + + + + Desculpe. Página inexistente. + goToFeedPage(history)}>Voltar para Início + +
+ + + ) +} + +export default ErrorPage \ No newline at end of file diff --git a/src/screens/ErrorPage/styles.js b/src/screens/ErrorPage/styles.js new file mode 100644 index 0000000..0930265 --- /dev/null +++ b/src/screens/ErrorPage/styles.js @@ -0,0 +1,26 @@ +import styled from 'styled-components' +import { Button } from '@material-ui/core' + +export const ErrorPageContainer = styled.div ` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin: auto; + padding: 0; + width: 360px; + height: 640px; + border: 1px black solid; +` +export const ButtonStyled = styled.button ` + border: 3px #5cb646 solid; + background-color: transparent; + color: #5cb646; + margin: 20px; + padding: 10px; + font-family: 'Roboto', sans-serif; + font-size: 16px; + &:hover { + cursor: pointer; + } +` \ No newline at end of file From 1f688107e74948859ec38ffef6a150607ad501f0 Mon Sep 17 00:00:00 2001 From: rafae Date: Thu, 10 Dec 2020 13:06:13 -0300 Subject: [PATCH 36/64] Pequenos ajustes --- src/screens/FeedPage/FeedPage.js | 3 --- src/screens/FeedPage/styles.js | 7 +++++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index 58f051b..3c988e0 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -69,8 +69,6 @@ const FeedPage = () => { } return ( - -
@@ -156,7 +154,6 @@ const FeedPage = () => {
- ) } diff --git a/src/screens/FeedPage/styles.js b/src/screens/FeedPage/styles.js index 37376ed..71d730d 100644 --- a/src/screens/FeedPage/styles.js +++ b/src/screens/FeedPage/styles.js @@ -11,19 +11,22 @@ export const FeedPageContainer = styled.div ` border: 1px black solid; ` export const CardsContainer = styled.div ` - height: 380px; + height: 435px; text-align: center; overflow: auto; ` export const InputContainer = styled.div ` text-align: center; + margin-top: 10px; ` export const FilterContainer = styled.div ` display: flex; align-items: center; width: 330px; + height: 42px; margin-left: 8px; - overflow: auto; + overflow-x: scroll; + overflow-y: hidden; ` export const Filter = styled.p ` margin-right: 10px; From 6c2298e71b231642bf5aa30f5cf3c0b4a041a818 Mon Sep 17 00:00:00 2001 From: Rafael Gomes da Fontes <71147794+rafagf77@users.noreply.github.com> Date: Thu, 10 Dec 2020 13:32:09 -0300 Subject: [PATCH 37/64] Update README.md --- README.md | 77 ++++++++++--------------------------------------------- 1 file changed, 14 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 54ef094..8382a18 100644 --- a/README.md +++ b/README.md @@ -1,68 +1,19 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). +### FUTURE EATS -## Available Scripts +### Integrantes do Grupo +- Fábio Jordão +- José Rafael +- Joyce Roberta +- Rafael Fontes -In the project directory, you can run: +### O que funciona +- DESCREVA O QUE FUNCIONA NO SEU PROJETO -### `npm start` +### O que não funciona +- DESCREVA O QUE NÃO FUNCIONA NO SEU PROJETO -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. +### Link Surge +A PARTIR DA SEMANA 5, INSIRA AQUI O LINK DO SURGE. **ANTES DISSO, APAGUE ESSAS DUAS LINHAS.** -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting - -### Analyzing the Bundle Size - -This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size - -### Making a Progressive Web App - -This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app - -### Advanced Configuration - -This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration - -### Deployment - -This section has moved here: https://facebook.github.io/create-react-app/docs/deployment - -### `npm run build` fails to minify - -This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify +### Imagens +TIRE PRINTS DAS TELAS DO SEU SITE E COLE AQUI From a6c4d905e837b4925fcbcc957f13f6f7a760cfc1 Mon Sep 17 00:00:00 2001 From: RafaelOliveira215 Date: Thu, 10 Dec 2020 14:33:28 -0300 Subject: [PATCH 38/64] teste --- src/global/globalState.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/global/globalState.js b/src/global/globalState.js index 8d80a4a..fbcf9ae 100644 --- a/src/global/globalState.js +++ b/src/global/globalState.js @@ -15,7 +15,7 @@ const GlobalState = (props) =>{ {props.children} - +ffffffffffff ) } export default GlobalState \ No newline at end of file From c92f987096a8b29b66bd283358f008d22415e9e2 Mon Sep 17 00:00:00 2001 From: RafaelOliveira215 Date: Thu, 10 Dec 2020 14:41:32 -0300 Subject: [PATCH 39/64] cartPage --- debug.log | 1 + src/components/CardProduct/CardProduct.js | 24 +++++++++------- src/global/globalState.js | 9 +++--- src/screens/cartPage/cartPage.js | 35 +++++++++++++++++++++++ 4 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 src/screens/cartPage/cartPage.js diff --git a/debug.log b/debug.log index e96b395..1538bb5 100644 --- a/debug.log +++ b/debug.log @@ -1,2 +1,3 @@ [1207/150005.674:ERROR:directory_reader_win.cc(43)] FindFirstFile: O sistema não pode encontrar o caminho especificado. (0x3) [1208/142513.186:ERROR:directory_reader_win.cc(43)] FindFirstFile: O sistema não pode encontrar o caminho especificado. (0x3) +[1210/144009.023:ERROR:directory_reader_win.cc(43)] FindFirstFile: O sistema não pode encontrar o caminho especificado. (0x3) diff --git a/src/components/CardProduct/CardProduct.js b/src/components/CardProduct/CardProduct.js index c7f5719..42a2710 100644 --- a/src/components/CardProduct/CardProduct.js +++ b/src/components/CardProduct/CardProduct.js @@ -1,14 +1,21 @@ -import React from 'react' +import React, { useContext } from 'react' import { useHistory } from 'react-router-dom' -import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer, AddRemoveButton, QuantityContainer, NameContainer } from './styles' +import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer } from './styles' +import GlobalStateContex from "../../global/globalStateContext" + const CardProduct = (props) => { const history = useHistory() + const {states,setters} =useContext(GlobalStateContex) - const ChangeCart = () => { - alert("mudou carrinho") + const saveOrder =(props) =>{ + let newCart = [...states.cart] + newCart.push(props.name) + setters.setCart(newCart) + console.log(states.cart) + history.push("/cart") } - + console.log(states.cart) return ( @@ -16,15 +23,12 @@ const CardProduct = (props) => { - - {props.name} - 2 - + {props.name} {props.description} {props.price.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })} - adicionar + diff --git a/src/global/globalState.js b/src/global/globalState.js index fbcf9ae..c9a414a 100644 --- a/src/global/globalState.js +++ b/src/global/globalState.js @@ -2,12 +2,14 @@ import React, { useState } from "react" import GlobalStateContex from "./globalStateContext" const GlobalState = (props) =>{ - + const [restaurante,setRestaurante] = useState({}) + const [cart,setCart] = useState([]) const [profile, setProfile] = useState([]) + const states = {restaurante,cart,profile} + const setters = {setRestaurante,setCart,setProfile} + - const states = {profile} - const setters = {setProfile} const data = {states,setters} @@ -15,7 +17,6 @@ const GlobalState = (props) =>{ {props.children} -ffffffffffff ) } export default GlobalState \ No newline at end of file diff --git a/src/screens/cartPage/cartPage.js b/src/screens/cartPage/cartPage.js new file mode 100644 index 0000000..0b4aa6c --- /dev/null +++ b/src/screens/cartPage/cartPage.js @@ -0,0 +1,35 @@ +import React, { useContext, useEffect, useState } from "react" +import GlobalStateContext from "../../global/globalStateContext" +import axios from "axios" +import useProtectedPage from "../../hooks/useProtectedPage" + + + +const CartPage = () =>{ + useProtectedPage() + const {states,setters} = useContext(GlobalStateContext) + const [adress,setAdress] = useState({}) + + useEffect(()=>{ + axios.get(`https://us-central1-missao-newton.cloudfunctions.net/futureEatsA/profile/address`, + {headers:{ + auth:localStorage.getItem("token") + }}).then(response =>{ + setAdress(response) + }) + },[]) + + + return( +
+ {states.cart.length === 0 ? +

carrinho vazio

: + states.cart.map(item =>{ + return( +

x{item}

+ )} + )} +
+ ) +} +export default CartPage \ No newline at end of file From dabf8f9c677c2813d3bdbe6f09f4820165f956ae Mon Sep 17 00:00:00 2001 From: RafaelOliveira215 Date: Thu, 10 Dec 2020 15:00:41 -0300 Subject: [PATCH 40/64] cartpagefix --- src/router/router.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/router/router.js b/src/router/router.js index 6a80a21..79caad4 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -4,15 +4,12 @@ import AddressPage from "../screens/addressPage/addressPage" import FeedPage from "../screens/FeedPage/FeedPage" import InitialPage from "../screens/InitialPage/InitialPage" import LoginPage from "../screens/loginPage/loginPage" - import EditProfilePage from "../screens/profilePage/editProfilePage" - import RestaurantPage from "../screens/RestaurantPage/RestaurantPage" - import ProfilePage from "../screens/profilePage/profilePage" import SignupPage from "../screens/signupPage/signupPage" import ErrorPage from "../screens/ErrorPage/ErrorPage" - +import CartPage from "../screens/cartPage/cartPage" function Router(){ return( @@ -31,7 +28,7 @@ return( - + From dfde9df3f2fa236c6ee2b8b81f53cb3cca20cd51 Mon Sep 17 00:00:00 2001 From: rafae Date: Thu, 10 Dec 2020 15:21:49 -0300 Subject: [PATCH 41/64] =?UTF-8?q?corre=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardProduct/CardProduct.js | 12 +++++++----- src/components/CardProduct/styles.js | 2 +- src/components/Footer/Footer.js | 4 ++-- src/router/router.js | 7 ++----- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/components/CardProduct/CardProduct.js b/src/components/CardProduct/CardProduct.js index 42a2710..a6edf27 100644 --- a/src/components/CardProduct/CardProduct.js +++ b/src/components/CardProduct/CardProduct.js @@ -1,6 +1,6 @@ import React, { useContext } from 'react' import { useHistory } from 'react-router-dom' -import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer } from './styles' +import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer, AddButton, QuantityContainer, NameContainer } from './styles' import GlobalStateContex from "../../global/globalStateContext" @@ -13,9 +13,8 @@ const CardProduct = (props) => { newCart.push(props.name) setters.setCart(newCart) console.log(states.cart) - history.push("/cart") } - console.log(states.cart) + return ( @@ -23,12 +22,15 @@ const CardProduct = (props) => { - {props.name} + + {props.name} + 2 + {props.description} {props.price.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })} - + saveOrder(props)}>adicionar diff --git a/src/components/CardProduct/styles.js b/src/components/CardProduct/styles.js index 9092c51..fe73a69 100644 --- a/src/components/CardProduct/styles.js +++ b/src/components/CardProduct/styles.js @@ -54,7 +54,7 @@ export const DescriptionContainer = styled.div ` text-align: left; margin: 8px; ` -export const AddRemoveButton = styled.button ` +export const AddButton = styled.button ` border: 1px #5cb646 solid; background-color: transparent; color: #5cb646; diff --git a/src/components/Footer/Footer.js b/src/components/Footer/Footer.js index bccc065..b54730d 100644 --- a/src/components/Footer/Footer.js +++ b/src/components/Footer/Footer.js @@ -21,13 +21,13 @@ const Footer = (props) => { } - {history.location.pathname==='/cart' + {history.location.pathname==='/carrinho' ? goToCart(history)}> : - + goToCart(history)}> } diff --git a/src/router/router.js b/src/router/router.js index 6a80a21..6a6b8d3 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -4,15 +4,12 @@ import AddressPage from "../screens/addressPage/addressPage" import FeedPage from "../screens/FeedPage/FeedPage" import InitialPage from "../screens/InitialPage/InitialPage" import LoginPage from "../screens/loginPage/loginPage" - import EditProfilePage from "../screens/profilePage/editProfilePage" - import RestaurantPage from "../screens/RestaurantPage/RestaurantPage" - import ProfilePage from "../screens/profilePage/profilePage" import SignupPage from "../screens/signupPage/signupPage" import ErrorPage from "../screens/ErrorPage/ErrorPage" - +import CartPage from '../screens/cartPage/cartPage' function Router(){ return( @@ -31,7 +28,7 @@ return( - + From cf0316c3bf2624e9271d4ec2cfc9ef64cd255e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Thu, 10 Dec 2020 15:57:01 -0300 Subject: [PATCH 42/64] =?UTF-8?q?Estiliza=C3=A7=C3=A3o=20da=20p=C3=A1gina?= =?UTF-8?q?=20de=20perfil=20iniciada.=20Faltam=20as=20informa=C3=A7=C3=B5e?= =?UTF-8?q?s=20do=20hist=C3=B3rico=20de=20pedidos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/img/Thumbs.db | Bin 0 -> 40960 bytes src/assets/img/edit-profile.svg | 11 +++++ src/screens/profilePage/profilePage.js | 31 ++++++++------ src/screens/profilePage/styles.js | 56 +++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 src/assets/img/Thumbs.db create mode 100644 src/assets/img/edit-profile.svg diff --git a/src/assets/img/Thumbs.db b/src/assets/img/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..1d150c6a434ed1fd201c0204ee86e695e3e8c3cb GIT binary patch literal 40960 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 + + + + + + + + + + diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js index 2721b5b..100dfaf 100644 --- a/src/screens/profilePage/profilePage.js +++ b/src/screens/profilePage/profilePage.js @@ -4,10 +4,15 @@ import { baseUrl } from '../../constants/constants' import GlobalStateContext from '../../global/globalStateContext' import useProtectedPage from '../../hooks/useProtectedPage' import useRequestData from '../../hooks/useRequestData' +import Header from '../../components/Header/Header' +import {ButtonStyled} from '../../components/Header/styles' +import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' +import Loading from '../../components/Loading/Loading' import { goToAdressPage, goToEditProfile, goToFeedPage } from '../../router/coordinator' import CardOrder from "../../components/CardOrder/cardOrder" +import { Profile, ProfileCPF, ProfileEmail, ProfileEmailDiv, ProfileName } from './styles' const ProfilePage = () => { @@ -28,21 +33,23 @@ const ProfilePage = () => { profileInfo ? -
- + + +
+ goToFeedPage(history)}>
-

Nome: {profileInfo.user.name}

-

Email: {profileInfo.user.email}

-

CPF: {profileInfo.user.cpf}

+ Nome: {profileInfo.user.name} + Email: {profileInfo.user.email} + CPF: {profileInfo.user.cpf}
-
+

Endereço cadastrado:

{profileInfo.user.address}

-
+
@@ -50,14 +57,14 @@ const ProfilePage = () => {
-
+ : - -
-

Carregando...

-
+ +
+

Carregando...

+
) diff --git a/src/screens/profilePage/styles.js b/src/screens/profilePage/styles.js index e69de29..fa064f7 100644 --- a/src/screens/profilePage/styles.js +++ b/src/screens/profilePage/styles.js @@ -0,0 +1,56 @@ +import styled from 'styled-components' + +export const Profile = styled.div` +width: 360px; + height: 640px; +` + +export const ProfileName = styled.p` +width: 328px; + height: 18px; + margin: 16px 16px 8px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` + +export const ProfileEmail = styled.p` +width: 328px; + height: 18px; + margin: 2px 16px 8px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` + +export const ProfileCPF = styled.p` +width: 328px; + height: 18px; + margin: 8px 16px 16px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` + +export const ProfileEmailDiv = styled.div` +width: 360px; + height: 76px; + margin: 16px 0; + padding: 16px; + background-color: #eeeeee; +` \ No newline at end of file From a731eb1fe2d06c984fc1bb92f8df414877a1b209 Mon Sep 17 00:00:00 2001 From: rafae Date: Thu, 10 Dec 2020 17:09:27 -0300 Subject: [PATCH 43/64] ajustes CSS do CardProduct --- src/components/CardProduct/CardProduct.js | 3 ++- src/components/CardProduct/styles.js | 25 +++++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/components/CardProduct/CardProduct.js b/src/components/CardProduct/CardProduct.js index a6edf27..78bdc3d 100644 --- a/src/components/CardProduct/CardProduct.js +++ b/src/components/CardProduct/CardProduct.js @@ -1,6 +1,6 @@ import React, { useContext } from 'react' import { useHistory } from 'react-router-dom' -import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer, AddButton, QuantityContainer, NameContainer } from './styles' +import { InfoContainer, ImageRestaurant, CardStyled, InfoText, InfoName, ImageContainer, TextContainer, PriceText, DescriptionContainer, AddButton, QuantityContainer, NameContainer, RemoveButton } from './styles' import GlobalStateContex from "../../global/globalStateContext" @@ -31,6 +31,7 @@ const CardProduct = (props) => { {props.price.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })} saveOrder(props)}>adicionar + {/* remover */} diff --git a/src/components/CardProduct/styles.js b/src/components/CardProduct/styles.js index fe73a69..704af63 100644 --- a/src/components/CardProduct/styles.js +++ b/src/components/CardProduct/styles.js @@ -9,7 +9,8 @@ export const InfoContainer = styled.div ` ` export const ImageContainer = styled.div ` display: flex; - align-items: center; + align-items: center; + width: 96px; ` export const ImageRestaurant = styled.img ` max-width: 96px; @@ -49,16 +50,31 @@ export const TextContainer = styled.div ` display: flex; flex-direction: column; justify-content: space-between; + width: 232px; + height: 112px; + margin: 0; + padding: 0; ` export const DescriptionContainer = styled.div ` text-align: left; - margin: 8px; + margin-left: 8px; ` export const AddButton = styled.button ` border: 1px #5cb646 solid; background-color: transparent; color: #5cb646; - border-radius: 0px 0px 5px 0px; + border-radius: 5px 0px 5px 0px; + height: 31px; + width: 90px; + &:hover { + cursor: pointer; + } +` +export const RemoveButton = styled.button ` + border: 1px red solid; + background-color: transparent; + color: red; + border-radius: 5px 0px 5px 0px; height: 31px; width: 90px; &:hover { @@ -68,11 +84,12 @@ export const AddButton = styled.button ` export const QuantityContainer = styled.div ` border: 1px #5cb646 solid; color: #5cb646; - border-radius: 0px 5px 0px 0px; + border-radius: 0px 5px 0px 5px; height: 33px; width: 33px; ` export const NameContainer = styled.div ` display: flex; justify-content: space-between; + width: 224px; ` \ No newline at end of file From 7dde5b4c288cdd50b52f02ea59aea700f0855ccc Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Thu, 10 Dec 2020 17:28:07 -0300 Subject: [PATCH 44/64] =?UTF-8?q?Component=20hist=C3=B3rico=20de=20pedidos?= =?UTF-8?q?=20funcionando=20OK,=20depois=20de=20muita=20luta=20e=20muito?= =?UTF-8?q?=20sofrimento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardOrder/cardOrder.js | 41 +++----- src/screens/profilePage/profilePage.js | 127 ++++++++++++------------- 2 files changed, 74 insertions(+), 94 deletions(-) diff --git a/src/components/CardOrder/cardOrder.js b/src/components/CardOrder/cardOrder.js index 08b0af2..34b05b9 100644 --- a/src/components/CardOrder/cardOrder.js +++ b/src/components/CardOrder/cardOrder.js @@ -1,39 +1,20 @@ -import React from "react"; +import React, { useState, useEffect } from "react"; -import { baseUrl } from "../../constants/constants"; -import useRequestData from "../../hooks/useRequestData"; -const CardOrder = () => { +const CardOrder = (props) => { + const date = new Date(props.date); + let options = { day: "numeric", month: "long", year: "numeric" }; + const newDate = date.toLocaleDateString("pt-PT", options); + const formatDate = newDate.split("de "); - const order = useRequestData(`${baseUrl}/orders/history`, { - headers: { - auth: localStorage.getItem("token") - } - } ) - - - return order ? ( -
-

Você não realizou nenhum pedido.

-
- ) : ( + return (
-
-

Nome do Restaurante

-

09 de dezembro de 2020

-

Subtotal: R$ 00,00

-
-
-

Método de pagamento

- -
+

{props.restaurantName}

+

{formatDate}

+

SUBTOTAL R${props.totalPrice}

); -} +}; export default CardOrder; diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js index 2721b5b..3a64de5 100644 --- a/src/screens/profilePage/profilePage.js +++ b/src/screens/profilePage/profilePage.js @@ -1,69 +1,68 @@ -import React, { useContext } from 'react' -import { useHistory } from 'react-router-dom' -import { baseUrl } from '../../constants/constants' -import GlobalStateContext from '../../global/globalStateContext' -import useProtectedPage from '../../hooks/useProtectedPage' -import useRequestData from '../../hooks/useRequestData' +import React, { useContext, } from "react"; +import { useHistory } from "react-router-dom"; +import { baseUrl } from "../../constants/constants"; +import GlobalStateContext from "../../global/globalStateContext"; +import useProtectedPage from "../../hooks/useProtectedPage"; +import useRequestData from "../../hooks/useRequestData"; -import { goToAdressPage, goToEditProfile, goToFeedPage } from '../../router/coordinator' - -import CardOrder from "../../components/CardOrder/cardOrder" +import { + goToAdressPage, + goToEditProfile, + goToFeedPage, +} from "../../router/coordinator"; +import CardOrder from "../../components/CardOrder/cardOrder"; const ProfilePage = () => { - - useProtectedPage() - - const { states, setters } = useContext(GlobalStateContext) - - const history = useHistory() - - const profileInfo = useRequestData(`${baseUrl}/profile`, undefined) - - - - - return ( - - - profileInfo ? - -
- -
-

Nome: {profileInfo.user.name}

-

Email: {profileInfo.user.email}

-

CPF: {profileInfo.user.cpf}

- - -
- -
-

Endereço cadastrado:

-

{profileInfo.user.address}

- -
- -
-
- + useProtectedPage(); + + const { states, setters } = useContext(GlobalStateContext); + + const history = useHistory(); + + const profileInfo = useRequestData(`${baseUrl}/profile`, undefined); + const ordersHistory = useRequestData(`${baseUrl}/orders/history`) + + return profileInfo ? ( +
+ +
+

Nome: {profileInfo.user.name}

+

Email: {profileInfo.user.email}

+

CPF: {profileInfo.user.cpf}

+ +
+ +
+

Endereço cadastrado:

+

{profileInfo.user.address}

+ +
+ +
+
+
+

Histórico de Pedidos

+ {ordersHistory && + ordersHistory.orders.map((order, id) => { + return ( + + ); + })} +
- -
-
- - - : - -
-

Carregando...

-
- - - ) - - - -} - -export default ProfilePage \ No newline at end of file +
+
+ ) : ( +
+

Você não realizou nenhum pedido

+
+ ); +}; + +export default ProfilePage; From 323a4c196ad7cadfe99e95cab3a782f7bb044ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Thu, 10 Dec 2020 18:16:44 -0300 Subject: [PATCH 45/64] =?UTF-8?q?P=C3=A1gina=20de=20editar=20endere=C3=A7o?= =?UTF-8?q?=20e=20perfil=20estilizadas.=20P=C3=A1gina=20de=20perfil=20falt?= =?UTF-8?q?ando=20apenas=20a=20estiliza=C3=A7=C3=A3o=20do=20hist=C3=B3rico?= =?UTF-8?q?=20de=20pedidos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/Header.js | 32 +++++- src/constants/user.js | 20 ++++ src/router/coordinator.js | 4 + src/router/router.js | 4 + src/screens/profilePage/editAddressPage.js | 113 +++++++++++++++++++++ src/screens/profilePage/editProfilePage.js | 28 +++-- src/screens/profilePage/profilePage.js | 15 +-- src/screens/profilePage/styles.js | 83 +++++++++++++++ 8 files changed, 282 insertions(+), 17 deletions(-) create mode 100644 src/screens/profilePage/editAddressPage.js diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 11f921b..f1896d3 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -2,13 +2,14 @@ import React from 'react' import { ButtonStyled, HeaderContainer, PageTitle, TitleContainer } from './styles' import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' import { useHistory } from 'react-router-dom' +import {goToProfilePage} from '../../router/coordinator' const Header = (props) => { const history = useHistory() return (
- {history.location.pathname==='/feed' + {history.location.pathname === '/feed' ? @@ -21,15 +22,15 @@ const Header = (props) => { {history.location.pathname.includes('/restaurantes') ? - - + + Restaurante : "" } - {history.location.pathname==='/perfil' + {history.location.pathname === '/perfil' ? @@ -39,6 +40,29 @@ const Header = (props) => { : "" } + + {history.location.pathname === '/editprofile' + ? + + + Editar + + + + : + "" + } + + {history.location.pathname === '/editaddress' + ? + + + Endereço + + + : + "" + }
) } diff --git a/src/constants/user.js b/src/constants/user.js index 1f1b6e4..e8ee555 100644 --- a/src/constants/user.js +++ b/src/constants/user.js @@ -63,6 +63,26 @@ export const Address = (body, history) => { }) +} + +export const EditAddress = (body, history) => { + + axios + .put(`${baseUrl}/address`, body, axiosConfig) + + .then ((response)=>{ + localStorage.setItem('token', response.data.token) + alert("Endereço atualizado com sucesso!") + goToProfilePage(history) + + }) + + .catch((error)=>{ + alert("Deu ruim rapá!") + console.log(error) + }) + + } diff --git a/src/router/coordinator.js b/src/router/coordinator.js index b71720d..988b766 100644 --- a/src/router/coordinator.js +++ b/src/router/coordinator.js @@ -28,4 +28,8 @@ export const goToEditProfile = (history) =>{ export const goToCart = (history) =>{ history.push('/carrinho') +} + +export const goToEditAddress = (history) =>{ + history.push('/editaddress') } \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 79caad4..638c65b 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -10,6 +10,7 @@ import ProfilePage from "../screens/profilePage/profilePage" import SignupPage from "../screens/signupPage/signupPage" import ErrorPage from "../screens/ErrorPage/ErrorPage" import CartPage from "../screens/cartPage/cartPage" +import EditAddressPage from '../screens/profilePage/editAddressPage' function Router(){ return( @@ -42,6 +43,9 @@ return( + + + diff --git a/src/screens/profilePage/editAddressPage.js b/src/screens/profilePage/editAddressPage.js new file mode 100644 index 0000000..fe388a5 --- /dev/null +++ b/src/screens/profilePage/editAddressPage.js @@ -0,0 +1,113 @@ +import React from 'react' +import { EditAddress } from '../../constants/user' +import { useForm } from '../../hooks/useForm' +import { useHistory } from 'react-router-dom' +import useProtectedPage from '../../hooks/useProtectedPage' +import { StyledAddress, InputAddressDiv, InputAddress } from '../addressPage/styles' +import { InputButton } from '../signupPage/styles' +import Header from '../../components/Header/Header' +import {goToProfilePage} from '../../router/coordinator' +import {ButtonStyled} from '../../components/Header/styles' +import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' + + + +const EditAddressPage = () => { + + useProtectedPage() + + const history = useHistory() + const { form, onChange } = useForm({ street: "", number: "", neighbourhood: "", city: "", state: "", complement: "" }) + + const handleInput = (event) => { + const { value, name } = event.target + onChange(value, name) + } + + const handleSubmit = (event) => { + event.preventDefault() + EditAddress(form, history) + } + + return ( + + +
+ goToProfilePage(history)}> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Salvar +
+ + + ) +} + +export default EditAddressPage \ No newline at end of file diff --git a/src/screens/profilePage/editProfilePage.js b/src/screens/profilePage/editProfilePage.js index 4fa0f7e..bd3eee9 100644 --- a/src/screens/profilePage/editProfilePage.js +++ b/src/screens/profilePage/editProfilePage.js @@ -1,7 +1,12 @@ import React from 'react' import { useHistory } from 'react-router-dom' +import Header from '../../components/Header/Header' import { UpdateProfile } from '../../constants/user' import { useForm } from '../../hooks/useForm' +import { EditProfileButton, EditProfileDiv, EditProfileInput, EditProfileInputDiv } from './styles' +import {ButtonStyled} from '../../components/Header/styles' +import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' +import {goToProfilePage} from '../../router/coordinator' const EditProfilePage = () => { @@ -19,36 +24,47 @@ const EditProfilePage = () => { } return ( -
+ + + +
+ goToProfilePage(history)}>
- + + - + + - + + - + Salvar -
+ ) } diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js index 100dfaf..61c1825 100644 --- a/src/screens/profilePage/profilePage.js +++ b/src/screens/profilePage/profilePage.js @@ -7,12 +7,12 @@ import useRequestData from '../../hooks/useRequestData' import Header from '../../components/Header/Header' import {ButtonStyled} from '../../components/Header/styles' import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' -import Loading from '../../components/Loading/Loading' +import Edit from '../../assets/img/edit-profile.svg' -import { goToAdressPage, goToEditProfile, goToFeedPage } from '../../router/coordinator' +import { goToEditAddress, goToEditProfile, goToFeedPage } from '../../router/coordinator' import CardOrder from "../../components/CardOrder/cardOrder" -import { Profile, ProfileCPF, ProfileEmail, ProfileEmailDiv, ProfileName } from './styles' +import { EditProfile, Profile, ProfileAddress, ProfileAddressTitle, ProfileCPF, ProfileEmail, ProfileEmailDiv, ProfileName } from './styles' const ProfilePage = () => { @@ -41,14 +41,15 @@ const ProfilePage = () => { Nome: {profileInfo.user.name} Email: {profileInfo.user.email} CPF: {profileInfo.user.cpf} - + goToEditProfile(history)} />
-

Endereço cadastrado:

-

{profileInfo.user.address}

- + Endereço cadastrado: + {profileInfo.user.address} + goToEditAddress(history)} /> +
diff --git a/src/screens/profilePage/styles.js b/src/screens/profilePage/styles.js index fa064f7..863dce5 100644 --- a/src/screens/profilePage/styles.js +++ b/src/screens/profilePage/styles.js @@ -53,4 +53,87 @@ width: 360px; margin: 16px 0; padding: 16px; background-color: #eeeeee; +` + +export const EditProfile = styled.img` +width: 24px; + height: 24px; + margin: 10px 0 10px 314px; + object-fit: contain; +` + +export const ProfileAddressTitle = styled.p` +width: 328px; + height: 18px; + margin: 0 0 8px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: var(--greyish); +` + +export const ProfileAddress = styled.p` +width: 328px; + height: 18px; + margin: 8px 0 0; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` + +export const EditProfileDiv = styled.div` +width: 360px; + height: 640px; +` + +export const EditProfileInputDiv = styled.div` +width: 360px; + height: 72px; + margin: 58px 0 0; + padding: 0 16px 8px; +` + +export const EditProfileInput = styled.input` +width: 328px; + height: 56px; + margin: 8px 0 0; + padding: 19px 48px 19px 16px; + border-radius: 2px; + border: solid 1px #b8b8b8; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` + +export const EditProfileButton = styled.button` +width: 328px; + height: 42px; + padding: 12px 16px; + border-radius: 2px; + background-color:#5cb646; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + text-align: center; + color: #000000; + margin-top: 50px; + margin-left: 45px; ` \ No newline at end of file From 166db3ee59228b83f4c4056eff57445635bed1e5 Mon Sep 17 00:00:00 2001 From: rafae Date: Thu, 10 Dec 2020 18:58:02 -0300 Subject: [PATCH 46/64] ajustes --- src/components/CardProduct/styles.js | 1 + src/components/Header/Header.js | 32 ++++++++++++++++++++ src/screens/RestaurantPage/RestaurantPage.js | 3 +- src/screens/RestaurantPage/styles.js | 3 +- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/components/CardProduct/styles.js b/src/components/CardProduct/styles.js index 704af63..c235941 100644 --- a/src/components/CardProduct/styles.js +++ b/src/components/CardProduct/styles.js @@ -87,6 +87,7 @@ export const QuantityContainer = styled.div ` border-radius: 0px 5px 0px 5px; height: 33px; width: 33px; + text-align: center; ` export const NameContainer = styled.div ` display: flex; diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 11f921b..98f7762 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -39,6 +39,38 @@ const Header = (props) => { : "" } + {history.location.pathname==='/carrinho' + ? + + + Meu Carrinho + + + : + "" + } + {history.location.pathname==='/editprofile' + ? + + + + Editar + + + : + "" + } + {history.location.pathname==='/endereco' + ? + + + + Endereço + + + : + "" + }
) } diff --git a/src/screens/RestaurantPage/RestaurantPage.js b/src/screens/RestaurantPage/RestaurantPage.js index 6be8743..76783cd 100644 --- a/src/screens/RestaurantPage/RestaurantPage.js +++ b/src/screens/RestaurantPage/RestaurantPage.js @@ -6,7 +6,6 @@ import Header from '../../components/Header/Header' import { baseUrl } from '../../constants/constants' import { RestaurantPageContainer, ImageRestaurant, RestaurantContainer, InfoContainer, InfoName, InfoText, ImageContainer, LoadingContainer, CardsContainer } from './styles' import LoadingInvert from '../../components/LoadingInvert/LoadingInvert' -import Footer from '../../components/Footer/Footer' const RestaurantPage = () => { const history = useHistory() @@ -31,7 +30,7 @@ const RestaurantPage = () => { function goBack() { window.history.back() } - + return (
diff --git a/src/screens/RestaurantPage/styles.js b/src/screens/RestaurantPage/styles.js index 3b2bde4..34c600a 100644 --- a/src/screens/RestaurantPage/styles.js +++ b/src/screens/RestaurantPage/styles.js @@ -49,4 +49,5 @@ export const CardsContainer = styled.div ` text-align: center; margin-top: 40px; overflow: auto; -` \ No newline at end of file +` + From 4c32fc6e17eb620cdb044301de010e604276fec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Fri, 11 Dec 2020 10:22:10 -0300 Subject: [PATCH 47/64] =?UTF-8?q?Estiliza=C3=A7=C3=A3o=20do=20hist=C3=B3ri?= =?UTF-8?q?co=20de=20pedidos=20conclu=C3=ADda.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardOrder/cardOrder.js | 12 ++-- src/components/CardOrder/styles.js | 72 ++++++++++++++++++++++ src/components/Header/Header.js | 4 +- src/screens/profilePage/editAddressPage.js | 2 +- src/screens/profilePage/editProfilePage.js | 4 +- src/screens/profilePage/profilePage.js | 16 ++--- 6 files changed, 92 insertions(+), 18 deletions(-) create mode 100644 src/components/CardOrder/styles.js diff --git a/src/components/CardOrder/cardOrder.js b/src/components/CardOrder/cardOrder.js index 34b05b9..07501ec 100644 --- a/src/components/CardOrder/cardOrder.js +++ b/src/components/CardOrder/cardOrder.js @@ -1,4 +1,5 @@ import React, { useState, useEffect } from "react"; +import { HistoryOrderDate, HistoryOrderDiv, HistoryOrderRestaurant, HistoryOrderTotal } from "./styles"; const CardOrder = (props) => { @@ -9,11 +10,12 @@ const CardOrder = (props) => { return ( -
-

{props.restaurantName}

-

{formatDate}

-

SUBTOTAL R${props.totalPrice}

-
+ + + {props.restaurantName} + {formatDate} + SUBTOTAL R${props.totalPrice} + ); }; diff --git a/src/components/CardOrder/styles.js b/src/components/CardOrder/styles.js new file mode 100644 index 0000000..a35b64d --- /dev/null +++ b/src/components/CardOrder/styles.js @@ -0,0 +1,72 @@ +import styled from 'styled-components' + +export const HistoryOrderTitle = styled.h2` + width: 328px; + height: 18px; + margin: 16px 16px 8px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` + +export const HistoryOrderDiv = styled.div` +width: 328px; + height: 102px; + margin: 7px 0 0; + padding: 16px; + border-radius: 8px; + border: solid 1px var #b8b8b8; +` + +export const HistoryOrderRestaurant = styled.p` +width: 296px; + height: 18px; + margin: 0 0 9px; + font-family: Roboto; + font-size: 16px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: var #5cb646; +` + +export const HistoryOrderDate = styled.p` +width: 296px; + height: 18px; + margin: 9px 0 7px; + font-family: Roboto; + font-size: 12px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.29px; + color: #000000; +` + +export const HistoryOrderTotal = styled.h4` +width: 296px; + height: 18px; + margin: 7px 0 0; + font-family: Roboto; + font-size: 16px; + font-weight: bold; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: -0.39px; + color: #000000; +` + +export const HistoryOrderLine = styled.hr` + width: 328px; + margin: 0 0 7px; + border: solid 1px #000000; +` \ No newline at end of file diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 0273032..fdfb2f1 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -54,7 +54,6 @@ const Header = (props) => { {history.location.pathname==='/editprofile' ? - Editar @@ -64,10 +63,9 @@ const Header = (props) => { "" } - {history.location.pathname==='/endereco' + {history.location.pathname==='/editaddress' ? - Endereço diff --git a/src/screens/profilePage/editAddressPage.js b/src/screens/profilePage/editAddressPage.js index fe388a5..71b052b 100644 --- a/src/screens/profilePage/editAddressPage.js +++ b/src/screens/profilePage/editAddressPage.js @@ -9,6 +9,7 @@ import Header from '../../components/Header/Header' import {goToProfilePage} from '../../router/coordinator' import {ButtonStyled} from '../../components/Header/styles' import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' +import Footer from '../../components/Footer/Footer' @@ -105,7 +106,6 @@ const EditAddressPage = () => { Salvar - ) } diff --git a/src/screens/profilePage/editProfilePage.js b/src/screens/profilePage/editProfilePage.js index bd3eee9..9bcbf97 100644 --- a/src/screens/profilePage/editProfilePage.js +++ b/src/screens/profilePage/editProfilePage.js @@ -7,6 +7,8 @@ import { EditProfileButton, EditProfileDiv, EditProfileInput, EditProfileInputDi import {ButtonStyled} from '../../components/Header/styles' import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' import {goToProfilePage} from '../../router/coordinator' +import Footer from '../../components/Footer/Footer' + const EditProfilePage = () => { @@ -63,7 +65,7 @@ const EditProfilePage = () => { Salvar - +
) } diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js index 8d93bad..51c154a 100644 --- a/src/screens/profilePage/profilePage.js +++ b/src/screens/profilePage/profilePage.js @@ -1,22 +1,20 @@ -import React, { useContext, } from "react"; +import React from "react"; import { useHistory } from "react-router-dom"; import { baseUrl } from "../../constants/constants"; -import GlobalStateContext from "../../global/globalStateContext"; import useProtectedPage from "../../hooks/useProtectedPage"; import useRequestData from "../../hooks/useRequestData"; import { - goToAdressPage, + goToEditAddress, goToEditProfile, goToFeedPage, } from "../../router/coordinator"; import Header from '../../components/Header/Header' import {ButtonStyled} from '../../components/Header/styles' -import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' import Edit from '../../assets/img/edit-profile.svg' -import { goToEditAddress, goToEditProfile, goToFeedPage } from '../../router/coordinator' import CardOrder from "../../components/CardOrder/cardOrder" import { EditProfile, Profile, ProfileAddress, ProfileAddressTitle, ProfileCPF, ProfileEmail, ProfileEmailDiv, ProfileName } from './styles' -import CardOrder from "../../components/CardOrder/cardOrder"; +import {HistoryOrderLine, HistoryOrderTitle} from '../../components/CardOrder/styles' +import Footer from '../../components/Footer/Footer' const ProfilePage = () => { useProtectedPage(); @@ -47,7 +45,8 @@ const ProfilePage = () => {
-

Histórico de Pedidos

+ Histórico de Pedidos + {ordersHistory && ordersHistory.orders.map((order, id) => { return ( @@ -62,10 +61,11 @@ const ProfilePage = () => {
+
) : (
-

Você não realizou nenhum pedido

+

Carregando...

); }; From 711015b81b9a696ad28e3978d2e887ad99a170fb Mon Sep 17 00:00:00 2001 From: Joyce Roberta Date: Fri, 11 Dec 2020 11:00:59 -0300 Subject: [PATCH 48/64] =?UTF-8?q?Corrigido=20bug=20no=20tern=C3=A1rio=20do?= =?UTF-8?q?=20hist=C3=B3rico=20de=20pedidos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/screens/profilePage/profilePage.js | 44 +++++++++++++++++--------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/src/screens/profilePage/profilePage.js b/src/screens/profilePage/profilePage.js index 8d93bad..b66da89 100644 --- a/src/screens/profilePage/profilePage.js +++ b/src/screens/profilePage/profilePage.js @@ -1,31 +1,39 @@ -import React, { useContext, } from "react"; +import React, { useContext } from "react"; import { useHistory } from "react-router-dom"; import { baseUrl } from "../../constants/constants"; import GlobalStateContext from "../../global/globalStateContext"; import useProtectedPage from "../../hooks/useProtectedPage"; import useRequestData from "../../hooks/useRequestData"; +import Header from "../../components/Header/Header"; +import { ButtonStyled } from "../../components/Header/styles"; +import ArrowBackIosIcon from "@material-ui/icons/ArrowBackIos"; +import Edit from "../../assets/img/edit-profile.svg"; import { - goToAdressPage, + goToEditAddress, goToEditProfile, goToFeedPage, } from "../../router/coordinator"; -import Header from '../../components/Header/Header' -import {ButtonStyled} from '../../components/Header/styles' -import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos' -import Edit from '../../assets/img/edit-profile.svg' -import { goToEditAddress, goToEditProfile, goToFeedPage } from '../../router/coordinator' -import CardOrder from "../../components/CardOrder/cardOrder" -import { EditProfile, Profile, ProfileAddress, ProfileAddressTitle, ProfileCPF, ProfileEmail, ProfileEmailDiv, ProfileName } from './styles' import CardOrder from "../../components/CardOrder/cardOrder"; +import { + EditProfile, + Profile, + ProfileAddress, + ProfileAddressTitle, + ProfileCPF, + ProfileEmail, + ProfileEmailDiv, + ProfileName, +} from "./styles"; const ProfilePage = () => { useProtectedPage(); - const history = useHistory(); const profileInfo = useRequestData(`${baseUrl}/profile`, undefined); - const ordersHistory = useRequestData(`${baseUrl}/orders/history`) + const ordersHistory = useRequestData(`${baseUrl}/orders/history`); + + return profileInfo ? ( @@ -48,8 +56,8 @@ const ProfilePage = () => {

Histórico de Pedidos

- {ordersHistory && - ordersHistory.orders.map((order, id) => { + {ordersHistory && ordersHistory.orders.length > 0 ? ( + ordersHistory.orders.map((order) => { return ( { date={order.createdAt} /> ); - })} + }) + ) : ( +
+

Você não realizou nenhum pedido

+
+ )}
) : (
-

Você não realizou nenhum pedido

+

Carregando...

); + }; export default ProfilePage; From b4b8e48382b5a95bbd87a0c6cc3fa483dbd7a3eb Mon Sep 17 00:00:00 2001 From: rafae Date: Fri, 11 Dec 2020 11:25:12 -0300 Subject: [PATCH 49/64] Modal --- src/components/CardProduct/CardProduct.js | 1 + src/components/CardProduct/styles.js | 3 +- src/components/Header/Header.js | 13 ++++++- src/screens/FeedPage/FeedPage.js | 3 +- src/screens/RestaurantPage/RestaurantPage.js | 37 ++++++++++++++++++- src/screens/RestaurantPage/styles.js | 39 +++++++++++++++++++- 6 files changed, 90 insertions(+), 6 deletions(-) diff --git a/src/components/CardProduct/CardProduct.js b/src/components/CardProduct/CardProduct.js index 78bdc3d..9dc4266 100644 --- a/src/components/CardProduct/CardProduct.js +++ b/src/components/CardProduct/CardProduct.js @@ -13,6 +13,7 @@ const CardProduct = (props) => { newCart.push(props.name) setters.setCart(newCart) console.log(states.cart) + props.showModal() } return ( diff --git a/src/components/CardProduct/styles.js b/src/components/CardProduct/styles.js index c235941..bfba583 100644 --- a/src/components/CardProduct/styles.js +++ b/src/components/CardProduct/styles.js @@ -42,7 +42,7 @@ export const PriceText = styled.p ` export const InfoName = styled.p ` font-family: 'Roboto', sans-serif; font-size: 16px; - padding: 1px; + padding-top: 8px; margin: 4px; color: #5cb646; ` @@ -88,6 +88,7 @@ export const QuantityContainer = styled.div ` height: 33px; width: 33px; text-align: center; + padding-top: 8px; ` export const NameContainer = styled.div ` display: flex; diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 0273032..fccbb80 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -57,7 +57,6 @@ const Header = (props) => { Editar - : @@ -69,7 +68,17 @@ const Header = (props) => { - + Meu Endereço + + + : + "" + } + {history.location.pathname==='/editaddress' + ? + + + Endereço diff --git a/src/screens/FeedPage/FeedPage.js b/src/screens/FeedPage/FeedPage.js index 3c988e0..221c721 100644 --- a/src/screens/FeedPage/FeedPage.js +++ b/src/screens/FeedPage/FeedPage.js @@ -1,7 +1,7 @@ import Axios from 'axios' import React, { useEffect, useState } from 'react' import Header from '../../components/Header/Header' -import { CardsContainer, FeedPageContainer, Filter, FilterContainer, InputContainer, InputStyled, LoadingContainer } from './styles' +import { CardsContainer, FeedPageContainer, Filter, FilterContainer, InputContainer, InputStyled, LoadingContainer, ModalContainer } from './styles' import { baseUrl } from '../../constants/constants' import CardFeed from '../../components/CardFeed/CardFeed' import LoadingInvert from '../../components/LoadingInvert/LoadingInvert' @@ -150,6 +150,7 @@ const FeedPage = () => { })} } +