├── .eslintrc ├── .firebaserc ├── public ├── favicon.ico ├── assets │ ├── logo.png │ ├── user.png │ └── categoryImages │ │ ├── drinks.jpg │ │ ├── film.jpg │ │ ├── food.jpg │ │ ├── music.jpg │ │ ├── travel.jpg │ │ └── culture.jpg ├── manifest.json └── index.html ├── src ├── features │ ├── modals │ │ ├── modalConstants.jsx │ │ ├── modalActions.jsx │ │ ├── modalReducer.jsx │ │ ├── TestModal.jsx │ │ ├── ModalManager.jsx │ │ ├── LoginModal.jsx │ │ ├── RegisterModal.jsx │ │ └── UnauthModal.jsx │ ├── auth │ │ ├── authConstants.jsx │ │ ├── authWrapper.jsx │ │ ├── SocialLogin │ │ │ └── SocialLogin.jsx │ │ ├── authReducer.jsx │ │ ├── Login │ │ │ └── LoginForm.jsx │ │ ├── Register │ │ │ └── RegisterForm.jsx │ │ └── authActions.jsx │ ├── async │ │ ├── asyncConstants.jsx │ │ ├── asyncActions.jsx │ │ └── asyncReducer.jsx │ ├── event │ │ ├── eventConstants.jsx │ │ ├── EventList │ │ │ ├── EventListAttendee.jsx │ │ │ ├── EventList.jsx │ │ │ └── EventListItem.jsx │ │ ├── EventActivity │ │ │ ├── EventActivity.jsx │ │ │ └── EventActivityItem.jsx │ │ ├── EventDetailed │ │ │ ├── EventDetailedMap.jsx │ │ │ ├── EventDetailedChatForm.jsx │ │ │ ├── EventDetailedSidebar.jsx │ │ │ ├── EventDetailedInfo.jsx │ │ │ ├── EventDetailedHeader.jsx │ │ │ ├── EventDetailedPage.jsx │ │ │ └── EventDetailedChat.jsx │ │ ├── eventReducer.jsx │ │ ├── EventDashboard │ │ │ └── EventDashboard.jsx │ │ ├── eventActions.jsx │ │ └── EventForm │ │ │ └── EventForm.jsx │ ├── testarea │ │ ├── testConstants.jsx │ │ ├── testActions.jsx │ │ ├── testReducer.js │ │ └── TestComponent.jsx │ ├── nav │ │ ├── Menus │ │ │ ├── SignedOutMenu.jsx │ │ │ └── SignedInMenu.jsx │ │ └── NavBar │ │ │ └── NavBar.jsx │ ├── user │ │ ├── PeopleDashboard │ │ │ ├── PersonCard.jsx │ │ │ └── PeopleDashboard.jsx │ │ ├── UserDetailed │ │ │ ├── UserDetailedPhotos.jsx │ │ │ ├── UserDetailedHeader.jsx │ │ │ ├── UserDetailedSidebar.jsx │ │ │ ├── UserDetailedDescription.jsx │ │ │ ├── UserDetailedEvents.jsx │ │ │ └── UserDetailedPage.jsx │ │ ├── userQueries.jsx │ │ ├── Settings │ │ │ ├── SettingsNav.jsx │ │ │ ├── SettingsDashboard.jsx │ │ │ ├── BasicPage.jsx │ │ │ ├── AboutPage.jsx │ │ │ ├── AccountPage.jsx │ │ │ └── PhotosPage.jsx │ │ └── userActions.jsx │ └── home │ │ └── HomePage.jsx ├── app │ ├── layout │ │ ├── NotFound.jsx │ │ ├── LoadingComponent.jsx │ │ └── App.jsx │ ├── common │ │ ├── util │ │ │ ├── reducerUtil.js │ │ │ ├── ScrollToTop.jsx │ │ │ └── helpers.js │ │ └── form │ │ │ ├── RadioInput.jsx │ │ │ ├── TextArea.jsx │ │ │ ├── TextInput.jsx │ │ │ ├── SelectInput.jsx │ │ │ ├── DateInput.jsx │ │ │ └── PlaceInput.jsx │ ├── data │ │ ├── mockApi.js │ │ └── sampleData.js │ ├── config │ │ └── firebase.js │ ├── reducers │ │ └── rootReducer.js │ └── store │ │ └── configureStore.js ├── index.js ├── index.css └── registerServiceWorker.js ├── .gitignore ├── firebase.json ├── .vscode └── launch.json ├── functions ├── package.json ├── index.js └── .eslintrc.json └── package.json /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "react-app" 3 | } -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "revents-31284" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/logo.png -------------------------------------------------------------------------------- /public/assets/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/user.png -------------------------------------------------------------------------------- /src/features/modals/modalConstants.jsx: -------------------------------------------------------------------------------- 1 | export const MODAL_OPEN = "MODAL_OPEN"; 2 | export const MODAL_CLOSE = "MODAL_CLOSE"; -------------------------------------------------------------------------------- /src/features/auth/authConstants.jsx: -------------------------------------------------------------------------------- 1 | export const LOGIN_USER = "LOGIN_USER"; 2 | export const SIGN_OUT_USER = "SIGN_OUT_USER"; -------------------------------------------------------------------------------- /public/assets/categoryImages/drinks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/categoryImages/drinks.jpg -------------------------------------------------------------------------------- /public/assets/categoryImages/film.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/categoryImages/film.jpg -------------------------------------------------------------------------------- /public/assets/categoryImages/food.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/categoryImages/food.jpg -------------------------------------------------------------------------------- /public/assets/categoryImages/music.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/categoryImages/music.jpg -------------------------------------------------------------------------------- /public/assets/categoryImages/travel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/categoryImages/travel.jpg -------------------------------------------------------------------------------- /public/assets/categoryImages/culture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryCatchLearn/revents_archive/HEAD/public/assets/categoryImages/culture.jpg -------------------------------------------------------------------------------- /src/features/async/asyncConstants.jsx: -------------------------------------------------------------------------------- 1 | export const ASYNC_ACTION_START = "ASYNC_ACTION_START"; 2 | export const ASYNC_ACTION_FINISH = "ASYNC_ACTION_FINISH"; 3 | export const ASYNC_ACTION_ERROR = "ASYNC_ACTION_ERROR"; -------------------------------------------------------------------------------- /src/features/event/eventConstants.jsx: -------------------------------------------------------------------------------- 1 | export const CREATE_EVENT = "CREATE_EVENT"; 2 | export const UPDATE_EVENT = "UPDATE_EVENT"; 3 | export const DELETE_EVENT = "DELETE_EVENT"; 4 | export const FETCH_EVENTS = "FETCH_EVENTS"; -------------------------------------------------------------------------------- /src/app/layout/NotFound.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const NotFound = () => { 4 | return ( 5 |
6 |

Error 404 not found!

7 |
8 | ) 9 | } 10 | 11 | export default NotFound 12 | -------------------------------------------------------------------------------- /src/app/common/util/reducerUtil.js: -------------------------------------------------------------------------------- 1 | export const createReducer = (initialState, fnMap) => { 2 | return (state = initialState, {type, payload}) => { 3 | const handler = fnMap[type]; 4 | 5 | return handler ? handler(state, payload) : state 6 | } 7 | } -------------------------------------------------------------------------------- /src/features/testarea/testConstants.jsx: -------------------------------------------------------------------------------- 1 | export const INCREMENT_COUNTER = "INCREMENT_COUNTER"; 2 | export const DECREMENT_COUNTER = "DECREMENT_COUNTER"; 3 | export const COUNTER_ACTION_STARTED = "COUNTER_ACTION_STARTED"; 4 | export const COUNTER_ACTION_FINISHED = "COUNTER_ACTION_FINISHED"; -------------------------------------------------------------------------------- /src/app/data/mockApi.js: -------------------------------------------------------------------------------- 1 | import sampleData from './sampleData'; 2 | 3 | const delay = (ms) => { 4 | return new Promise(resolve => setTimeout(resolve, ms)) 5 | } 6 | 7 | export const fetchSampleData = () => { 8 | return delay(1000).then(() => { 9 | return Promise.resolve(sampleData) 10 | }) 11 | } -------------------------------------------------------------------------------- /src/app/layout/LoadingComponent.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Dimmer, Loader } from 'semantic-ui-react' 3 | 4 | const LoadingComponent = ({inverted}) => { 5 | return ( 6 | 7 | 8 | 9 | ) 10 | } 11 | 12 | export default LoadingComponent 13 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": "./index.html", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /src/app/common/form/RadioInput.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Form } from 'semantic-ui-react' 3 | 4 | const RadioInput = ({input, width, type, label}) => { 5 | return ( 6 | 7 |
8 | {' '} 9 | 10 |
11 |
12 | ) 13 | } 14 | 15 | export default RadioInput 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # misc 13 | .DS_Store 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | 19 | npm-debug.log* 20 | yarn-debug.log* 21 | yarn-error.log* 22 | 23 | functions/node_modules/** 24 | -------------------------------------------------------------------------------- /src/features/modals/modalActions.jsx: -------------------------------------------------------------------------------- 1 | import { MODAL_CLOSE, MODAL_OPEN } from './modalConstants'; 2 | 3 | export const openModal = (modalType, modalProps) => { 4 | return { 5 | type: MODAL_OPEN, 6 | payload: { 7 | modalType, 8 | modalProps 9 | } 10 | } 11 | } 12 | 13 | export const closeModal = () => { 14 | return { 15 | type: MODAL_CLOSE 16 | } 17 | } -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "functions": { 3 | "predeploy": [ 4 | "npm --prefix \"$RESOURCE_DIR\" run lint" 5 | ] 6 | }, 7 | "hosting": { 8 | "public": "build", 9 | "ignore": [ 10 | "firebase.json", 11 | "**/.*", 12 | "**/node_modules/**" 13 | ], 14 | "rewrites": [ 15 | { 16 | "source": "**", 17 | "destination": "/index.html" 18 | } 19 | ] 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/app/common/util/ScrollToTop.jsx: -------------------------------------------------------------------------------- 1 | import { Component } from 'react' 2 | import { withRouter } from 'react-router-dom' 3 | 4 | class ScrollToTop extends Component { 5 | componentDidUpdate(prevProps) { 6 | if (this.props.location !== prevProps.location) { 7 | window.scrollTo(0, 0) 8 | } 9 | } 10 | 11 | render() { 12 | return this.props.children 13 | } 14 | } 15 | 16 | export default withRouter(ScrollToTop) -------------------------------------------------------------------------------- /src/features/nav/Menus/SignedOutMenu.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Menu, Button } from 'semantic-ui-react'; 3 | 4 | const SignedOutMenu = ({signIn, register}) => { 5 | return ( 6 | 7 |