diff --git a/frontend/app/components/BugFinder/BugFinder.js b/frontend/app/components/BugFinder/BugFinder.js index bac9ea8e6..720bc713d 100644 --- a/frontend/app/components/BugFinder/BugFinder.js +++ b/frontend/app/components/BugFinder/BugFinder.js @@ -5,7 +5,7 @@ import { fetchFavoriteList as fetchFavoriteSessionList } from 'Duck/sessions'; import { countries } from 'App/constants'; -import { applyFilter, clearEvents } from 'Duck/filters'; +import { applyFilter, clearEvents, addAttribute } from 'Duck/filters'; import { fetchList as fetchFunnelsList } from 'Duck/funnels'; import { defaultFilters, preloadedFilters } from 'Types/filter'; import { KEYS } from 'Types/filter/customFilter'; @@ -34,6 +34,21 @@ const weakEqual = (val1, val2) => { return `${ val1 }` === `${ val2 }`; } +const allowedQueryKeys = [ + 'userOs', + 'userId', + 'userBrowser', + 'userDevice', + 'userCountry', + 'startDate', + 'endDate', + 'minDuration', + 'maxDuration', + 'referrer', + 'sort', + 'order', +]; + @withLocationHandlers() @connect(state => ({ filter: state.getIn([ 'filters', 'appliedFilter' ]), @@ -50,6 +65,7 @@ const weakEqual = (val1, val2) => { }), { fetchFavoriteSessionList, applyFilter, + addAttribute, fetchFilterVariables, fetchIntegrationVariables, fetchSources, @@ -88,10 +104,14 @@ export default class BugFinder extends React.PureComponent { }; }); - this.props.resetFunnel(); - this.props.resetFunnelFilters(); - + props.resetFunnel(); + props.resetFunnelFilters(); props.fetchFunnelsList(LAST_7_DAYS) + + const queryFilter = this.props.query.all(allowedQueryKeys); + if (queryFilter.hasOwnProperty('userId')) { + props.addAttribute({ label: 'User Id', key: KEYS.USERID, type: KEYS.USERID, operator: 'is', value: queryFilter.userId }) + } } toggleRehydratePanel = () => { diff --git a/frontend/app/components/BugFinder/LiveSessionList/LiveSessionList.tsx b/frontend/app/components/BugFinder/LiveSessionList/LiveSessionList.tsx index 95f6e4b76..c07af0f99 100644 --- a/frontend/app/components/BugFinder/LiveSessionList/LiveSessionList.tsx +++ b/frontend/app/components/BugFinder/LiveSessionList/LiveSessionList.tsx @@ -8,7 +8,7 @@ import { KEYS } from 'Types/filter/customFilter'; import { applyFilter, addAttribute } from 'Duck/filters'; import Filter from 'Types/filter'; -const AUTOREFRESH_INTERVAL = 1 * 60 * 1000 +const AUTOREFRESH_INTERVAL = .5 * 60 * 1000 interface Props { loading: Boolean, diff --git a/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js b/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js index 48cb9c0f8..fb89f6967 100644 --- a/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js +++ b/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js @@ -1,18 +1,18 @@ import React, { useEffect } from 'react' import { connect } from 'react-redux'; import cn from 'classnames'; -import { SideMenuitem, SavedSearchList, Progress, Popup } from 'UI' +import { SideMenuitem, SavedSearchList, Progress, Popup, Icon, CircularLoader } from 'UI' import stl from './sessionMenu.css'; import { fetchWatchdogStatus } from 'Duck/watchdogs'; import { setActiveFlow, clearEvents } from 'Duck/filters'; import { setActiveTab } from 'Duck/sessions'; import { issues_types } from 'Types/session/issue' -import NewBadge from 'Shared/NewBadge'; +import { fetchList as fetchSessionList } from 'Duck/sessions'; function SessionsMenu(props) { const { activeFlow, activeTab, watchdogs = [], keyMap, wdTypeCount, - fetchWatchdogStatus, toggleRehydratePanel } = props; + fetchWatchdogStatus, toggleRehydratePanel, filters, sessionsLoading } = props; const onMenuItemClick = (filter) => { props.onMenuItemClick(filter) @@ -76,10 +76,19 @@ function SessionsMenu(props) {