diff --git a/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js b/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js index 198dc6593..eb5eaab86 100644 --- a/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js +++ b/frontend/app/components/BugFinder/SessionsMenu/SessionsMenu.js @@ -11,7 +11,7 @@ import { useModal } from 'App/components/Modal'; import SessionSettings from 'Shared/SessionSettings/SessionSettings' function SessionsMenu(props) { - const { activeTab } = props; + const { activeTab, keyMap, wdTypeCount, toggleRehydratePanel, isEnterprise } = props; const { showModal } = useModal(); const onMenuItemClick = (filter) => { @@ -76,8 +76,8 @@ function SessionsMenu(props) {
onMenuItemClick({ name: 'Bookmarks', type: 'bookmark' })} /> @@ -96,6 +96,7 @@ export default connect(state => ({ captureRate: state.getIn(['watchdogs', 'captureRate']), filters: state.getIn([ 'filters', 'appliedFilter' ]), sessionsLoading: state.getIn([ 'sessions', 'fetchLiveListRequest', 'loading' ]), + isEnterprise: state.getIn([ 'user', 'client', 'edition' ]) === 'ee', }), { clearEvents, fetchSessionList })(SessionsMenu); diff --git a/frontend/app/components/Session_/PlayerBlockHeader.js b/frontend/app/components/Session_/PlayerBlockHeader.js index 58a524022..4717c6329 100644 --- a/frontend/app/components/Session_/PlayerBlockHeader.js +++ b/frontend/app/components/Session_/PlayerBlockHeader.js @@ -12,6 +12,7 @@ import SharePopup from '../shared/SharePopup/SharePopup'; import { fetchList as fetchListIntegration } from 'Duck/integrations/actions'; import { countries } from 'App/constants'; import SessionMetaList from 'Shared/SessionItem/SessionMetaList'; +import Bookmark from 'Shared/Bookmark' import stl from './playerBlockHeader.css'; import Issues from './Issues/Issues'; @@ -162,7 +163,8 @@ export default class PlayerBlockHeader extends React.PureComponent { <>
- + {/* + /> */}
void, + toggleFavorite: (sessionId: string) => Promise, favorite: Boolean, - sessionId: any + sessionId: any, + isEnterprise: Boolean } -function Bookmark({ toggleFavorite, sessionId, favorite } : Props ) { +function Bookmark(props : Props ) { + const { sessionId, favorite, isEnterprise } = props; + const [isFavorite, setIsFavorite] = useState(favorite); + const ADDED_MESSAGE = isEnterprise ? 'Session added to vault' : 'Session added to your favorites'; + const REMOVED_MESSAGE = isEnterprise ? 'Session removed from vault' : 'Session removed from your favorites'; + const TOOLTIP_TEXT_ADD = isEnterprise ? 'Add to vault' : 'Add to favorites'; + const TOOLTIP_TEXT_REMOVE = isEnterprise ? 'Remove from vault' : 'Remove from favorites'; - return ( -
toggleFavorite(sessionId) } - data-favourite={ favorite } + const ACTIVE_ICON = isEnterprise ? 'safe-fill' : 'star-solid'; + const INACTIVE_ICON = isEnterprise ? 'safe' : 'star'; + + + useEffect(() => { + setIsFavorite(favorite); + }, [favorite]); + + const toggleFavorite = async () => { + props.toggleFavorite(sessionId).then(() => { + toast.success(isFavorite ? REMOVED_MESSAGE : ADDED_MESSAGE); + setIsFavorite(!isFavorite); + }); + } + + return ( + - -
+
+ +
+ ) } -export default connect(null, { toggleFavorite })(Bookmark) +export default connect(state => ({ + isEnterprise: state.getIn([ 'user', 'client', 'edition' ]) === 'ee', +}), { toggleFavorite })(Bookmark) diff --git a/frontend/app/svg/icons/safe-fill.svg b/frontend/app/svg/icons/safe-fill.svg new file mode 100644 index 000000000..76ed5854e --- /dev/null +++ b/frontend/app/svg/icons/safe-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/frontend/app/svg/icons/safe.svg b/frontend/app/svg/icons/safe.svg new file mode 100644 index 000000000..f06ce9c78 --- /dev/null +++ b/frontend/app/svg/icons/safe.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file