links: remove members page

This commit is contained in:
Matilde Park 2020-08-14 16:25:08 -04:00
parent 9a819746b9
commit d2579b1658
4 changed files with 3 additions and 216 deletions

View File

@ -7,7 +7,6 @@ import './css/custom.css';
import { Skeleton } from './components/skeleton'; import { Skeleton } from './components/skeleton';
import { NewScreen } from './components/new'; import { NewScreen } from './components/new';
import { MemberScreen } from './components/member';
import { SettingsScreen } from './components/settings'; import { SettingsScreen } from './components/settings';
import { MessageScreen } from './components/lib/message-screen'; import { MessageScreen } from './components/lib/message-screen';
import { Links } from './components/links-list'; import { Links } from './components/links-list';
@ -18,7 +17,6 @@ import {
base64urlDecode base64urlDecode
} from '../../../logic/lib/util'; } from '../../../logic/lib/util';
export class LinksApp extends Component { export class LinksApp extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -41,7 +39,6 @@ export class LinksApp extends Component {
this.props.subscription.stopApp('link'); this.props.subscription.stopApp('link');
} }
render() { render() {
const { props } = this; const { props } = this;
@ -69,7 +66,6 @@ export class LinksApp extends Component {
const invites = props.invites ? const invites = props.invites ?
props.invites : {}; props.invites : {};
const listening = props.linkListening; const listening = props.linkListening;
const { api, sidebarShown } = this.props; const { api, sidebarShown } = this.props;
@ -133,46 +129,6 @@ export class LinksApp extends Component {
autoJoin(); autoJoin();
}} }}
/> />
<Route exact path="/~link/(popout)?/:resource/members"
render={(props) => {
const popout = props.match.url.includes('/popout/');
const resourcePath = '/' + props.match.params.resource;
const resource = associations.link[resourcePath] || { metadata: {} };
const contactDetails = contacts[resource['group-path']] || {};
const group = groups[resource['group-path']] || new Set([]);
const amOwner = amOwnerOfGroup(resource['group-path']);
return (
<Skeleton
associations={associations}
invites={invites}
groups={groups}
selected={resourcePath}
sidebarShown={sidebarShown}
links={links}
listening={listening}
api={api}
>
<MemberScreen
sidebarShown={sidebarShown}
resource={resource}
contacts={contacts}
contactDetails={contactDetails}
groupPath={resource['group-path']}
group={group}
groups={groups}
associations={associations}
amOwner={amOwner}
resourcePath={resourcePath}
popout={popout}
api={api}
{...props}
/>
</Skeleton>
);
}}
/>
<Route exact path="/~link/(popout)?/:resource/settings" <Route exact path="/~link/(popout)?/:resource/settings"
render={ (props) => { render={ (props) => {
const popout = props.match.url.includes('/popout/'); const popout = props.match.url.includes('/popout/');
@ -283,11 +239,8 @@ export class LinksApp extends Component {
const page = props.match.params.page || 0; const page = props.match.params.page || 0;
const url = base64urlDecode(props.match.params.encodedUrl); const url = base64urlDecode(props.match.params.encodedUrl);
const data = links[resourcePath] const data = links?.[resourcePath]?.[page]?.[index] || {};
? links[resourcePath][page]
? links[resourcePath][page][index]
: {}
: {};
const coms = !comments[resourcePath] const coms = !comments[resourcePath]
? undefined ? undefined
: comments[resourcePath][url]; : comments[resourcePath][url];

View File

@ -1,78 +0,0 @@
import React, { Component } from 'react';
import { InviteSearch } from '../../../../components/InviteSearch';
import { Spinner } from '../../../../components/Spinner';
export class InviteElement extends Component {
constructor(props) {
super(props);
this.state = {
members: [],
error: false,
success: false,
awaiting: false
};
this.setInvite = this.setInvite.bind(this);
}
modifyMembers() {
const { props, state } = this;
const aud = state.members.map(mem => `~${mem}`);
if (state.members.length === 0) {
this.setState({
error: true,
success: false
});
return;
}
this.setState({ awaiting: true });
this.setState({
error: false,
success: true,
members: []
}, () => {
props.api.links.inviteToCollection(props.resourcePath, aud).then(() => {
this.setState({ awaiting: false });
});
});
}
setInvite(invite) {
this.setState({ members: invite.ships });
}
render() {
const { props, state } = this;
let modifyButtonClasses = 'mt4 db f9 ba pa2 white-d bg-gray0-d b--black b--gray2-d pointer';
if (state.error) {
modifyButtonClasses = modifyButtonClasses + ' gray3';
}
return (
<div>
<InviteSearch
groups={{}}
contacts={props.contacts}
groupResults={false}
shipResults={true}
invites={{
groups: [],
ships: this.state.members
}}
setInvite={this.setInvite}
/>
<button
onClick={this.modifyMembers.bind(this)}
className={modifyButtonClasses}
>
Invite
</button>
<Spinner awaiting={this.state.awaiting} text="Inviting to collection..." classes="mt3" />
</div>
);
}
}

View File

@ -6,17 +6,11 @@ export class LinksTabBar extends Component {
render() { render() {
const props = this.props; const props = this.props;
let memColor = '', let setColor = '';
setColor = '';
if (props.location.pathname.includes('/settings')) { if (props.location.pathname.includes('/settings')) {
memColor = 'gray3';
setColor = 'black white-d'; setColor = 'black white-d';
} else if (props.location.pathname.includes('/members')) {
memColor = 'black white-d';
setColor = 'gray3';
} else { } else {
memColor = 'gray3';
setColor = 'gray3'; setColor = 'gray3';
} }
@ -26,18 +20,6 @@ export class LinksTabBar extends Component {
return ( return (
<div className="dib flex-shrink-0 flex-grow-1"> <div className="dib flex-shrink-0 flex-grow-1">
{props.amOwner ? (
<div className={'dib pt2 f9 pl6 lh-solid'}>
<Link
className={'no-underline ' + memColor}
to={makeRoutePath(props.resourcePath, props.popout) + '/members'}
>
Members
</Link>
</div>
) : (
<div className="dib" style={{ width: 0 }}></div>
)}
<div className={'dib pt2 f9 pl6 pr6 lh-solid'}> <div className={'dib pt2 f9 pl6 pr6 lh-solid'}>
<Link <Link
className={'no-underline ' + setColor} className={'no-underline ' + setColor}

View File

@ -1,70 +0,0 @@
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import { LoadingScreen } from './loading';
import { LinksTabBar } from './lib/links-tabbar';
import { MemberElement } from './lib/member-element';
import { SidebarSwitcher } from '../../../components/SidebarSwitch';
import { makeRoutePath } from '../../../../logic/lib/util';
import { GroupView } from '../../../components/Group';
export class MemberScreen extends Component {
render() {
const { props } = this;
if (!props.groupPath) {
return <LoadingScreen />;
}
return (
<div className='h-100 w-100 overflow-x-hidden flex flex-column white-d'>
<div
className='w-100 dn-m dn-l dn-xl inter pt4 pb6 pl3 f8'
style={{ height: '1rem' }}
>
<Link to='/~link'>{'⟵ All Collections'}</Link>
</div>
<div
className={`pl4 pt2 bb b--gray4 b--gray1-d bg-gray0-d flex relative
overflow-x-scroll overflow-x-auto-l overflow-x-auto-xl flex-shrink-0`}
style={{ height: 48 }}
>
<SidebarSwitcher
sidebarShown={this.props.sidebarShown}
popout={this.props.popout}
api={this.props.api}
/>
<Link
to={makeRoutePath(props.resourcePath, props.popout)}
className='pt2 white-d'
>
<h2
className='dib f9 fw4 lh-solid v-top'
style={{ width: 'max-content' }}
>
{props.resource.metadata.title}
</h2>
</Link>
<LinksTabBar
{...props}
groupPath={props.groupPath}
resourcePath={props.resourcePath}
amOwner={props.amOwner}
popout={props.popout}
/>
</div>
<div className='w-100 pl3 mt0 mt4-m mt4-l mt4-xl cf pr6'>
<GroupView
group={props.group}
permissions
resourcePath={props.groupPath}
contacts={props.contacts}
groups={props.groups}
associations={props.associations}
/>
</div>
</div>
);
}
}