2016-09-21 06:27:11 -08:00
|
|
|
import {createSelector} from 'reselect';
|
|
|
|
|
|
2016-07-13 12:44:24 -08:00
|
|
|
import Header from '../components/header';
|
2016-09-21 06:27:11 -08:00
|
|
|
import {closeTab, changeTab, maximize, unmaximize} from '../actions/header';
|
|
|
|
|
import {values} from '../utils/object';
|
|
|
|
|
import {connect} from '../utils/plugins';
|
2016-07-13 12:44:24 -08:00
|
|
|
|
|
|
|
|
const isMac = /Mac/.test(navigator.userAgent);
|
|
|
|
|
|
2016-09-21 06:27:11 -08:00
|
|
|
const getSessions = sessions => sessions.sessions;
|
|
|
|
|
const getActiveUid = sessions => sessions.activeUid;
|
2016-07-13 12:44:24 -08:00
|
|
|
const getActivityMarkers = (sessions, ui) => ui.activityMarkers;
|
|
|
|
|
const getTabs = createSelector(
|
|
|
|
|
[getSessions, getActiveUid, getActivityMarkers],
|
2016-09-21 06:27:11 -08:00
|
|
|
(sessions, activeUid, activityMarkers) => values(sessions).map(s => {
|
2016-07-13 12:44:24 -08:00
|
|
|
return {
|
|
|
|
|
uid: s.uid,
|
|
|
|
|
title: s.title,
|
|
|
|
|
isActive: s.uid === activeUid,
|
|
|
|
|
hasActivity: activityMarkers[s.uid]
|
|
|
|
|
};
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const HeaderContainer = connect(
|
2016-09-21 06:27:11 -08:00
|
|
|
state => {
|
2016-07-13 12:44:24 -08:00
|
|
|
return {
|
|
|
|
|
// active is an index
|
|
|
|
|
isMac,
|
|
|
|
|
tabs: getTabs(state.sessions, state.ui),
|
|
|
|
|
activeMarkers: state.ui.activityMarkers,
|
|
|
|
|
borderColor: state.ui.borderColor,
|
2016-08-06 02:01:01 -08:00
|
|
|
backgroundColor: state.ui.backgroundColor,
|
|
|
|
|
maximized: state.ui.maximized
|
2016-07-13 12:44:24 -08:00
|
|
|
};
|
|
|
|
|
},
|
2016-09-21 06:27:11 -08:00
|
|
|
dispatch => {
|
2016-07-13 12:44:24 -08:00
|
|
|
return {
|
2016-09-21 06:27:11 -08:00
|
|
|
onCloseTab: i => {
|
2016-07-13 12:44:24 -08:00
|
|
|
dispatch(closeTab(i));
|
|
|
|
|
},
|
|
|
|
|
|
2016-09-21 06:27:11 -08:00
|
|
|
onChangeTab: i => {
|
2016-07-13 12:44:24 -08:00
|
|
|
dispatch(changeTab(i));
|
2016-08-06 02:01:01 -08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
maximize: () => {
|
|
|
|
|
dispatch(maximize());
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
unmaximize: () => {
|
|
|
|
|
dispatch(unmaximize());
|
2016-07-13 12:44:24 -08:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
)(Header, 'Header');
|
|
|
|
|
|
|
|
|
|
export default HeaderContainer;
|