[ { "__docId__": 0, "kind": "file", "static": true, "variation": null, "name": "modules/App.js", "memberof": null, "longname": "modules/App.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { browserHistory } from 'react-router'\n\nconst Home = require('./routes/Home/Home').default\n\nimport {\n App as AppActions,\n User as UserActions,\n Photos as PhotoActions,\n Header as HeaderActions,\n} from 'actions'\n\nimport {\n Header,\n} from 'components'\n\n@connect(state => ({ header: state.Header, user: state.User, }))\n\n/**\n * AppHeader component\n */\nclass AppHeader extends Component {\n /**\n * render\n * @returns markup\n */\n render() {\n const { header, user, } = this.props\n\n return (\n \n )\n }\n}\n\n/**\n * handleRouteChange\n * @param dispatch\n * @param route\n * @param location\n */\nfunction handleRouteChange(dispatch, route, location) {\n if (route) {\n\n if (route.getHeaderLeft) {\n route.getHeaderLeft(location, (err, component) => {\n dispatch(HeaderActions.left(component))\n })\n } else {\n dispatch(HeaderActions.left(null))\n }\n\n if (route.getHeaderMiddle) {\n route.getHeaderMiddle(location, (err, component) => {\n dispatch(HeaderActions.middle(component))\n })\n } else {\n dispatch(HeaderActions.middle(null))\n }\n\n if (route.getHeaderRight) {\n route.getHeaderRight(location, (err, component) => {\n dispatch(HeaderActions.right(component))\n })\n } else {\n dispatch(HeaderActions.right(null))\n }\n\n }\n}\n\n/**\n * App component\n * Bootstraps application\n */\nclass App extends Component {\n\n /**\n * componentDidUpdate\n * @param oldProps\n * @returns {*}\n */\n componentDidUpdate(oldProps) {\n\n handleRouteChange(\n this.props.dispatch,\n this.props.routes[this.props.routes.length - 1],\n this.props.location\n )\n\n if (oldProps.user.id != this.props.user.id && !this.props.user.id) {\n return browserHistory.push('/landing')\n }\n\n // user is logged in\n if (oldProps.user.id != this.props.user.id && this.props.user.id) {\n this.props.dispatch(AppActions.init())\n }\n \n }\n\n /**\n * componentDidMount\n */\n componentDidMount() {\n\n const { dispatch } = this.props\n\n FB.getLoginStatus(res => {\n\n if (res.status !== 'connected') {\n if (this.props.location.pathname != '/landing') {\n browserHistory.replace('/landing')\n }\n this.props.dispatch(AppActions.initDone())\n return\n }\n\n dispatch(UserActions.fbLogin(res))\n\n if (this.props.location.pathname == '/landing') {\n browserHistory.replace('/')\n }\n\n })\n\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n\n if (this.props.loading) return
Loading...
\n\n if (this.props.location.pathname == '/landing') {\n return (\n
\n {this.props.children || }\n
\n )\n }\n\n return (\n
\n \n {this.props.children || }\n
\n )\n\n }\n\n}\n\nexport default connect(state => ({\n user: state.User,\n loading: state.App.loading,\n}))(App)\n" }, { "__docId__": 1, "kind": "variable", "static": true, "variation": null, "name": "Home", "memberof": "modules/App.js", "longname": "modules/App.js~Home", "access": null, "export": false, "importPath": "react/modules/App.js", "importStyle": null, "description": null, "lineNumber": 5, "undocument": true, "type": { "types": [ "*" ] } }, { "__docId__": 2, "kind": "class", "static": true, "variation": null, "name": "AppHeader", "memberof": "modules/App.js", "longname": "modules/App.js~AppHeader", "access": null, "export": false, "importPath": "react/modules/App.js", "importStyle": null, "description": "AppHeader component", "lineNumber": 23, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 3, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/App.js~AppHeader", "longname": "modules/App.js~AppHeader#render", "access": null, "description": "render", "lineNumber": 28, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 4, "kind": "function", "static": true, "variation": null, "name": "handleRouteChange", "memberof": "modules/App.js", "longname": "modules/App.js~handleRouteChange", "access": null, "export": false, "importPath": "react/modules/App.js", "importStyle": null, "description": "handleRouteChange", "lineNumber": 47, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "dispatch", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "route", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "location", "description": "" } ], "generator": false }, { "__docId__": 5, "kind": "class", "static": true, "variation": null, "name": "App", "memberof": "modules/App.js", "longname": "modules/App.js~App", "access": null, "export": false, "importPath": "react/modules/App.js", "importStyle": null, "description": "App component\nBootstraps application", "lineNumber": 81, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 6, "kind": "method", "static": false, "variation": null, "name": "componentDidUpdate", "memberof": "modules/App.js~App", "longname": "modules/App.js~App#componentDidUpdate", "access": null, "description": "componentDidUpdate", "lineNumber": 88, "unknown": [ { "tagName": "@returns", "tagValue": "{*}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "oldProps", "description": "" } ], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 7, "kind": "method", "static": false, "variation": null, "name": "componentDidMount", "memberof": "modules/App.js~App", "longname": "modules/App.js~App#componentDidMount", "access": null, "description": "componentDidMount", "lineNumber": 110, "params": [], "generator": false }, { "__docId__": 8, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/App.js~App", "longname": "modules/App.js~App#render", "access": null, "description": "render", "lineNumber": 138, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 9, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Activity.js", "memberof": null, "longname": "modules/actions/Activity.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'ACTIVITY_LOAD'\n\n/**\n * _loadRequest\n * @private\n */\nexport const _loadRequest = () => ({ type: LOAD, })\n\n/**\n * _loadResponse\n * @param response\n * @private\n */\nexport const _loadResponse = (response) => ({ type: LOAD, response, })\n\n\n/**\n * load\n * Get notifications from API for user\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @returns {Function}\n */\nexport function load() {\n return (dispatch, getState) => {\n return new Promise((resolve => {\n dispatch(_loadRequest())\n axios.get(`${config.api.baseUrl}/notifications?user_id=${getState().User.id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(res.data))\n resolve()\n })\n }))\n }\n}\n" }, { "__docId__": 10, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Activity.js", "longname": "modules/actions/Activity.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Activity.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 11, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Activity.js", "longname": "modules/actions/Activity.js~_loadRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Activity.js", "importStyle": "{_loadRequest}", "description": "_loadRequest", "lineNumber": 14, "type": { "types": [ "*" ] } }, { "__docId__": 12, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Activity.js", "longname": "modules/actions/Activity.js~_loadResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Activity.js", "importStyle": "{_loadResponse}", "description": "_loadResponse", "lineNumber": 21, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 13, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Activity.js", "longname": "modules/actions/Activity.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Activity.js", "importStyle": "{load}", "description": "load\nGet notifications from API for user\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 31, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 14, "kind": "file", "static": true, "variation": null, "name": "modules/actions/App.js", "memberof": null, "longname": "modules/actions/App.js", "access": null, "description": null, "lineNumber": 1, "content": "import {\n Photos as PhotoActions,\n Activity as ActivityActions,\n} from './'\n\n/**\n * INIT\n * @type {string}\n */\nexport const INIT = 'APP_INIT'\n\n/**\n * init\n * loads photos and activities\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @returns {Function}\n */\nexport function init() {\n return dispatch => {\n Promise.all([\n dispatch(PhotoActions.load()),\n dispatch(ActivityActions.load()),\n ]).then(() => {\n dispatch(initDone())\n })\n }\n}\n\n/**\n * INIT_DONE\n * @type {string}\n */\nexport const INIT_DONE = 'APP_INIT_DONE'\n\n/**\n * initDone\n * @returns {{type: string}}\n */\nexport function initDone() {\n return {\n type: INIT_DONE\n }\n}\n" }, { "__docId__": 15, "kind": "variable", "static": true, "variation": null, "name": "INIT", "memberof": "modules/actions/App.js", "longname": "modules/actions/App.js~INIT", "access": null, "export": true, "importPath": "react/modules/actions/App.js", "importStyle": "{INIT}", "description": "INIT", "lineNumber": 10, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 16, "kind": "function", "static": true, "variation": null, "name": "init", "memberof": "modules/actions/App.js", "longname": "modules/actions/App.js~init", "access": null, "export": true, "importPath": "react/modules/actions/App.js", "importStyle": "{init}", "description": "init\nloads photos and activities\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 19, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 17, "kind": "variable", "static": true, "variation": null, "name": "INIT_DONE", "memberof": "modules/actions/App.js", "longname": "modules/actions/App.js~INIT_DONE", "access": null, "export": true, "importPath": "react/modules/actions/App.js", "importStyle": "{INIT_DONE}", "description": "INIT_DONE", "lineNumber": 34, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 18, "kind": "function", "static": true, "variation": null, "name": "initDone", "memberof": "modules/actions/App.js", "longname": "modules/actions/App.js~initDone", "access": null, "export": true, "importPath": "react/modules/actions/App.js", "importStyle": "{initDone}", "description": "initDone", "lineNumber": 40, "unknown": [ { "tagName": "@returns", "tagValue": "{{type: string}}" } ], "params": [], "return": { "nullable": null, "types": [ "{type: string}" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 19, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Comments.js", "memberof": null, "longname": "modules/actions/Comments.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * ADD_COMMENT\n * @type {string}\n */\nexport const ADD_COMMENT = 'PHOTOS_ADD_COMMENT'\n\n/**\n * _addCommentRequest\n * @param id\n * @private\n */\nexport const _addCommentRequest = (id) => ({ type: ADD_COMMENT, id, })\n\n/**\n * _addCommentResponse\n * @param id\n * @param comment\n * @param user\n * @private\n */\nexport const _addCommentResponse = (id, comment, user) => ({ type: ADD_COMMENT, id, comment, user,})\n\n/**\n * addComment\n * Posts comment data to API\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param id\n * @param text\n * @returns {Function}\n */\nexport function addComment(id, text) {\n return (dispatch, getState) => {\n const user = getState().User\n dispatch(_addCommentRequest(id))\n const data = {\n user_id: user.id,\n upload_id: id,\n comment: text,\n }\n axios.get(`${config.api.baseUrl}/comments`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n data: data\n })\n .then(res => {\n dispatch(_addCommentResponse(id, res.data, user))\n })\n }\n}\n\n/**\n * LOAD_COMMENTS\n * @type {string}\n */\nexport const LOAD_COMMENTS = 'PHOTOS_LOAD_COMMENT'\n\n/**\n * _loadCommentsRequest\n * @param postID\n * @private\n */\nexport const _loadCommentsRequest = (postID) => ({ type: LOAD_COMMENTS, postID, })\n\n/**\n * _loadCommentsResponse\n * @param postID\n * @param comments\n * @private\n */\nexport const _loadCommentsResponse = (postID, comments) => ({ type: LOAD_COMMENTS, postID, comments, })\n\n/**\n * load\n * Gets comments from API based on upload id\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param postID\n * @returns {Function}\n */\nexport function load(postID) {\n return dispatch => {\n dispatch(_loadCommentsRequest(postID))\n axios.get(`${config.api.baseUrl}/comments?upload_id=${postID}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadCommentsResponse(postID, res.data))\n })\n }\n}\n" }, { "__docId__": 20, "kind": "variable", "static": true, "variation": null, "name": "ADD_COMMENT", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~ADD_COMMENT", "access": null, "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{ADD_COMMENT}", "description": "ADD_COMMENT", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 21, "kind": "variable", "static": true, "variation": null, "name": "_addCommentRequest", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~_addCommentRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{_addCommentRequest}", "description": "_addCommentRequest", "lineNumber": 15, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "id", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 22, "kind": "variable", "static": true, "variation": null, "name": "_addCommentResponse", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~_addCommentResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{_addCommentResponse}", "description": "_addCommentResponse", "lineNumber": 24, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "id", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "comment", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "user", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 23, "kind": "function", "static": true, "variation": null, "name": "addComment", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~addComment", "access": null, "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{addComment}", "description": "addComment\nPosts comment data to API\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 35, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "id", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "text", "description": "" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 24, "kind": "variable", "static": true, "variation": null, "name": "LOAD_COMMENTS", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~LOAD_COMMENTS", "access": null, "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{LOAD_COMMENTS}", "description": "LOAD_COMMENTS", "lineNumber": 60, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 25, "kind": "variable", "static": true, "variation": null, "name": "_loadCommentsRequest", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~_loadCommentsRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{_loadCommentsRequest}", "description": "_loadCommentsRequest", "lineNumber": 67, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 26, "kind": "variable", "static": true, "variation": null, "name": "_loadCommentsResponse", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~_loadCommentsResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{_loadCommentsResponse}", "description": "_loadCommentsResponse", "lineNumber": 75, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "comments", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 27, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Comments.js", "longname": "modules/actions/Comments.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Comments.js", "importStyle": "{load}", "description": "load\nGets comments from API based on upload id\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 85, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 28, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Contributions.js", "memberof": null, "longname": "modules/actions/Contributions.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'CONTRIBUTIONS_LOAD'\n\n/**\n * _loadRequest\n * @param userID\n * @private\n */\nexport const _loadRequest = (userID) => ({ type: LOAD, userID, })\n\n/**\n * _loadResponse\n * @param userID\n * @param response\n * @private\n */\nexport const _loadResponse = (userID, response) => ({ type: LOAD, userID, response, })\n\n/**\n * load\n * Get contributions from API by user id\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param userID user id\n * @returns {Function}\n */\nexport function load(userID) {\n return (dispatch, getState) => {\n dispatch(_loadRequest(userID))\n const user = getState().User\n axios.get(`${config.api.baseUrl}/contributions?user_id=${userID || user.id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(userID, res.data))\n })\n }\n}\n" }, { "__docId__": 29, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Contributions.js", "longname": "modules/actions/Contributions.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Contributions.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 30, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Contributions.js", "longname": "modules/actions/Contributions.js~_loadRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Contributions.js", "importStyle": "{_loadRequest}", "description": "_loadRequest", "lineNumber": 15, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 31, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Contributions.js", "longname": "modules/actions/Contributions.js~_loadResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Contributions.js", "importStyle": "{_loadResponse}", "description": "_loadResponse", "lineNumber": 23, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 32, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Contributions.js", "longname": "modules/actions/Contributions.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Contributions.js", "importStyle": "{load}", "description": "load\nGet contributions from API by user id\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 33, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "user id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 33, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Explore.js", "memberof": null, "longname": "modules/actions/Explore.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'EXPLORE_LOAD'\n\n/**\n * _loadRequest\n * @private\n */\nconst _loadRequest = () => ({ type: LOAD, })\n\n/**\n * _loadResponse\n * @param response\n * @private\n */\nconst _loadResponse = (response) => ({ type: LOAD, response})\n\n/**\n * load\n * Gets explore data from API for user\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @returns {Function}\n */\nexport function load() {\n return (dispatch, getState) => {\n dispatch(_loadRequest())\n const user = getState().User\n axios.get(`${config.api.baseUrl}/explore?user_id=${user.id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(response.data))\n })\n }\n}\n" }, { "__docId__": 34, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Explore.js", "longname": "modules/actions/Explore.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Explore.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 35, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Explore.js", "longname": "modules/actions/Explore.js~_loadRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Explore.js", "importStyle": null, "description": "_loadRequest", "lineNumber": 14, "type": { "types": [ "*" ] } }, { "__docId__": 36, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Explore.js", "longname": "modules/actions/Explore.js~_loadResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Explore.js", "importStyle": null, "description": "_loadResponse", "lineNumber": 21, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 37, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Explore.js", "longname": "modules/actions/Explore.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Explore.js", "importStyle": "{load}", "description": "load\nGets explore data from API for user\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 30, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 38, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Header.js", "memberof": null, "longname": "modules/actions/Header.js", "access": null, "description": null, "lineNumber": 1, "content": "/**\n * LEFT\n * @type {string}\n */\nexport const LEFT = 'HEADER_LEFT'\n\n/**\n * left\n * @param component\n * @returns {{type: string, component: *}}\n */\nexport function left(component) {\n return {\n type: LEFT,\n component,\n }\n}\n\n/**\n * MIDDLE\n * @type {string}\n */\nexport const MIDDLE = 'HEADER_MIDDLE'\n\n\n/**\n * middle\n * @param component\n * @returns {{type: string, component: *}}\n */\nexport function middle(component) {\n return {\n type: MIDDLE,\n component,\n }\n}\n\n/**\n * RIGHT\n * @type {string}\n */\nexport const RIGHT = 'HEADER_RIGHT'\n\n/**\n * right\n * @param component\n * @returns {{type: string, component: *}}\n */\nexport function right(component) {\n return {\n type: RIGHT,\n component,\n }\n}\n" }, { "__docId__": 39, "kind": "variable", "static": true, "variation": null, "name": "LEFT", "memberof": "modules/actions/Header.js", "longname": "modules/actions/Header.js~LEFT", "access": null, "export": true, "importPath": "react/modules/actions/Header.js", "importStyle": "{LEFT}", "description": "LEFT", "lineNumber": 5, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 40, "kind": "function", "static": true, "variation": null, "name": "left", "memberof": "modules/actions/Header.js", "longname": "modules/actions/Header.js~left", "access": null, "export": true, "importPath": "react/modules/actions/Header.js", "importStyle": "{left}", "description": "left", "lineNumber": 12, "unknown": [ { "tagName": "@returns", "tagValue": "{{type: string, component: *}}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "component", "description": "" } ], "return": { "nullable": null, "types": [ "{type: string, component: *}" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 41, "kind": "variable", "static": true, "variation": null, "name": "MIDDLE", "memberof": "modules/actions/Header.js", "longname": "modules/actions/Header.js~MIDDLE", "access": null, "export": true, "importPath": "react/modules/actions/Header.js", "importStyle": "{MIDDLE}", "description": "MIDDLE", "lineNumber": 23, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 42, "kind": "function", "static": true, "variation": null, "name": "middle", "memberof": "modules/actions/Header.js", "longname": "modules/actions/Header.js~middle", "access": null, "export": true, "importPath": "react/modules/actions/Header.js", "importStyle": "{middle}", "description": "middle", "lineNumber": 31, "unknown": [ { "tagName": "@returns", "tagValue": "{{type: string, component: *}}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "component", "description": "" } ], "return": { "nullable": null, "types": [ "{type: string, component: *}" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 43, "kind": "variable", "static": true, "variation": null, "name": "RIGHT", "memberof": "modules/actions/Header.js", "longname": "modules/actions/Header.js~RIGHT", "access": null, "export": true, "importPath": "react/modules/actions/Header.js", "importStyle": "{RIGHT}", "description": "RIGHT", "lineNumber": 42, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 44, "kind": "function", "static": true, "variation": null, "name": "right", "memberof": "modules/actions/Header.js", "longname": "modules/actions/Header.js~right", "access": null, "export": true, "importPath": "react/modules/actions/Header.js", "importStyle": "{right}", "description": "right", "lineNumber": 49, "unknown": [ { "tagName": "@returns", "tagValue": "{{type: string, component: *}}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "component", "description": "" } ], "return": { "nullable": null, "types": [ "{type: string, component: *}" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 45, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Like.js", "memberof": null, "longname": "modules/actions/Like.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\nimport * as querystring from 'querystring'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'LIKE_LOAD'\n\n/**\n * _loadRequest\n * @param postID\n * @private\n */\nexport const _loadRequest = (postID) => ({ type: LOAD, postID, })\n\n/**\n * _loadResponse\n * @param postID\n * @param response\n * @private\n */\nexport const _loadResponse = (postID, response) => ({ type: LOAD, postID, response, })\n\n/**\n * load\n * Gets number of 'likes' from API for user and post\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param postID post id\n * @param userID user id\n * @returns {Function}\n */\nexport function load(postID, userID) {\n return (dispatch, getState) => {\n dispatch(_loadRequest(postID))\n const user = getState().User\n axios.get(`${config.api.baseUrl}/likes?upload_id=${postID}&user_id=${user.id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(postID, res.data))\n })\n }\n}\n\n/**\n * ADD_LIKE\n * @type {string}\n */\nexport const ADD_LIKE = 'ADD_LIKE'\n\n/**\n * _hnadleAddLikeRequest\n * @param postID\n * @private\n */\nexport const _handleAddLikeRequest = (postID) => ({ type: ADD_LIKE, postID,})\n\n/**\n * _handleAddLikeResponse\n * @param postID\n * @param response\n * @private\n */\nexport const _handleAddLikeResponse = (postID, response) => ({ type: ADD_LIKE, postID, response, })\n\n/**\n * like\n * Posts a 'like' to the API for a user and post\n * @param postID post id\n * @returns {Function}\n */\nexport function like(postID) {\n return (dispatch, getState) => {\n dispatch(_handleAddLikeRequest(postID))\n const data = {\n user_id: getState().User.id,\n upload_id: postID,\n }\n axios.post(`${config.api.baseUrl}/likes`, data, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_handleAddLikeResponse(postID, res.data))\n })\n }\n}\n\n/**\n * DELETE_LIKE\n * @type {string}\n */\nexport const DELETE_LIKE = 'DELETE_LIKE'\n\n/**\n * _handleDeleteLikeRequest\n * @param postID\n * @private\n */\nexport const _handleDeleteLikeRequest = (postID) => ({ type: DELETE_LIKE, postID,})\n\n/**\n * _handleDeleteLikeResponse\n * @param postID\n * @param response\n * @private\n */\nexport const _handleDeleteLikeResponse = (postID, response) => ({ type: DELETE_LIKE, postID, response, })\n\n/**\n * deleteLike\n * Removes like (unlikes) for a user and a post\n * @param postID post id\n * @returns {Function}\n */\nexport function deleteLike(postID) {\n return (dispatch, getState) => {\n dispatch(_handleDeleteLikeRequest(postID))\n const data = {\n user_id: getState().User.id,\n upload_id: postID,\n }\n axios.delete(`${config.api.baseUrl}/likes?` + querystring.stringify(data), {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n }\n })\n .then(res => {\n dispatch(_handleDeleteLikeResponse(postID, res.data))\n })\n }\n}\n" }, { "__docId__": 46, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 9, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 47, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~_loadRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{_loadRequest}", "description": "_loadRequest", "lineNumber": 16, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 48, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~_loadResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{_loadResponse}", "description": "_loadResponse", "lineNumber": 24, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 49, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{load}", "description": "load\nGets number of 'likes' from API for user and post\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 35, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "post id" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "user id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 50, "kind": "variable", "static": true, "variation": null, "name": "ADD_LIKE", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~ADD_LIKE", "access": null, "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{ADD_LIKE}", "description": "ADD_LIKE", "lineNumber": 54, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 51, "kind": "variable", "static": true, "variation": null, "name": "_handleAddLikeRequest", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~_handleAddLikeRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{_handleAddLikeRequest}", "description": "_hnadleAddLikeRequest", "lineNumber": 61, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 52, "kind": "variable", "static": true, "variation": null, "name": "_handleAddLikeResponse", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~_handleAddLikeResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{_handleAddLikeResponse}", "description": "_handleAddLikeResponse", "lineNumber": 69, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 53, "kind": "function", "static": true, "variation": null, "name": "like", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~like", "access": null, "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{like}", "description": "like\nPosts a 'like' to the API for a user and post", "lineNumber": 77, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "post id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 54, "kind": "variable", "static": true, "variation": null, "name": "DELETE_LIKE", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~DELETE_LIKE", "access": null, "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{DELETE_LIKE}", "description": "DELETE_LIKE", "lineNumber": 99, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 55, "kind": "variable", "static": true, "variation": null, "name": "_handleDeleteLikeRequest", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~_handleDeleteLikeRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{_handleDeleteLikeRequest}", "description": "_handleDeleteLikeRequest", "lineNumber": 106, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 56, "kind": "variable", "static": true, "variation": null, "name": "_handleDeleteLikeResponse", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~_handleDeleteLikeResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{_handleDeleteLikeResponse}", "description": "_handleDeleteLikeResponse", "lineNumber": 114, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 57, "kind": "function", "static": true, "variation": null, "name": "deleteLike", "memberof": "modules/actions/Like.js", "longname": "modules/actions/Like.js~deleteLike", "access": null, "export": true, "importPath": "react/modules/actions/Like.js", "importStyle": "{deleteLike}", "description": "deleteLike\nRemoves like (unlikes) for a user and a post", "lineNumber": 122, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "post id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 58, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Location.js", "memberof": null, "longname": "modules/actions/Location.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'LOCATION_LOAD'\n\n/**\n * _loadRequest\n * @param location\n * @private\n */\nexport const _loadRequest = (location) => ({ type: LOAD, location, })\n\n/**\n * _loadResponse\n * @param location\n * @param response\n * @private\n */\nexport const _loadResponse = (location, response) => ({ type: LOAD, location, response, })\n\n/**\n * load\n * Gets data from API for a given location\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param location\n * @returns {Function}\n */\nexport function load(location) {\n return (dispatch) => {\n dispatch(_loadRequest(location))\n axios.get(`${config.api.baseUrl}/locations?q=${location}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(location, res.data))\n })\n }\n}\n" }, { "__docId__": 59, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Location.js", "longname": "modules/actions/Location.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Location.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 60, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Location.js", "longname": "modules/actions/Location.js~_loadRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Location.js", "importStyle": "{_loadRequest}", "description": "_loadRequest", "lineNumber": 15, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "location", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 61, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Location.js", "longname": "modules/actions/Location.js~_loadResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Location.js", "importStyle": "{_loadResponse}", "description": "_loadResponse", "lineNumber": 23, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "location", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 62, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Location.js", "longname": "modules/actions/Location.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Location.js", "importStyle": "{load}", "description": "load\nGets data from API for a given location\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 33, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "location", "description": "" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 63, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Photo.js", "memberof": null, "longname": "modules/actions/Photo.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\nimport {\n Like as LikeActions,\n Comments as CommentActions,\n} from 'actions'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'PHOTO_LOAD'\n\n/**\n * _loadRequest\n * @private\n */\nconst _loadRequest = () => ({ type: LOAD, })\n\n/**\n * _loadResponse\n * @param response\n * @private\n */\nconst _loadResponse = (response) => ({ type: LOAD, response, })\n\n/**\n * load\n * Gets single photo upload from API based on upload id\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param id upload id\n * @returns {Function}\n */\nexport function load(id) {\n return dispatch => {\n return new Promise((resolve) => {\n dispatch(_loadRequest())\n axios.get(`${config.api.baseUrl}/upload?id=${id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(res.data))\n dispatch(CommentActions.load(id))\n dispatch(LikeActions.load(id))\n return resolve()\n })\n })\n }\n}\n" }, { "__docId__": 64, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Photo.js", "longname": "modules/actions/Photo.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Photo.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 13, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 65, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Photo.js", "longname": "modules/actions/Photo.js~_loadRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Photo.js", "importStyle": null, "description": "_loadRequest", "lineNumber": 19, "type": { "types": [ "*" ] } }, { "__docId__": 66, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Photo.js", "longname": "modules/actions/Photo.js~_loadResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Photo.js", "importStyle": null, "description": "_loadResponse", "lineNumber": 26, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 67, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Photo.js", "longname": "modules/actions/Photo.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Photo.js", "importStyle": "{load}", "description": "load\nGets single photo upload from API based on upload id\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 36, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "id", "description": "upload id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 68, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Photos.js", "memberof": null, "longname": "modules/actions/Photos.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * ADD\n * @type {string}\n */\nexport const ADD = 'PHOTO_ADD'\n\n/**\n * add\n * @param response\n * @returns {{type: string, response: *}}\n */\nexport function add(response) {\n return {\n type: ADD,\n response,\n }\n}\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'PHOTOS_LOAD'\n\n/**\n * _loadRequest\n * @private\n */\nconst _loadRequest = () => ({ type: LOAD, })\n\n/**\n * _loadResponse\n * @param response\n * @private\n */\nconst _loadResponse = (response) => ({ type: LOAD, response, })\n\n/**\n * load\n * Get photo uploads from the API based on user id\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param id user id\n * @returns {Function}\n */\nexport function load(id) {\n return (dispatch, getState) => {\n const userID = id || getState().User.id\n dispatch(_loadRequest())\n axios.get(`${config.api.baseUrl}/uploads?user_id=${userID}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`,\n },\n })\n .then(res => {\n dispatch(_loadResponse(res.data))\n })\n }\n}\n\n/**\n * LIKE\n * @type {string}\n */\nexport const LIKE = 'PHOTOS_LIKE'\n\n/**\n * _likeRequest\n * @private\n */\nconst _likeRequest = () => ({ type: LIKE, })\n\n/**\n * _likeResponse\n * @param postID\n * @param response\n * @private\n */\nconst _likeResponse = (postID, response) => ({ type: LIKE, postID, response, })\n\n/**\n * like\n * Post a 'like' to the API for a given post\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param postID post id\n * @returns {Function}\n */\nexport function like(postID) {\n return (dispatch, getState) => {\n dispatch(_likeRequest())\n const data = {\n user_id: getState().User.id,\n upload_id: postID,\n }\n axios.post(`${config.api.baseUrl}/likes`, data, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`,\n },\n })\n .then(res => {\n dispatch(_likeResponse(postID, res.data))\n })\n }\n}\n\n/**\n * UNLIKE\n * @type {string}\n */\nexport const UNLIKE = 'PHOTOS_UNLIKE'\n\n/**\n * _unlikeRequest\n * @private\n */\nconst _unlikeRequest = () => ({ type: UNLIKE, })\n\n/**\n * _unlikeRequestResponse\n * @param postID\n * @param response\n * @private\n */\nconst _unlikeRequestResponse = (postID, response) => ({ type: UNLIKE, postID, response, })\n\n/**\n * unlike\n * Post an 'unlike' to the API based on post id\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param postID post id\n * @returns {Function}\n */\nexport function unlike(postID) {\n return (dispatch, getState) => {\n dispatch(_unlikeRequest())\n const data = {\n user_id: getState().User.id,\n upload_id: postID,\n }\n axios.delete(`${config.api.baseUrl}/likes?user_id=${data.user_id}&upload_id=${data.upload_id}`, data, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_unlikeRequestResponse(postID, res.data))\n })\n }\n}\n\n/**\n * PAGINATE\n * @type {string}\n */\nexport const PAGINATE = 'PHOTOS_PAGINATE'\n\n/**\n * _paginateRequest\n * @param lastId\n * @private\n */\nconst _paginateRequest = lastId => ({ type: PAGINATE, lastId, })\n\n/**\n * _paginateResponse\n * @param response\n * @private\n */\nconst _paginateResponse = response => ({ type: PAGINATE, response, })\n\n/**\n * paginate\n * Get photo uploads from API based on user id, and the last post id (for pagination purposes)\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @returns {Function}\n */\nexport function paginate() {\n return (dispatch, getState) => {\n const {\n Pagination,\n User,\n } = getState()\n if (Pagination.fetching) return;\n dispatch(_paginateRequest(Pagination.lastId))\n axios.get(`${config.api.baseUrl}/uploads?user_id=${User.id}&last_id=${Pagination.lastId}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_paginateResponse(res.data))\n })\n }\n}\n" }, { "__docId__": 69, "kind": "variable", "static": true, "variation": null, "name": "ADD", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~ADD", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{ADD}", "description": "ADD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 70, "kind": "function", "static": true, "variation": null, "name": "add", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~add", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{add}", "description": "add", "lineNumber": 15, "unknown": [ { "tagName": "@returns", "tagValue": "{{type: string, response: *}}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "return": { "nullable": null, "types": [ "{type: string, response: *}" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 71, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 26, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 72, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_loadRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_loadRequest", "lineNumber": 32, "type": { "types": [ "*" ] } }, { "__docId__": 73, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_loadResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_loadResponse", "lineNumber": 39, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 74, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{load}", "description": "load\nGet photo uploads from the API based on user id\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 49, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "id", "description": "user id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 75, "kind": "variable", "static": true, "variation": null, "name": "LIKE", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~LIKE", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{LIKE}", "description": "LIKE", "lineNumber": 68, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 76, "kind": "variable", "static": true, "variation": null, "name": "_likeRequest", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_likeRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_likeRequest", "lineNumber": 74, "type": { "types": [ "*" ] } }, { "__docId__": 77, "kind": "variable", "static": true, "variation": null, "name": "_likeResponse", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_likeResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_likeResponse", "lineNumber": 82, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 78, "kind": "function", "static": true, "variation": null, "name": "like", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~like", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{like}", "description": "like\nPost a 'like' to the API for a given post\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 92, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "post id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 79, "kind": "variable", "static": true, "variation": null, "name": "UNLIKE", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~UNLIKE", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{UNLIKE}", "description": "UNLIKE", "lineNumber": 114, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 80, "kind": "variable", "static": true, "variation": null, "name": "_unlikeRequest", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_unlikeRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_unlikeRequest", "lineNumber": 120, "type": { "types": [ "*" ] } }, { "__docId__": 81, "kind": "variable", "static": true, "variation": null, "name": "_unlikeRequestResponse", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_unlikeRequestResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_unlikeRequestResponse", "lineNumber": 128, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 82, "kind": "function", "static": true, "variation": null, "name": "unlike", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~unlike", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{unlike}", "description": "unlike\nPost an 'unlike' to the API based on post id\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 138, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "postID", "description": "post id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 83, "kind": "variable", "static": true, "variation": null, "name": "PAGINATE", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~PAGINATE", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{PAGINATE}", "description": "PAGINATE", "lineNumber": 160, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 84, "kind": "variable", "static": true, "variation": null, "name": "_paginateRequest", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_paginateRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_paginateRequest", "lineNumber": 167, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "lastId", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 85, "kind": "variable", "static": true, "variation": null, "name": "_paginateResponse", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~_paginateResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Photos.js", "importStyle": null, "description": "_paginateResponse", "lineNumber": 174, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 86, "kind": "function", "static": true, "variation": null, "name": "paginate", "memberof": "modules/actions/Photos.js", "longname": "modules/actions/Photos.js~paginate", "access": null, "export": true, "importPath": "react/modules/actions/Photos.js", "importStyle": "{paginate}", "description": "paginate\nGet photo uploads from API based on user id, and the last post id (for pagination purposes)\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 183, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 87, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Profile.js", "memberof": null, "longname": "modules/actions/Profile.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'PROFILE_LOAD'\n\n/**\n * _loadRequest\n * @param userID\n * @private\n */\nexport const _loadRequest = (userID) => ({ type: LOAD, userID, })\n\n/**\n * _loadResponse\n * @param userID\n * @param response\n * @private\n */\nexport const _loadResponse = (userID, response) => ({ type: LOAD, userID, response, })\n\n/**\n * load\n * Gets profile data from the API for a given user id\n * @param userID user id\n * @returns {Function}\n */\nexport function load(userID) {\n return (dispatch, getState) => {\n dispatch(_loadRequest(userID))\n const user = getState().User\n axios.get(`${config.api.baseUrl}/users/${userID}?user_id=${user.id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(userID, res.data))\n })\n }\n}\n\n/**\n * FOLLOW\n * @type {string}\n */\nexport const FOLLOW = 'PROFILE_FOLLOW'\n\n/**\n * _followRequest\n * @param userID\n * @private\n */\nexport const _followRequest = (userID) => ({ type: FOLLOW, userID, })\n\n/**\n * _followResponse\n * @param userID\n * @param response\n * @private\n */\nexport const _followResponse = (userID, response) => ({ type: FOLLOW, userID, response, })\n\n/**\n * follow\n * Posts a 'follow' action to the API for a given user id\n * @param userID user id\n * @returns {Function}\n */\nexport function follow(userID) {\n return (dispatch, getState) => {\n dispatch(_followRequest(userID))\n const user = getState().User\n const data = {\n user_id: user.id,\n follower_id: userID,\n }\n axios.post(`${config.api.baseUrl}/followers`, data, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_followResponse(userID, res.data))\n })\n }\n}\n\n/**\n * UNFOLLOW\n * @type {string}\n */\nexport const UNFOLLOW = 'PROFILE_UNFOLLOW'\n\n/**\n * _unfollowRequest\n * @param userID\n * @private\n */\nexport const _unfollowRequest = (userID) => ({ type: UNFOLLOW, userID, })\n\n/**\n * _unfollowResponse\n * @param userID\n * @param response\n * @private\n */\nexport const _unfollowResponse = (userID, response) => ({ type: UNFOLLOW, userID, response, })\n\n/**\n * unfollow\n * Posts an 'unfollow' action to the API for a given user id\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param userID follower id\n * @returns {Function}\n */\nexport function unfollow(userID) {\n return (dispatch, getState) => {\n dispatch(_unfollowRequest(userID))\n const user = getState().User\n axios.delete(`${config.api.baseUrl}/followers?user_id=${user.id}&follower_id=${userID}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n }\n })\n .then(res => {\n dispatch(_unfollowResponse(userID, res.data))\n })\n }\n}\n" }, { "__docId__": 88, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 89, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~_loadRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{_loadRequest}", "description": "_loadRequest", "lineNumber": 15, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 90, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~_loadResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{_loadResponse}", "description": "_loadResponse", "lineNumber": 23, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 91, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{load}", "description": "load\nGets profile data from the API for a given user id", "lineNumber": 31, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "user id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 92, "kind": "variable", "static": true, "variation": null, "name": "FOLLOW", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~FOLLOW", "access": null, "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{FOLLOW}", "description": "FOLLOW", "lineNumber": 50, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 93, "kind": "variable", "static": true, "variation": null, "name": "_followRequest", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~_followRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{_followRequest}", "description": "_followRequest", "lineNumber": 57, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 94, "kind": "variable", "static": true, "variation": null, "name": "_followResponse", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~_followResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{_followResponse}", "description": "_followResponse", "lineNumber": 65, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 95, "kind": "function", "static": true, "variation": null, "name": "follow", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~follow", "access": null, "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{follow}", "description": "follow\nPosts a 'follow' action to the API for a given user id", "lineNumber": 73, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "user id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 96, "kind": "variable", "static": true, "variation": null, "name": "UNFOLLOW", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~UNFOLLOW", "access": null, "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{UNFOLLOW}", "description": "UNFOLLOW", "lineNumber": 96, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 97, "kind": "variable", "static": true, "variation": null, "name": "_unfollowRequest", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~_unfollowRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{_unfollowRequest}", "description": "_unfollowRequest", "lineNumber": 103, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 98, "kind": "variable", "static": true, "variation": null, "name": "_unfollowResponse", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~_unfollowResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{_unfollowResponse}", "description": "_unfollowResponse", "lineNumber": 111, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 99, "kind": "function", "static": true, "variation": null, "name": "unfollow", "memberof": "modules/actions/Profile.js", "longname": "modules/actions/Profile.js~unfollow", "access": null, "export": true, "importPath": "react/modules/actions/Profile.js", "importStyle": "{unfollow}", "description": "unfollow\nPosts an 'unfollow' action to the API for a given user id\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 121, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userID", "description": "follower id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 100, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Search.js", "memberof": null, "longname": "modules/actions/Search.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport algoliasearch from 'algoliasearch'\nimport config from 'config'\n\nconst algolia = algoliasearch(config.algolia.appId, config.algolia.searchOnlyKey)\n\n\n/**\n * SEARCH\n * @type {string}\n */\nexport const SEARCH = 'SEARCH_SEARCH'\n\n/**\n * _searchRequest\n * @param term\n * @private\n */\nconst _searchRequest = (term) => ({ type: SEARCH, term, })\n\n/**\n * _searchResponse\n * @param term\n * @param response\n * @private\n */\nconst _searchResponse = (term, response) => ({ type: SEARCH, term, response, })\n\n/**\n * search\n * Make a search request to algolia based on term (string) and type\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param term {string} search term\n * @param type {string} type of search ('all', 'hashtags', 'location')\n * @returns {Function}\n */\nexport function search(term, type = 'all') {\n\n return dispatch => {\n\n // Initialize the 'cabin' index:\n let index = algolia.initIndex('cabin'),\n attrs = []\n\n switch(type) {\n case 'all':\n attrs.push(\n 'first_name',\n 'last_name',\n 'email',\n 'location',\n 'hashtags',\n )\n break;\n case 'hashtags':\n attrs.push('hashtags')\n break\n case 'user':\n attrs.push(\n 'first_name',\n 'last_name',\n 'email'\n )\n break\n case 'location':\n attrs.push('location')\n break\n }\n\n // Perform Algolia search:\n index.search(term, {\n attributesToHighlight: attrs,\n hitsPerPage: 100\n }, (err, content) => {\n dispatch(_searchResponse(term, content))\n })\n }\n}\n\n/**\n * TRIGGER\n * @type {string}\n */\nexport const TRIGGER = 'SEARCH_TRIGGER'\n\n/**\n * _triggerRequest\n * @param search\n * @private\n */\nconst _triggerRequest = (search) => ({ type: TRIGGER, search, })\n\n/**\n * _triggerResponse\n * @param search\n * @param response\n * @private\n */\nconst _triggerResponse = (search, response) => ({ type: TRIGGER, search, response, })\n\n/**\n * trigger\n * Triggers search, and posts search data to API\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param search\n * @returns {Function}\n */\nexport function trigger(search) {\n return (dispatch, getState) => {\n dispatch(_triggerRequest(search))\n /**\n * data\n * @type {{user_id: *, search: *}}\n */\n const data = {\n user_id: getState().User.id,\n search: search.word,\n }\n axios.post(`${config.api.baseUrl}/searches`, data).then(res => {\n dispatch(_triggerResponse(search, res.data))\n })\n }\n}\n\n/**\n * RECENT\n * @type {string}\n */\nexport const RECENT = 'SEARCH_RECENT'\n\n/**\n * _recentRequest\n * @private\n */\nconst _recentRequest = () => ({ type: RECENT, })\n\n/**\n * _recentResponse\n * @param response\n * @private\n */\nconst _recentResponse = (response) => ({ type: RECENT, response, })\n\n/**\n * recent\n * Gets recent searches from API for a given user\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @returns {Function}\n */\nexport function recent() {\n return (dispatch, getState) => {\n dispatch(_recentRequest())\n axios.get(`${config.api.baseUrl}/searches?user_id=${getState().User.id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_recentResponse(res.data))\n })\n }\n}\n\n/**\n * RESULTS\n * @type {string}\n */\nexport const RESULTS = 'SEARCH_RESULTS'\n\n/**\n * _searchResultsRequest\n * @private\n */\nconst _searchResultsRequest = () => ({ type: RESULTS, })\n\n/**\n * _searchResultsResponse\n * @param response\n * @private\n */\nconst _searchResultsResponse = (response) => ({ type: RESULTS, response, })\n\n/**\n * results\n * Gets uploads from API based on Algolia Search response\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param type {string}\n * @param query {string}\n * @returns {Function}\n */\nexport function results(type, query) {\n return dispatch => {\n dispatch(_searchResultsRequest())\n axios(`${config.api.baseUrl}/uploads?type=${type}&query=${encodeURIComponent(query)}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_searchResultsResponse(res.data))\n })\n }\n}\n" }, { "__docId__": 101, "kind": "variable", "static": true, "variation": null, "name": "algolia", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~algolia", "access": null, "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": null, "lineNumber": 5, "undocument": true, "type": { "types": [ "*" ] } }, { "__docId__": 102, "kind": "variable", "static": true, "variation": null, "name": "SEARCH", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~SEARCH", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{SEARCH}", "description": "SEARCH", "lineNumber": 12, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 103, "kind": "variable", "static": true, "variation": null, "name": "_searchRequest", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_searchRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_searchRequest", "lineNumber": 19, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "term", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 104, "kind": "variable", "static": true, "variation": null, "name": "_searchResponse", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_searchResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_searchResponse", "lineNumber": 27, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "term", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 105, "kind": "function", "static": true, "variation": null, "name": "search", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~search", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{search}", "description": "search\nMake a search request to algolia based on term (string) and type\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 38, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "term", "description": "{string} search term" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "type", "description": "{string} type of search ('all', 'hashtags', 'location')" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 106, "kind": "variable", "static": true, "variation": null, "name": "TRIGGER", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~TRIGGER", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{TRIGGER}", "description": "TRIGGER", "lineNumber": 85, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 107, "kind": "variable", "static": true, "variation": null, "name": "_triggerRequest", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_triggerRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_triggerRequest", "lineNumber": 92, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "search", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 108, "kind": "variable", "static": true, "variation": null, "name": "_triggerResponse", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_triggerResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_triggerResponse", "lineNumber": 100, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "search", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 109, "kind": "function", "static": true, "variation": null, "name": "trigger", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~trigger", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{trigger}", "description": "trigger\nTriggers search, and posts search data to API\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 110, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "search", "description": "" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 110, "kind": "variable", "static": true, "variation": null, "name": "RECENT", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~RECENT", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{RECENT}", "description": "RECENT", "lineNumber": 131, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 111, "kind": "variable", "static": true, "variation": null, "name": "_recentRequest", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_recentRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_recentRequest", "lineNumber": 137, "type": { "types": [ "*" ] } }, { "__docId__": 112, "kind": "variable", "static": true, "variation": null, "name": "_recentResponse", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_recentResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_recentResponse", "lineNumber": 144, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 113, "kind": "function", "static": true, "variation": null, "name": "recent", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~recent", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{recent}", "description": "recent\nGets recent searches from API for a given user\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 153, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 114, "kind": "variable", "static": true, "variation": null, "name": "RESULTS", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~RESULTS", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{RESULTS}", "description": "RESULTS", "lineNumber": 171, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 115, "kind": "variable", "static": true, "variation": null, "name": "_searchResultsRequest", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_searchResultsRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_searchResultsRequest", "lineNumber": 177, "type": { "types": [ "*" ] } }, { "__docId__": 116, "kind": "variable", "static": true, "variation": null, "name": "_searchResultsResponse", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~_searchResultsResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Search.js", "importStyle": null, "description": "_searchResultsResponse", "lineNumber": 184, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 117, "kind": "function", "static": true, "variation": null, "name": "results", "memberof": "modules/actions/Search.js", "longname": "modules/actions/Search.js~results", "access": null, "export": true, "importPath": "react/modules/actions/Search.js", "importStyle": "{results}", "description": "results\nGets uploads from API based on Algolia Search response\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 195, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "type", "description": "{string}" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "query", "description": "{string}" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 118, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Stats.js", "memberof": null, "longname": "modules/actions/Stats.js", "access": null, "description": null, "lineNumber": 1, "content": "import config from 'config'\nimport * as axios from 'axios'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'STATS_LOAD'\n\n/**\n * _loadRequest\n * @param userId\n * @private\n */\nexport const _loadRequest = (userId) => ({ type: LOAD, userId, })\n\n/**\n * _loadResponse\n * @param userId\n * @param response\n * @private\n */\nexport const _loadResponse = (userId, response) => ({ type: LOAD, userId, response, })\n\n/**\n * load\n * Gets user stats from API, and performs Keen analytics functions\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param userId user id\n * @returns {Function}\n */\nexport function load(userId) {\n return (dispatch, getState) => {\n\n dispatch(_loadRequest(userId))\n\n axios.get(`${config.api.baseUrl}/stats/${userId}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(userId, res.data))\n })\n\n Keen.ready(function() {\n\n let itemViewsQuery = new Keen.Query(\"count\", {\n event_collection: 'views',\n timeframe: 'this_30_days',\n filters: [{\n \"property_name\": 'postAuthorId',\n \"operator\": 'eq',\n \"property_value\": userId\n }, {\n \"property_name\": 'type',\n \"operator\": 'eq',\n \"property_value\": 'item'\n }]\n })\n\n keenClient.run(itemViewsQuery, function(err, res) {\n\n if (err) {\n console.log(err)\n return\n }\n\n dispatch(_loadResponse(userId, {\n 'itemViews': res.result\n }))\n\n })\n\n let profileViewsQuery = new Keen.Query(\"count\", {\n event_collection: 'views',\n timeframe: 'this_30_days',\n filters: [{\n property_name: 'profileUser',\n operator: 'eq',\n property_value: userId\n }, {\n property_name: 'type',\n operator: 'eq',\n property_value: 'user'\n }]\n })\n\n keenClient.run(profileViewsQuery, function(err, res) {\n\n if (err) {\n console.log(err)\n return\n }\n\n dispatch(_loadResponse(userId, {\n profileViews: res.result\n }))\n\n })\n\n let geoViewsQuery = new Keen.Query(\"count\", {\n event_collection: 'views',\n timeframe: 'this_30_days',\n filters: [{\n property_name: 'postAuthorId',\n operator: 'eq',\n property_value: 1\n }, {\n property_name: 'type',\n operator: 'eq',\n property_value: 'item'\n }, {\n property_name: 'ip_geo_info.city',\n operator: 'ne',\n property_value: null\n }],\n group_by: ['ip_geo_info.city', 'ip_geo_info.province', 'ip_geo_info.country'],\n })\n\n keenClient.run(geoViewsQuery, function(err, res) {\n if (err) {\n console.log(err)\n return\n }\n dispatch(_loadResponse(userId, {\n 'geoViews': res.result\n }))\n })\n\n let newFollowersQuery = new Keen.Query('sum', {\n event_collection: \"follow\",\n timeframe: \"this_30_days\",\n filters: [{\n property_name: 'targetId',\n operator: 'eq',\n property_value: userId\n }],\n target_property: 'directionInt'\n })\n\n keenClient.run(newFollowersQuery, function(err, res) {\n\n if (err) {\n console.log(err)\n return\n }\n\n dispatch(_loadResponse(userId, {\n\n 'newFollowers': res\n }))\n\n })\n\n })\n }\n}\n" }, { "__docId__": 119, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Stats.js", "longname": "modules/actions/Stats.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Stats.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 120, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Stats.js", "longname": "modules/actions/Stats.js~_loadRequest", "access": "private", "export": true, "importPath": "react/modules/actions/Stats.js", "importStyle": "{_loadRequest}", "description": "_loadRequest", "lineNumber": 15, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userId", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 121, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Stats.js", "longname": "modules/actions/Stats.js~_loadResponse", "access": "private", "export": true, "importPath": "react/modules/actions/Stats.js", "importStyle": "{_loadResponse}", "description": "_loadResponse", "lineNumber": 23, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userId", "description": "" }, { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 122, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Stats.js", "longname": "modules/actions/Stats.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Stats.js", "importStyle": "{load}", "description": "load\nGets user stats from API, and performs Keen analytics functions\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 33, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "userId", "description": "user id" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 123, "kind": "file", "static": true, "variation": null, "name": "modules/actions/Trending.js", "memberof": null, "longname": "modules/actions/Trending.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * LOAD\n * @type {string}\n */\nexport const LOAD = 'TRENDING_LOAD'\n\n/**\n * _loadRequest\n * @private\n */\nconst _loadRequest = () => ({ type: LOAD, })\n\n/**\n * _loadResponse\n * @param response\n * @private\n */\nconst _loadResponse = (response) => ({ type: LOAD, response, })\n\n/**\n * trending\n * Gets 'trending' data from API\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @returns {Function}\n */\nexport function load() {\n return (dispatch, getState) => {\n _loadRequest()\n const user = getState().User\n axios.get(`${config.api.baseUrl}/trending?user_id=${user.id}`, {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('jwt')}`\n },\n })\n .then(res => {\n dispatch(_loadResponse(response.data))\n })\n }\n}\n" }, { "__docId__": 124, "kind": "variable", "static": true, "variation": null, "name": "LOAD", "memberof": "modules/actions/Trending.js", "longname": "modules/actions/Trending.js~LOAD", "access": null, "export": true, "importPath": "react/modules/actions/Trending.js", "importStyle": "{LOAD}", "description": "LOAD", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 125, "kind": "variable", "static": true, "variation": null, "name": "_loadRequest", "memberof": "modules/actions/Trending.js", "longname": "modules/actions/Trending.js~_loadRequest", "access": "private", "export": false, "importPath": "react/modules/actions/Trending.js", "importStyle": null, "description": "_loadRequest", "lineNumber": 14, "type": { "types": [ "*" ] } }, { "__docId__": 126, "kind": "variable", "static": true, "variation": null, "name": "_loadResponse", "memberof": "modules/actions/Trending.js", "longname": "modules/actions/Trending.js~_loadResponse", "access": "private", "export": false, "importPath": "react/modules/actions/Trending.js", "importStyle": null, "description": "_loadResponse", "lineNumber": 21, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 127, "kind": "function", "static": true, "variation": null, "name": "load", "memberof": "modules/actions/Trending.js", "longname": "modules/actions/Trending.js~load", "access": null, "export": true, "importPath": "react/modules/actions/Trending.js", "importStyle": "{load}", "description": "trending\nGets 'trending' data from API\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 30, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 128, "kind": "file", "static": true, "variation": null, "name": "modules/actions/User.js", "memberof": null, "longname": "modules/actions/User.js", "access": null, "description": null, "lineNumber": 1, "content": "import * as axios from 'axios'\nimport config from 'config'\n\n/**\n * FB_LOGIN\n * @type {string}\n */\nexport const FB_LOGIN = 'USER_FB_LOGIN'\n\n/**\n * _fbLoginInitial\n * @param initial\n * @private\n */\nconst _fbLoginInitial = (initial) => ({ type: FB_LOGIN, initial, })\n\n/**\n * fbLogin\n * Performs Facebook login, and on success posts return data to API\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @param response {Object}\n * @returns {Function}\n */\nexport function fbLogin(response) {\n return dispatch => {\n FB.api('/me', 'GET', {\n fields: 'id,name,email'\n }, function(me) {\n let name = me.name.split(' ')\n axios.post(`${config.api.baseUrl}/users`, {\n fb_uid : me.id,\n first_name : name[0],\n last_name : name[1],\n email : me.email,\n })\n .then(function(res) {\n localStorage.setItem('jwt', res.data.jwt);\n dispatch(_fbLoginInitial(res.data))\n })\n .catch(function (res) {\n dispatch(_fbLoginInitial(res.data))\n })\n })\n }\n}\n\n/**\n * LOGOUT\n * @type {string}\n */\nexport const LOGOUT = 'USER_LOGOUT'\n\n/**\n * _logoutRequest\n * @private\n */\nexport const _logoutRequest = () => ({ type: LOGOUT, })\n\n/**\n * _logoutResponse\n * @param response\n * @private\n */\nexport const _logoutResponse = (response) => ({ type: LOGOUT, response, })\n\n/**\n * logout\n * Performs Facebook logout for a given user\n * Redux Action\n * Reference: http://redux.js.org/docs/basics/Actions.html\n * @returns {Function}\n */\nexport function logout() {\n return dispatch => {\n dispatch(_logoutRequest())\n FB.logout(response => {\n dispatch(_logoutResponse(response))\n })\n }\n}\n\n/**\n * FOLLOW\n * @type {string}\n */\nexport const FOLLOW = 'USER_FOLLOW'\n\n/**\n * follow\n * @param user\n * @returns {{type: string, user: *}}\n */\nexport function follow(user) {\n return {\n type: FOLLOW,\n user,\n }\n}\n" }, { "__docId__": 129, "kind": "variable", "static": true, "variation": null, "name": "FB_LOGIN", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~FB_LOGIN", "access": null, "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{FB_LOGIN}", "description": "FB_LOGIN", "lineNumber": 8, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 130, "kind": "variable", "static": true, "variation": null, "name": "_fbLoginInitial", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~_fbLoginInitial", "access": "private", "export": false, "importPath": "react/modules/actions/User.js", "importStyle": null, "description": "_fbLoginInitial", "lineNumber": 15, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "initial", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 131, "kind": "function", "static": true, "variation": null, "name": "fbLogin", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~fbLogin", "access": null, "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{fbLogin}", "description": "fbLogin\nPerforms Facebook login, and on success posts return data to API\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 25, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "{Object}" } ], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 132, "kind": "variable", "static": true, "variation": null, "name": "LOGOUT", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~LOGOUT", "access": null, "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{LOGOUT}", "description": "LOGOUT", "lineNumber": 52, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 133, "kind": "variable", "static": true, "variation": null, "name": "_logoutRequest", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~_logoutRequest", "access": "private", "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{_logoutRequest}", "description": "_logoutRequest", "lineNumber": 58, "type": { "types": [ "*" ] } }, { "__docId__": 134, "kind": "variable", "static": true, "variation": null, "name": "_logoutResponse", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~_logoutResponse", "access": "private", "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{_logoutResponse}", "description": "_logoutResponse", "lineNumber": 65, "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "response", "description": "" } ], "type": { "types": [ "*" ] } }, { "__docId__": 135, "kind": "function", "static": true, "variation": null, "name": "logout", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~logout", "access": null, "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{logout}", "description": "logout\nPerforms Facebook logout for a given user\nRedux Action\nReference: http://redux.js.org/docs/basics/Actions.html", "lineNumber": 74, "unknown": [ { "tagName": "@returns", "tagValue": "{Function}" } ], "params": [], "return": { "nullable": null, "types": [ "Function" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 136, "kind": "variable", "static": true, "variation": null, "name": "FOLLOW", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~FOLLOW", "access": null, "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{FOLLOW}", "description": "FOLLOW", "lineNumber": 87, "type": { "nullable": null, "types": [ "string" ], "spread": false, "description": null } }, { "__docId__": 137, "kind": "function", "static": true, "variation": null, "name": "follow", "memberof": "modules/actions/User.js", "longname": "modules/actions/User.js~follow", "access": null, "export": true, "importPath": "react/modules/actions/User.js", "importStyle": "{follow}", "description": "follow", "lineNumber": 94, "unknown": [ { "tagName": "@returns", "tagValue": "{{type: string, user: *}}" } ], "params": [ { "nullable": null, "types": [ "*" ], "spread": false, "optional": false, "name": "user", "description": "" } ], "return": { "nullable": null, "types": [ "{type: string, user: *}" ], "spread": false, "description": "" }, "generator": false }, { "__docId__": 138, "kind": "file", "static": true, "variation": null, "name": "modules/actions/index.js", "memberof": null, "longname": "modules/actions/index.js", "access": null, "description": null, "lineNumber": 1, "content": "export * as App from './App'\nexport * as User from './User'\nexport * as Activity from './Activity'\nexport * as Photos from './Photos'\nexport * as Comments from './Comments'\nexport * as Like from './Like'\nexport * as Photo from './Photo'\nexport * as Stats from './Stats'\nexport * as Explore from './Explore'\nexport * as Trending from './Trending'\nexport * as Search from './Search'\nexport * as Location from './Location'\nexport * as Profile from './Profile'\nexport * as Header from './Header'\nexport * as Contributions from './Contributions'\n" }, { "__docId__": 139, "kind": "file", "static": true, "variation": null, "name": "modules/components/Activity/Actor.js", "memberof": null, "longname": "modules/components/Activity/Actor.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\nimport { Avatar } from 'components'\n\n/**\n * Actor component\n */\nexport default class Actor extends Component {\n\n /**\n * defaultProps\n * @type {{avatar: string, email: string, firstName: string, lastName: string}}\n */\n static defaultProps = {\n avatar: '',\n email: '',\n firstName: '',\n lastName: '',\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n return (\n
\n
\n \n
\n
{this.props.firstName}
{this.props.lastName.charAt(0) + '.'}
\n
\n )\n }\n}\n" }, { "__docId__": 140, "kind": "class", "static": true, "variation": null, "name": "Actor", "memberof": "modules/components/Activity/Actor.js", "longname": "modules/components/Activity/Actor.js~Actor", "access": null, "export": true, "importPath": "react/modules/components/Activity/Actor.js", "importStyle": "Actor", "description": "Actor component", "lineNumber": 7, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 141, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/Activity/Actor.js~Actor", "longname": "modules/components/Activity/Actor.js~Actor#render", "access": null, "description": "render", "lineNumber": 24, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 142, "kind": "file", "static": true, "variation": null, "name": "modules/components/Activity/Commented.js", "memberof": null, "longname": "modules/components/Activity/Commented.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\n\nimport Actor from './Actor'\n\n\n/**\n * Commented component\n */\nexport default class Commented extends Component {\n\n /**\n * defaultProps\n * @type {{actor: {}, user: {}, timestamp: null, timeSince: string}}\n */\n static defaultProps = {\n actor: {},\n user: {},\n timestamp: null,\n timeSince: '',\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n return (\n
\n \"\n

{this.props.text}

\n
\n )\n }\n}\n" }, { "__docId__": 143, "kind": "class", "static": true, "variation": null, "name": "Commented", "memberof": "modules/components/Activity/Commented.js", "longname": "modules/components/Activity/Commented.js~Commented", "access": null, "export": true, "importPath": "react/modules/components/Activity/Commented.js", "importStyle": "Commented", "description": "Commented component", "lineNumber": 9, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 144, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/Activity/Commented.js~Commented", "longname": "modules/components/Activity/Commented.js~Commented#render", "access": null, "description": "render", "lineNumber": 26, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 145, "kind": "file", "static": true, "variation": null, "name": "modules/components/Activity/Following.js", "memberof": null, "longname": "modules/components/Activity/Following.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\n\nimport Actor from './Actor'\n\n/**\n * Following component\n */\nexport default class Following extends Component {\n\n /**\n *\n * @type {{actor: {}, user: {}, timestamp: null, timeSince: string, following: boolean, onFollowBack: Following.defaultProps.onFollowBack, onUnfollow: Following.defaultProps.onUnfollow}}\n */\n static defaultProps = {\n actor: {},\n user: {},\n timestamp: null,\n timeSince: '',\n following: false,\n\n onFollowBack: () => {\n },\n onUnfollow: () => {\n },\n }\n\n /**\n * handleFollowBack\n * @param e\n */\n handleFollowBack = (e) => {\n e.preventDefault()\n\n this.props.onFollowBack(e, this.props.actor)\n }\n\n /**\n * handleUnfollow\n * @param e\n */\n handleUnfollow = (e) => {\n e.preventDefault()\n\n this.props.onUnfollow(e, this.props.actor)\n }\n\n /**\n * renderFollowButton\n * @returns markup\n */\n renderFollowButton = () => {\n\n if (this.props.following) {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n \n
\n )\n\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n return (\n
\n \n {this.renderFollowButton()}\n
\n \n
\n
\n

Followed, {this.props.timeSince}

\n
\n
\n \n
\n \n
\n
\n
\n )\n }\n}\n" }, { "__docId__": 146, "kind": "class", "static": true, "variation": null, "name": "Following", "memberof": "modules/components/Activity/Following.js", "longname": "modules/components/Activity/Following.js~Following", "access": null, "export": true, "importPath": "react/modules/components/Activity/Following.js", "importStyle": "Following", "description": "Following component", "lineNumber": 8, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 147, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/Activity/Following.js~Following", "longname": "modules/components/Activity/Following.js~Following#render", "access": null, "description": "render", "lineNumber": 73, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 148, "kind": "file", "static": true, "variation": null, "name": "modules/components/Activity/Liked.js", "memberof": null, "longname": "modules/components/Activity/Liked.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\nimport { Link } from 'react-router'\nimport config from 'config'\n\nimport Actor from './Actor'\n\nconst Picture = props => (\n
\n \n \n \n
\n)\n\n/**\n * Liked component\n */\nexport default class Liked extends Component {\n\n /**\n * defaultProps\n * @type {{pictures: Array}}\n */\n static defaultProps = {\n pictures: [],\n }\n\n /**\n * renderMessage\n * @returns {*}\n */\n renderMessage = () => {\n if (this.props.pictures.length === 1) return 'Liked your picture'\n return 'Liked your pictures'\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n return (\n
\n \n
\n \n
\n
\n

{this.renderMessage()}, {this.props.timeSince}

\n
\n
\n
\n
\n {this.props.pictures.map((p, i) => )}\n
\n
\n
\n )\n }\n}\n" }, { "__docId__": 149, "kind": "variable", "static": true, "variation": null, "name": "Picture", "memberof": "modules/components/Activity/Liked.js", "longname": "modules/components/Activity/Liked.js~Picture", "access": null, "export": false, "importPath": "react/modules/components/Activity/Liked.js", "importStyle": null, "description": null, "lineNumber": 7, "undocument": true, "type": { "types": [ "*" ] } }, { "__docId__": 150, "kind": "class", "static": true, "variation": null, "name": "Liked", "memberof": "modules/components/Activity/Liked.js", "longname": "modules/components/Activity/Liked.js~Liked", "access": null, "export": true, "importPath": "react/modules/components/Activity/Liked.js", "importStyle": "Liked", "description": "Liked component", "lineNumber": 18, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 151, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/Activity/Liked.js~Liked", "longname": "modules/components/Activity/Liked.js~Liked#render", "access": null, "description": "render", "lineNumber": 41, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 152, "kind": "file", "static": true, "variation": null, "name": "modules/components/Activity/index.js", "memberof": null, "longname": "modules/components/Activity/index.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component, cloneElement } from 'react'\n\nexport Actor from './Actor'\nexport Following from './Following'\nexport Liked from './Liked'\nexport Commented from './Commented'\n\nimport moment from 'moment'\n\n/**\n * Activity index component\n */\nexport class Item extends Component {\n\n /**\n * defaultProps\n * @type {{type: null, timestamp: null, actor: {}}}\n */\n static defaultProps = {\n type: null,\n timestamp: null,\n actor: {},\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n return (\n
  • \n {cloneElement(this.props.children, {\n timestamp: this.props.timestamp,\n actor: this.props.actor,\n timeSince: moment(this.props.timestamp).fromNow(),\n })}\n
  • \n )\n }\n}\n" }, { "__docId__": 153, "kind": "class", "static": true, "variation": null, "name": "Item", "memberof": "modules/components/Activity/index.js", "longname": "modules/components/Activity/index.js~Item", "access": null, "export": true, "importPath": "react/modules/components/Activity/index.js", "importStyle": "{Item}", "description": "Activity index component", "lineNumber": 13, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 154, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/Activity/index.js~Item", "longname": "modules/components/Activity/index.js~Item#render", "access": null, "description": "render", "lineNumber": 29, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 155, "kind": "file", "static": true, "variation": null, "name": "modules/components/Avatar/index.js", "memberof": null, "longname": "modules/components/Avatar/index.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\n\nimport md5 from 'md5'\n\nconst styles = {\n root: {\n backgroundColor: '#fafafa',\n display: 'inline-block',\n }\n}\n\n/**\n * Avatar index component\n */\nclass Avatar extends Component {\n\n /**\n * defaultProps\n * @type {{email: null, height: number, imgHeight: number}}\n */\n static defaultProps = {\n email: null,\n height: 155,\n imgHeight: 400,\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n const placeHolder = Object.assign({}, styles.root, {\n height: this.props.height,\n width: this.props.height,\n })\n\n if (!this.props.email) return
    \n\n return \n }\n}\n\nexport default Avatar\n" }, { "__docId__": 156, "kind": "variable", "static": true, "variation": null, "name": "styles", "memberof": "modules/components/Avatar/index.js", "longname": "modules/components/Avatar/index.js~styles", "access": null, "export": false, "importPath": "react/modules/components/Avatar/index.js", "importStyle": null, "description": null, "lineNumber": 5, "undocument": true, "type": { "types": [ "*" ] } }, { "__docId__": 157, "kind": "class", "static": true, "variation": null, "name": "Avatar", "memberof": "modules/components/Avatar/index.js", "longname": "modules/components/Avatar/index.js~Avatar", "access": null, "export": true, "importPath": "react/modules/components/Avatar/index.js", "importStyle": "Avatar", "description": "Avatar index component", "lineNumber": 15, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 158, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/Avatar/index.js~Avatar", "longname": "modules/components/Avatar/index.js~Avatar#render", "access": null, "description": "render", "lineNumber": 31, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 159, "kind": "file", "static": true, "variation": null, "name": "modules/components/BackButton/index.js", "memberof": null, "longname": "modules/components/BackButton/index.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\nimport { Link } from 'react-router'\n\n\n/**\n * BackButton index component\n */\nclass BackButton extends Component {\n\n /**\n * defaultProps\n * @type {{to: string, icon: XML, label: string}}\n */\n static defaultProps = {\n to: '/',\n icon: ,\n label: 'Back',\n }\n\n /**\n * render\n * @returns markup\n */\n render() {\n\n const content = {this.props.icon}{this.props.label}\n\n if (typeof this.props.to == 'string') {\n return (\n {content}\n )\n }\n\n return {content}\n\n }\n\n}\n\nexport default BackButton\n" }, { "__docId__": 160, "kind": "class", "static": true, "variation": null, "name": "BackButton", "memberof": "modules/components/BackButton/index.js", "longname": "modules/components/BackButton/index.js~BackButton", "access": null, "export": true, "importPath": "react/modules/components/BackButton/index.js", "importStyle": "BackButton", "description": "BackButton index component", "lineNumber": 8, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 161, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/BackButton/index.js~BackButton", "longname": "modules/components/BackButton/index.js~BackButton#render", "access": null, "description": "render", "lineNumber": 24, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 162, "kind": "file", "static": true, "variation": null, "name": "modules/components/Comment/index.js", "memberof": null, "longname": "modules/components/Comment/index.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, { Component } from 'react'\nimport TimeAgo from '../TimeAgo'\n\n/**\n * Comment index component\n */\nclass Comment extends Component {\n\n /**\n *\n * @returns markup\n */\n render() {\n return (\n
    \n
    \n {this.props.firstName} {this.props.lastName.charAt(0) + '.'}\n
    \n
    \n \n
    \n
    \n {this.props.comment}\n
    \n
    \n )\n }\n\n}\n\nexport default Comment\n" }, { "__docId__": 163, "kind": "class", "static": true, "variation": null, "name": "Comment", "memberof": "modules/components/Comment/index.js", "longname": "modules/components/Comment/index.js~Comment", "access": null, "export": true, "importPath": "react/modules/components/Comment/index.js", "importStyle": "Comment", "description": "Comment index component", "lineNumber": 7, "interface": false, "extends": [ "react~Component" ] }, { "__docId__": 164, "kind": "method", "static": false, "variation": null, "name": "render", "memberof": "modules/components/Comment/index.js~Comment", "longname": "modules/components/Comment/index.js~Comment#render", "access": null, "description": "", "lineNumber": 13, "unknown": [ { "tagName": "@returns", "tagValue": "markup" } ], "params": [], "return": { "nullable": null, "types": [ "*" ], "spread": false, "description": "markup" }, "generator": false }, { "__docId__": 165, "kind": "file", "static": true, "variation": null, "name": "modules/components/Header/index.js", "memberof": null, "longname": "modules/components/Header/index.js", "access": null, "description": null, "lineNumber": 1, "content": "import React, {Component} from 'react'\nimport { Link } from 'react-router'\n\nimport Nav from '../../components/Nav'\n\n/**\n * Left component\n */\nclass Left extends Component {\n\n /**\n * render\n * @returns markup\n */\n render() {\n return (\n
    \n \n \n \n
    \n )\n }\n\n}\n\n/**\n * Right component\n */\nclass Right extends Component {\n\n /**\n * render\n * @returns markup\n */\n render() {\n return (\n
    \n \n \n \n
    \n )\n }\n\n}\n\n/**\n * Header index component\n */\nclass Header extends Component {\n\n /**\n * defaultProps\n * @type {{userID: null, left: markup, middle: markup}}\n */\n static defaultProps = {\n userID: null,\n\n left: ,\n middle: