diff --git a/src/api/projectReports.js b/src/api/projectReports.js
deleted file mode 100644
index 9ccb0411c..000000000
--- a/src/api/projectReports.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import _ from 'lodash'
-import { axiosInstance as axios } from './requestInterceptor'
-import { PROJECTS_API_URL } from '../config/constants'
-
-/**
- * Get a project summary
- *
- * @param {integer} projectId unique identifier of the project
- */
-export function getProjectSummary(projectId) {
-
- const summaryPromise = axios.get(`${PROJECTS_API_URL}/v5/projects/${projectId}/reports?reportName=summary`)
- const budgetPromise = axios.get(`${PROJECTS_API_URL}/v5/projects/${projectId}/reports?reportName=projectBudget`)
-
- return Promise.all([summaryPromise, budgetPromise]).then(responses => {
- const res = responses[0].data
- const designMetrics = _.find(res, c => c['challenge.track'] === 'Design') || {}
- const totalRegistrants = _.sumBy(res, c => c['challenge.num_registrations'])
-
- const res1 = responses[1].data
- const filterReport = c => `${c['project_stream.tc_connect_project_id']}` === projectId.toString()
- const projectBudget = _.find(res1, filterReport) || {}
-
- return {
- projectId,
- budget: {
- work: parseFloat(projectBudget['project_stream.total_actual_member_payment'] || 0),
- fees: parseFloat(projectBudget['project_stream.total_actual_challenge_fee'] || 0),
- revenue: parseFloat(projectBudget['project_stream.total_invoiced_amount'] || 0),
- remaining: parseFloat(projectBudget['project_stream.remaining_invoiced_budget'] || 0)
- },
- // null values will be filled in as back-end implementation/integration is done.
- topcoderDifference: {
- countries: null,
- registrants: totalRegistrants,
- designs: designMetrics['challenge.num_submissions'],
- linesOfCode: null,
- hoursSaved: null,
- costSavings: null,
- valueCreated: null,
- }
- }
- })
-}
-
-/**
- * Gets signed URL for embeding the requested report.
- * @param {*} projectId id of the project for which report is to be fecthed
- * @param {*} reportName unique name of the report
- */
-export function getProjectReportUrl(projectId, reportName) {
- return axios.get(`${PROJECTS_API_URL}/v5/projects/${projectId}/reports/embed?reportName=${reportName}`)
- .then(resp => resp.data)
-}
-
-/**
- * Gets signed URL for embeding the requested report.
- * @param {*} reportName unique name of the report
- */
-export function getUserReportUrl(reportName) {
- return axios.get(`${PROJECTS_API_URL}/v5/projects/reports/embed?reportName=${reportName}`)
- .then(resp => resp.data)
-}
\ No newline at end of file
diff --git a/src/config/constants.js b/src/config/constants.js
index 420aeda9f..9d26ae45a 100644
--- a/src/config/constants.js
+++ b/src/config/constants.js
@@ -462,19 +462,6 @@ export const UPDATE_PROJECT_ATTACHMENT_FAILURE = 'UPDATE_PROJECT_ATTACHMENT_FAIL
export const REMOVE_PENDING_ATTACHMENT = 'REMOVE_PENDING_ATTACHMENT'
export const UPDATE_PENDING_ATTACHMENT = 'UPDATE_PENDING_ATTACHMENT'
-// Project summary
-export const LOAD_PROJECT_SUMMARY = 'LOAD_PROJECT_SUMMARY'
-export const LOAD_PROJECT_SUMMARY_PENDING = 'LOAD_PROJECT_SUMMARY_PENDING'
-export const LOAD_PROJECT_SUMMARY_SUCCESS = 'LOAD_PROJECT_SUMMARY_SUCCESS'
-export const LOAD_PROJECT_SUMMARY_FAILURE = 'LOAD_PROJECT_SUMMARY_FAILURE'
-export const SET_LOOKER_SESSION_EXPIRED = 'SET_LOOKER_SESSION_EXPIRED'
-
-// User Reports
-export const LOAD_USER_REPORTS = 'LOAD_USER_REPORTS'
-export const LOAD_USER_REPORTS_PENDING = 'LOAD_USER_REPORTS_PENDING'
-export const LOAD_USER_REPORTS_SUCCESS = 'LOAD_USER_REPORTS_SUCCESS'
-export const LOAD_USER_REPORTS_FAILURE = 'LOAD_USER_REPORTS_FAILURE'
-
// Product attachments
export const ADD_PRODUCT_ATTACHMENT = 'ADD_PRODUCT_ATTACHMENT'
export const ADD_PRODUCT_ATTACHMENT_PENDING = 'ADD_PRODUCT_ATTACHMENT_PENDING'
@@ -1055,21 +1042,6 @@ export const PROJECT_ASSETS_SHARED_WITH_TOPCODER_MEMBERS = 'Only Topcoder Member
export const PROJECT_ASSETS_SHARED_WITH_ADMIN = 'Only Admins'
-
-/**
- * REPORTS
- */
-export const PROJECT_REPORTS = {
- PROJECT_SUMMARY : 'summary',
- TAAS_MEMBERS : 'taas_members',
-}
-
-/**
- * Report session length in seconds
- */
-export const REPORT_SESSION_LENGTH = 25 * 60 // 25 minutes (5 minutes less than the report session)
-
-
/**
* Contentful Content Ids
*/
diff --git a/src/projects/actions/projectReports.js b/src/projects/actions/projectReports.js
deleted file mode 100644
index 42cbdffee..000000000
--- a/src/projects/actions/projectReports.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import {
- LOAD_PROJECT_SUMMARY,
- SET_LOOKER_SESSION_EXPIRED,
-} from '../../config/constants'
-import {
- getProjectSummary,
- getProjectReportUrl,
-} from '../../api/projectReports'
-
-export function loadProjectSummary(projectId) {
- return (dispatch) => {
- return dispatch({
- type: LOAD_PROJECT_SUMMARY,
- payload: getProjectSummary(projectId),
- meta: { projectId }
- })
- }
-}
-
-/**
- * Redux action to start fetching the signed URL for embeding the given report
- * @param {*} projectId id of the project
- * @param {*} reportName unique name of the report
- */
-export function loadProjectReportsUrls(projectId, reportName) {
- return (dispatch) => {
- return dispatch({
- type: LOAD_PROJECT_SUMMARY,
- payload: getProjectReportUrl(projectId, reportName),
- meta: { projectId }
- })
- }
-}
-
-/**
- * Redux action set the flag `lookerSessionExpired`
- *
- * @param {Boolean} isExpired true to indicate that looker session is expired
- */
-export function setLookerSessionExpired(isExpired) {
- return (dispatch) => {
- return dispatch({
- type: SET_LOOKER_SESSION_EXPIRED,
- payload: { lookerSessionExpired: isExpired }
- })
- }
-}
\ No newline at end of file
diff --git a/src/projects/detail/containers/ProjectSummaryReportContainer.jsx b/src/projects/detail/containers/ProjectSummaryReportContainer.jsx
index 5e51aa7c3..74c815ede 100644
--- a/src/projects/detail/containers/ProjectSummaryReportContainer.jsx
+++ b/src/projects/detail/containers/ProjectSummaryReportContainer.jsx
@@ -1,85 +1,25 @@
-import _ from 'lodash'
import React from 'react'
import PT from 'prop-types'
import { connect } from 'react-redux'
import { withRouter } from 'react-router-dom'
import MediaQuery from 'react-responsive'
-import Modal from 'react-modal'
import {
SCREEN_BREAKPOINT_MD,
PROJECT_FEED_TYPE_PRIMARY,
PROJECT_FEED_TYPE_MESSAGES,
- PROJECT_REPORTS,
- REPORT_SESSION_LENGTH,
} from '../../../config/constants'
import TwoColsLayout from '../../../components/TwoColsLayout'
import Sticky from '../../../components/Sticky'
import ProjectInfoContainer from './ProjectInfoContainer'
import { PERMISSIONS } from '../../../config/permissions'
import { hasPermission } from '../../../helpers/permissions'
-import { loadProjectReportsUrls, setLookerSessionExpired } from '../../actions/projectReports'
-import spinnerWhileLoading from '../../../components/LoadingSpinner'
import './ProjectSummaryReportContainer.scss'
-const LookerEmbedReport = (props) => {
- return ()
-}
-
-const EnhancedLookerEmbedReport = spinnerWhileLoading(props => {
- return !props.isLoading
-})(LookerEmbedReport)
-
class ProjectSummaryReportContainer extends React.Component {
-
constructor(props) {
super(props)
-
- this.timer = null
- this.setLookerSessionTimer = this.setLookerSessionTimer.bind(this)
- this.reloadProjectReport = this.reloadProjectReport.bind(this)
- }
-
- reloadProjectReport() {
- this.props.loadProjectReportsUrls(_.get(this.props, 'project.id'), PROJECT_REPORTS.PROJECT_SUMMARY)
- // don't have to set session expire timer here, it would be set of iframe load
- }
-
- componentWillMount() {
- this.reloadProjectReport()
- // don't have to set session expire timer here, it would be set of iframe load
- }
-
- componentWillUnmount() {
- if (this.timer) {
- clearTimeout(this.timer)
- }
- }
-
- componentWillUpdate(nextProps) {
- const nextReportProjectId = _.get(nextProps, 'reportsProjectId')
- const nextProjectId = _.get(nextProps, 'project.id')
-
- if (nextProjectId && nextReportProjectId !== nextProjectId) {
- this.props.loadProjectReportsUrls(nextProjectId, PROJECT_REPORTS.PROJECT_SUMMARY)
- // don't have to set session expire timer here, it would be set of iframe load
- }
- }
-
- setLookerSessionTimer() {
- console.log('Setting Looker Session Timer')
-
- if (this.timer) {
- clearTimeout(this.timer)
- }
-
- // set timeout for raising alert to refresh the token when session expires
- this.timer = setTimeout(() => {
- console.log('Looker Session is expired by timer')
- this.props.setLookerSessionExpired(true)
- window.analytics && window.analytics.track('Looker Session Expired')
- }, REPORT_SESSION_LENGTH * 1000)
}
render() {
@@ -92,8 +32,6 @@ class ProjectSummaryReportContainer extends React.Component {
phasesTopics,
isLoading,
location,
- projectSummaryEmbedUrl,
- lookerSessionExpired,
} = this.props
const leftArea = (
@@ -116,7 +54,11 @@ class ProjectSummaryReportContainer extends React.Component {
{(matches) => {
if (matches) {
- return {leftArea}
+ return (
+
+ {leftArea}
+
+ )
} else {
return leftArea
}
@@ -124,29 +66,13 @@ class ProjectSummaryReportContainer extends React.Component {
-
-
- Report sessions expired
-
-
-
- To keep the data up to date, please, hit "Refresh" button to reload the report.
-
-
-
-
-
-
-
+
+
+ This content has been moved. Please contact{' '}
+ support@topcoder.com to
+ receive an emailed copy of your report.
+
+
)
@@ -158,30 +84,28 @@ ProjectSummaryReportContainer.propTypes = {
project: PT.object.isRequired,
phases: PT.array.isRequired,
productsTimelines: PT.object.isRequired,
- reportsProjectId: PT.number,
}
-const mapStateToProps = ({ projectState, projectTopics, phasesTopics, projectReports }) => {
+const mapStateToProps = ({ projectState, projectTopics, phasesTopics }) => {
// all feeds includes primary as well as private topics if user has access to private topics
let allFeed = projectTopics.feeds[PROJECT_FEED_TYPE_PRIMARY].topics
if (hasPermission(PERMISSIONS.ACCESS_PRIVATE_POST)) {
- allFeed = [...allFeed, ...projectTopics.feeds[PROJECT_FEED_TYPE_MESSAGES].topics]
+ allFeed = [
+ ...allFeed,
+ ...projectTopics.feeds[PROJECT_FEED_TYPE_MESSAGES].topics,
+ ]
}
return {
phases: projectState.phases,
feeds: allFeed,
phasesTopics,
- isLoading: projectReports.isLoading,
- reportsProjectId: projectReports.projectId,
- lookerSessionExpired: projectReports.lookerSessionExpired,
- projectSummaryEmbedUrl: projectReports.projectSummaryEmbedUrl,
}
}
-const mapDispatchToProps = {
- loadProjectReportsUrls,
- setLookerSessionExpired,
-}
+const mapDispatchToProps = {}
-export default connect(mapStateToProps, mapDispatchToProps)(withRouter(ProjectSummaryReportContainer))
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(withRouter(ProjectSummaryReportContainer))
diff --git a/src/projects/detail/containers/ProjectSummaryReportContainer.scss b/src/projects/detail/containers/ProjectSummaryReportContainer.scss
index 40a2009e1..5ee3585d4 100644
--- a/src/projects/detail/containers/ProjectSummaryReportContainer.scss
+++ b/src/projects/detail/containers/ProjectSummaryReportContainer.scss
@@ -1,3 +1,34 @@
-iframe {
- height: calc(100vh - 60px);
-}
\ No newline at end of file
+@import '~tc-ui/src/styles/tc-includes';
+@import '../../../styles/includes';
+
+.container {
+ @include stand-alone-item-shadow;
+ background-color: $tc-white;
+ border-radius: $card-border-radius;
+ margin-top: 4 * $base-unit;
+ padding: 4 * $base-unit;
+ margin: 0 auto;
+ max-width: 760px;
+
+ @media screen and (min-width: $screen-md) {
+ margin-top: 30px;
+ }
+
+ @media screen and (max-width: $screen-md - 1px) {
+ border-radius: 0;
+ }
+
+ p {
+ @include roboto;
+ font-size: 15px;
+ line-height: 25px;
+
+ a {
+ color: $tc-dark-blue;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+}
diff --git a/src/projects/reducers/projectReports.js b/src/projects/reducers/projectReports.js
deleted file mode 100644
index 18961e2c0..000000000
--- a/src/projects/reducers/projectReports.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import {
- LOAD_PROJECT_SUMMARY_PENDING,
- LOAD_PROJECT_SUMMARY_SUCCESS,
- LOAD_PROJECT_SUMMARY_FAILURE,
- SET_LOOKER_SESSION_EXPIRED,
-} from '../../config/constants'
-
-const initialState = {
- isLoading: false,
- error: false,
- projectId: null,
- projectSummary: null,
- projectSummaryEmbedUrl: null,
- lookerSessionExpired: false,
-}
-
-export const projectReports = function (state=initialState, action) {
- const payload = action.payload
-
- switch (action.type) {
- case LOAD_PROJECT_SUMMARY_PENDING:
- return Object.assign({}, state, {
- isLoading: true,
- error: false,
- projectId: action.meta.projectId,
- })
-
- case LOAD_PROJECT_SUMMARY_SUCCESS:
- if(action.meta.projectId === state.projectId) {
- return Object.assign({}, state, {
- isLoading: false,
- error: false,
- projectSummaryEmbedUrl: payload,
- lookerSessionExpired: false,
- // projectSummary: payload
- })
- } else {
- return state
- }
-
- case LOAD_PROJECT_SUMMARY_FAILURE: {
- return Object.assign({}, state, {
- isLoading: false,
- error: payload
- })
- }
-
- case SET_LOOKER_SESSION_EXPIRED: {
- return Object.assign({}, state, {
- lookerSessionExpired: payload
- })
- }
-
- default:
- return state
- }
-}
diff --git a/src/reducers/index.js b/src/reducers/index.js
index 722b3d6bf..ce66c154e 100644
--- a/src/reducers/index.js
+++ b/src/reducers/index.js
@@ -6,8 +6,6 @@ import { projectDashboard } from '../projects/reducers/projectDashboard'
import { projectTopics } from '../projects/reducers/projectTopics'
import { topics } from './topics'
import { productsTimelines } from '../projects/reducers/productsTimelines'
-import { projectReports } from '../projects/reducers/projectReports'
-import { userReports } from '../routes/reports/reducers'
import navSearch from './navSearch'
import projectSearch from '../projects/reducers/projectSearch'
import projectSearchSuggestions from '../projects/reducers/projectSearchSuggestions'
@@ -27,12 +25,10 @@ export default combineReducers({
members,
projectDashboard,
projectTopics,
- projectReports,
topics,
alerts,
notifications,
settings,
templates,
productsTimelines,
- userReports,
})
diff --git a/src/reports/components/dashboard/ReportDashboard.jsx b/src/reports/components/dashboard/ReportDashboard.jsx
deleted file mode 100644
index 79536f470..000000000
--- a/src/reports/components/dashboard/ReportDashboard.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import React, { Component } from 'react'
-import { connect } from 'react-redux'
-
-class ReportDashboard extends Component {
- constructor(props) {
- super(props)
- }
-
- render() {
- return (
Reports
)
- }
-}
-
-const mapStateToProps = () => {
- return {
- }
-}
-
-const actionsToBind = { }
-
-export default connect(mapStateToProps, actionsToBind)(ReportDashboard)
diff --git a/src/reports/routes.jsx b/src/reports/routes.jsx
deleted file mode 100644
index fb6b2d01b..000000000
--- a/src/reports/routes.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import { Route } from 'react-router-dom'
-
-import ReportDashboard from './components/dashboard/ReportDashboard'
-
-const reportsListRoutes = (
-
-)
-
-export default reportsListRoutes
diff --git a/src/routes/reports/actions/index.js b/src/routes/reports/actions/index.js
deleted file mode 100644
index b50dee87b..000000000
--- a/src/routes/reports/actions/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import {
- LOAD_USER_REPORTS,
- SET_LOOKER_SESSION_EXPIRED,
-} from '../../../config/constants'
-import {
- getUserReportUrl,
-} from '../../../api/projectReports'
-
-/**
- * Redux action to start fetching the signed URL for embeding the given report
- * @param {*} reportName unique name of the report
- */
-export function loadUserReportsUrls(reportName) {
- return (dispatch) => {
- return dispatch({
- type: LOAD_USER_REPORTS,
- payload: getUserReportUrl(reportName),
- })
- }
-}
-
-/**
- * Redux action set the flag `lookerSessionExpired`
- *
- * @param {Boolean} isExpired true to indicate that looker session is expired
- */
-export function setLookerSessionExpired(isExpired) {
- return (dispatch) => {
- return dispatch({
- type: SET_LOOKER_SESSION_EXPIRED,
- payload: { lookerSessionExpired: isExpired }
- })
- }
-}
\ No newline at end of file
diff --git a/src/routes/reports/containers/UserReportsContainer.jsx b/src/routes/reports/containers/UserReportsContainer.jsx
index c45f47fd3..38c47df8f 100644
--- a/src/routes/reports/containers/UserReportsContainer.jsx
+++ b/src/routes/reports/containers/UserReportsContainer.jsx
@@ -1,65 +1,21 @@
import React, { Component } from 'react'
import MediaQuery from 'react-responsive'
-import Modal from 'react-modal'
import Sticky from 'react-stickynode'
import { connect } from 'react-redux'
import { withRouter } from 'react-router-dom'
-import { loadUserReportsUrls, setLookerSessionExpired } from '../actions'
-import { SCREEN_BREAKPOINT_MD, PROJECT_REPORTS, REPORT_SESSION_LENGTH } from '../../../config/constants'
+import { SCREEN_BREAKPOINT_MD } from '../../../config/constants'
import TwoColsLayout from '../../../components/TwoColsLayout'
import UserSidebar from '../../../components/UserSidebar/UserSidebar'
-import spinnerWhileLoading from '../../../components/LoadingSpinner'
-const LookerEmbedReport = (props) => {
- return ()
-}
-
-const EnhancedLookerEmbedReport = spinnerWhileLoading(props => {
- return !props.isLoading
-})(LookerEmbedReport)
+import './UserReportsContainer.scss'
class UserReportsContainer extends Component {
constructor(props) {
super(props)
-
- this.timer = null
- this.setLookerSessionTimer = this.setLookerSessionTimer.bind(this)
- this.reloadProjectReport = this.reloadProjectReport.bind(this)
- }
-
- reloadProjectReport() {
- this.props.loadUserReportsUrls(PROJECT_REPORTS.PROJECT_SUMMARY)
- // don't have to set session expire timer here, it would be set of iframe load
- }
-
- componentWillMount() {
- this.reloadProjectReport()
- // don't have to set session expire timer here, it would be set of iframe load
- }
-
- componentWillUnmount() {
- if (this.timer) {
- clearTimeout(this.timer)
- }
- }
-
- setLookerSessionTimer() {
- console.log('Setting Looker Session Timer')
-
- if (this.timer) {
- clearTimeout(this.timer)
- }
-
- // set timeout for raising alert to refresh the token when session expires
- this.timer = setTimeout(() => {
- console.log('Looker Session is expired by timer')
- this.props.setLookerSessionExpired(true)
- window.analytics && window.analytics.track('Looker Session Expired')
- }, REPORT_SESSION_LENGTH * 1000)
}
render() {
- const { user, isLoading, userReportsEmbedUrl, lookerSessionExpired } = this.props
+ const { user } = this.props
return (
@@ -69,57 +25,37 @@ class UserReportsContainer extends Component {
if (matches) {
return (
-
+
)
} else {
- return
+ return
}
}}
-
-
- Report sessions expired
-
-
-
- To keep the data up to date, please, hit "Refresh" button to reload the report.
-
-
-
-
-
-
-
+
+
+ This content has been moved. Please contact{' '}
+ support@topcoder.com to
+ receive an emailed copy of your report.
+
+
)
}
}
-const mapStateToProps = ({ loadUser, userReports }) => {
-
+const mapStateToProps = ({ loadUser }) => {
return {
user: loadUser.user,
- isLoading: userReports.isLoading,
- lookerSessionExpired: userReports.lookerSessionExpired,
- userReportsEmbedUrl: userReports.userReportsEmbedUrl,
}
}
-const mapDispatchToProps = {
- loadUserReportsUrls,
- setLookerSessionExpired,
-}
+const mapDispatchToProps = {}
-export default connect(mapStateToProps, mapDispatchToProps)(withRouter(UserReportsContainer))
\ No newline at end of file
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(withRouter(UserReportsContainer))
diff --git a/src/routes/reports/containers/UserReportsContainer.scss b/src/routes/reports/containers/UserReportsContainer.scss
new file mode 100644
index 000000000..5ee3585d4
--- /dev/null
+++ b/src/routes/reports/containers/UserReportsContainer.scss
@@ -0,0 +1,34 @@
+@import '~tc-ui/src/styles/tc-includes';
+@import '../../../styles/includes';
+
+.container {
+ @include stand-alone-item-shadow;
+ background-color: $tc-white;
+ border-radius: $card-border-radius;
+ margin-top: 4 * $base-unit;
+ padding: 4 * $base-unit;
+ margin: 0 auto;
+ max-width: 760px;
+
+ @media screen and (min-width: $screen-md) {
+ margin-top: 30px;
+ }
+
+ @media screen and (max-width: $screen-md - 1px) {
+ border-radius: 0;
+ }
+
+ p {
+ @include roboto;
+ font-size: 15px;
+ line-height: 25px;
+
+ a {
+ color: $tc-dark-blue;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+}
diff --git a/src/routes/reports/reducers/index.js b/src/routes/reports/reducers/index.js
deleted file mode 100644
index 2dad42c58..000000000
--- a/src/routes/reports/reducers/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import {
- LOAD_USER_REPORTS_PENDING,
- LOAD_USER_REPORTS_SUCCESS,
- LOAD_USER_REPORTS_FAILURE,
- SET_LOOKER_SESSION_EXPIRED,
-} from '../../../config/constants'
-
-const initialState = {
- isLoading: false,
- error: false,
- userReports: null,
- userReportsEmbedUrl: null,
- lookerSessionExpired: false,
-}
-
-export const userReports = function (state=initialState, action) {
- const payload = action.payload
-
- switch (action.type) {
- case LOAD_USER_REPORTS_PENDING:
- return Object.assign({}, state, {
- isLoading: true,
- error: false,
- })
-
- case LOAD_USER_REPORTS_SUCCESS:
- return Object.assign({}, state, {
- isLoading: false,
- error: false,
- userReportsEmbedUrl: payload,
- lookerSessionExpired: false,
- })
-
- case LOAD_USER_REPORTS_FAILURE: {
- return Object.assign({}, state, {
- isLoading: false,
- error: payload
- })
- }
-
- case SET_LOOKER_SESSION_EXPIRED: {
- return Object.assign({}, state, {
- lookerSessionExpired: payload
- })
- }
-
- default:
- return state
- }
-}
-
\ No newline at end of file