diff --git a/frontend/app/components/shared/Bookmark/Bookmark.tsx b/frontend/app/components/shared/Bookmark/Bookmark.tsx
new file mode 100644
index 000000000..ed75e6c7e
--- /dev/null
+++ b/frontend/app/components/shared/Bookmark/Bookmark.tsx
@@ -0,0 +1,26 @@
+import React, { useState } from 'react'
+import stl from './bookmark.css'
+import { Icon } from 'UI'
+import { toggleFavorite } from 'Duck/sessions'
+import { connect } from 'react-redux'
+// import Session from 'Types/session';
+
+interface Props {
+ toggleFavorite: (session) => void,
+ favorite: Boolean,
+ sessionId: any
+}
+function Bookmark({ toggleFavorite, sessionId, favorite } : Props ) {
+
+ return (
+
-
-
-
+
+
diff --git a/frontend/app/components/shared/SessionItem/sessionItem.css b/frontend/app/components/shared/SessionItem/sessionItem.css
index 853e70bea..8f9824bec 100644
--- a/frontend/app/components/shared/SessionItem/sessionItem.css
+++ b/frontend/app/components/shared/SessionItem/sessionItem.css
@@ -20,13 +20,20 @@
align-items: center;
border: solid thin #EEEEEE;
+ & .favorite {
+ opacity: 0;
+ &[data-favourite=true] {
+ opacity: 1;
+ }
+ }
+
&:hover {
& .playLink {
transition: all 0.4s;
opacity: 1;
}
- & .favoriteWrapper {
+ & .favorite {
transition: all 0.4s;
opacity: 1;
}
@@ -81,21 +88,6 @@
}
}
-.favoriteWrapper {
- cursor: pointer;
- display: flex;
- align-items: center;
- opacity: 0;
- margin: 0 15px;
-
- &[data-favourite=true] {
- opacity: 1;
- & svg {
- fill: $teal;
- }
- }
-}
-
.playLink {
display: flex;
align-items: center;
diff --git a/frontend/app/duck/sessions.js b/frontend/app/duck/sessions.js
index 9089490c4..271a590ec 100644
--- a/frontend/app/duck/sessions.js
+++ b/frontend/app/duck/sessions.js
@@ -120,9 +120,10 @@ const reducer = (state = initialState, action = {}) => {
return state
.set('list', list)
.set('sessionIds', list.map(({ sessionId }) => sessionId ).toJS())
+ .set('favoriteList', list.filter(({ favorite }) => favorite))
.set('total', total)
.set('keyMap', keyMap)
- .set('wdTypeCount', wdTypeCount);
+ .set('wdTypeCount', wdTypeCount);
case SET_AUTOPLAY_VALUES: {
const sessionIds = state.get('sessionIds')
const currentSessionId = state.get('current').sessionId
@@ -179,13 +180,15 @@ const reducer = (state = initialState, action = {}) => {
.set('visitedEvents', visitedEvents)
.set('host', visitedEvents[0] && visitedEvents[0].host);
}
- case FETCH_FAVORITE_LIST.SUCCESS:
+ case FETCH_FAVORITE_LIST.SUCCESS:
return state
.set('favoriteList', List(action.data).map(Session));
case TOGGLE_FAVORITE.SUCCESS: {
- const id = action.session.sessionId;
+ const id = action.sessionId;
+ const session = state.get('list').find(({sessionId}) => sessionId === id)
const wasInFavorite = state
.get('favoriteList').findIndex(({ sessionId }) => sessionId === id) > -1;
+
return state
.update('list', list => list
.map(session => (session.sessionId === id
@@ -193,7 +196,7 @@ const reducer = (state = initialState, action = {}) => {
: session)))
.update('favoriteList', list => (wasInFavorite
? list.filter(({ sessionId }) => sessionId !== id)
- : list.push(action.session.set('favorite', true))))
+ : list.push(session.set('favorite', true))))
.update('current', session => (session.sessionId === id
? session.set('favorite', !wasInFavorite)
: session));
@@ -283,11 +286,11 @@ export const fetch = (sessionId) => (dispatch, getState) => {
});
}
-export function toggleFavorite(session) {
+export function toggleFavorite(sessionId) {
return {
types: TOGGLE_FAVORITE.toArray(),
- call: client => client.get(`/sessions2/${ session.sessionId }/favorite`),
- session,
+ call: client => client.get(`/sessions2/${ sessionId }/favorite`),
+ sessionId,
};
}