* PLT-4167 Team Sidebar

* Address feedback from PM

* change route from my_members to members

* bug fixes

* Updating styles for teams sidebar (#4681)

* Added PM changes

* Fix corner cases

* Addressing feedback

* use two different endpoints

* Bug fixes

* Rename model and client functions, using preferences to store last team and channel viewed

* Fix mobile notification count and closing the team sidebar

* unit test, fixed bad merge and retrieve from cached when available

* bug fixes

* use id for last channel in preferences, query optimization

* Updating multi team css (#4830)
Этот коммит содержится в:
enahum
2016-12-19 10:05:46 -03:00
коммит произвёл Joram Wilander
родитель 3ce2ce9dc8
Коммит 999d1553e1
50 изменённых файлов: 1139 добавлений и 183 удалений

Просмотреть файл

Просмотреть файл

@@ -24,6 +24,7 @@ export default class SelectTeam extends React.Component {
super(props);
this.onTeamChange = this.onTeamChange.bind(this);
this.handleTeamClick = this.handleTeamClick.bind(this);
this.teamContentsCompare = this.teamContentsCompare.bind(this);
const state = this.getStateFromStores(false);
state.loadingTeamId = '';
@@ -61,33 +62,15 @@ export default class SelectTeam extends React.Component {
}
render() {
let content = null;
let teamContents = [];
let openTeamContents = [];
const isAlreadyMember = new Map();
const isSystemAdmin = Utils.isSystemAdmin(UserStore.getCurrentUser().roles);
let teamMembersCount = 0;
for (const teamMember of this.state.teamMembers) {
const teamId = teamMember.team_id;
const team = this.state.teams[teamId];
isAlreadyMember[teamId] = true;
teamMembersCount++;
teamContents.push(
<SelectTeamItem
key={'team_' + team.name}
team={team}
url={'/' + team.name + '/channels/town-square'}
onTeamClick={this.handleTeamClick}
loading={this.state.loadingTeamId === teamId}
/>
);
}
teamContents = teamContents.sort(this.teamContentsCompare);
var openTeamContents = [];
for (const id in this.state.teamListings) {
if (this.state.teamListings.hasOwnProperty(id) && !isAlreadyMember[id]) {
const openTeam = this.state.teamListings[id];
@@ -103,8 +86,8 @@ export default class SelectTeam extends React.Component {
}
}
if (teamMembersCount === 0 && teamContents.length === 0 && openTeamContents.length === 0 && (global.window.mm_config.EnableTeamCreation === 'true' || isSystemAdmin)) {
teamContents = (
if (openTeamContents.length === 0 && (global.window.mm_config.EnableTeamCreation === 'true' || isSystemAdmin)) {
openTeamContents = (
<div className='signup-team-dir-err'>
<div>
<FormattedMessage
@@ -114,8 +97,8 @@ export default class SelectTeam extends React.Component {
</div>
</div>
);
} else if (teamMembersCount === 0 && teamContents.length === 0 && openTeamContents.length === 0) {
teamContents = (
} else if (openTeamContents.length === 0) {
openTeamContents = (
<div className='signup-team-dir-err'>
<div>
<FormattedMessage
@@ -125,42 +108,25 @@ export default class SelectTeam extends React.Component {
</div>
</div>
);
} else if (teamContents.length === 0 && openTeamContents.length > 0) {
teamContents = null;
}
if (teamContents) {
content = (
<div className='signup__content'>
<h4>
<FormattedMessage
id='signup_team.choose'
defaultMessage='Your teams:'
/>
</h4>
<div className='signup-team-all'>
{teamContents}
</div>
</div>
);
if (Array.isArray(openTeamContents)) {
openTeamContents = openTeamContents.sort(this.teamContentsCompare);
}
var openContent;
if (openTeamContents.length > 0) {
openContent = (
<div className='signup__content'>
<h4>
<FormattedMessage
id='signup_team.join_open'
defaultMessage='Teams you can join: '
/>
</h4>
<div className='signup-team-all'>
{openTeamContents.sort(this.teamContentsCompare)}
</div>
let openContent = (
<div className='signup__content'>
<h4>
<FormattedMessage
id='signup_team.join_open'
defaultMessage='Teams you can join: '
/>
</h4>
<div className='signup-team-all'>
{openTeamContents}
</div>
);
}
</div>
);
if (!this.state.loaded) {
openContent = <LoadingScreen/>;
@@ -177,7 +143,7 @@ export default class SelectTeam extends React.Component {
}
let teamSignUp;
if (isSystemAdmin || (global.window.mm_config.EnableTeamCreation === 'true' && !UserAgent.isMobileApp())) {
if (isSystemAdmin || global.window.mm_config.EnableTeamCreation === 'true') {
teamSignUp = (
<div className='margin--extra'>
<Link
@@ -197,7 +163,7 @@ export default class SelectTeam extends React.Component {
}
let adminConsoleLink;
if (isSystemAdmin) {
if (isSystemAdmin && !UserAgent.isMobileApp()) {
adminConsoleLink = (
<div className='margin--extra hidden-xs'>
<Link
@@ -225,19 +191,30 @@ export default class SelectTeam extends React.Component {
);
}
let headerButton;
if (this.state.teamMembers.length) {
headerButton = (
<Link to='/'>
<span className='fa fa-chevron-left'/>
<FormattedMessage id='web.header.back'/>
</Link>
);
} else {
headerButton = (
<a
href='#'
onClick={GlobalActions.emitUserLoggedOutEvent}
>
<span className='fa fa-chevron-left'/>
<FormattedMessage id='web.header.logout'/>
</a>
);
}
return (
<div>
<ErrorBar/>
<div className='signup-header'>
<a
href='#'
onClick={GlobalActions.emitUserLoggedOutEvent}
>
<span className='fa fa-chevron-left'/>
<FormattedMessage
id='navbar_dropdown.logout'
/>
</a>
{headerButton}
</div>
<div className='col-sm-12'>
<div className={'signup-team__container'}>
@@ -249,7 +226,6 @@ export default class SelectTeam extends React.Component {
<h4 className='color--light'>
{description}
</h4>
{content}
{openContent}
{teamSignUp}
{adminConsoleLink}