Closed groups overlay integration

pull/790/head
Vincent 5 years ago
parent 91c6a153ae
commit 250a3ad6c1

@ -2731,6 +2731,9 @@
"createClosedGroupPlaceholder": { "createClosedGroupPlaceholder": {
"message": "Enter a group name" "message": "Enter a group name"
}, },
"closedGroupCreatedToastTitle": {
"message": "Group created successfully"
},
"enterChannelURL": { "enterChannelURL": {
"message": "Enter Open Group URL" "message": "Enter Open Group URL"
}, },

@ -63,6 +63,7 @@ window.CONSTANTS = {
MAX_LOGIN_TRIES: 3, MAX_LOGIN_TRIES: 3,
MAX_PASSWORD_LENGTH: 32, MAX_PASSWORD_LENGTH: 32,
MAX_USERNAME_LENGTH: 20, MAX_USERNAME_LENGTH: 20,
MAX_GROUPNAME_LENGTH: 64,
DEFAULT_PUBLIC_CHAT_URL: appConfig.get('defaultPublicChatServer'), DEFAULT_PUBLIC_CHAT_URL: appConfig.get('defaultPublicChatServer'),
MAX_CONNECTION_DURATION: 5000, MAX_CONNECTION_DURATION: 5000,
}; };

@ -1695,6 +1695,18 @@ input {
} }
} }
.create-group-name-input {
.session-id-editable {
height: 60px !important;
textarea {
padding-bottom: 0px !important;
}
}
}
.session-member-item { .session-member-item {
font-family: "SF Pro Text"; font-family: "SF Pro Text";
padding: 0px $session-margin-sm; padding: 0px $session-margin-sm;

@ -395,7 +395,7 @@ export class ConversationHeader extends React.Component<Props> {
{this.renderOptions(triggerId)} {this.renderOptions(triggerId)}
{this.renderTitle()} {this.renderTitle()}
{/* This might be redundant as we show the title in the title: */} {/* This might be redundant as we show the title in the title: */}
{isPrivateGroup ? this.renderMemberCount() : null} {/*isPrivateGroup ? this.renderMemberCount() : null*/}
</div> </div>
</div> </div>
{this.renderExpirationLength()} {this.renderExpirationLength()}

@ -154,16 +154,12 @@ export class CreateGroupDialog extends React.Component<Props, State> {
private onGroupNameChanged(event: any) { private onGroupNameChanged(event: any) {
event.persist(); event.persist();
console.log(event); this.setState(state => {
return {
// this.setState(state => { ...state,
// return { groupName: event.target.value,
// ...state, };
// groupName: event.target.value, });
// };
// }, () => console.log(this.state.groupName));
} }
private onKeyUp(event: any) { private onKeyUp(event: any) {

@ -385,9 +385,26 @@ export class LeftPaneChannelSection extends React.Component<Props, State> {
return true; return true;
} }
private onCreateClosedGroup(groupName: string, groupMembers: Array<ContactType>) { private async onCreateClosedGroup(groupName: string, groupMembers: Array<ContactType>) {
console.log(`Creating group with name: ${groupName}`); // Validate groupName and groupMembers length
if (
groupMembers.length === 0 ||
groupName.length === 0 ||
groupName.length > window.CONSTANTS.MAX_GROUP_NAME_LENGTH
){
return;
}
await window.doCreateGroup(groupName, groupMembers);
this.handleToggleOverlay(undefined);
window.pushToast({
title: window.i18n('closedGroupCreatedToastTitle'),
type: 'success',
});
return true; return true;
} }
} }

@ -164,13 +164,16 @@ export class SessionClosableOverlay extends React.Component<Props, State> {
</div> </div>
{ (isOpenGroupView || isClosedGroupView) ? { (isOpenGroupView || isClosedGroupView) ?
( (
<SessionIdEditable <div className="create-group-name-input">
ref={this.inputRef} <SessionIdEditable
editable={true} ref={this.inputRef}
placeholder={placeholder} editable={true}
value={this.state.groupName} placeholder={placeholder}
onChange={this.onGroupNameChanged} value={this.state.groupName}
/> maxLength={window.CONSTANTS.MAX_GROUPNAME_LENGTH}
onChange={this.onGroupNameChanged}
/>
</div>
) : ( ) : (
<SessionIdEditable <SessionIdEditable
ref={this.inputRef} ref={this.inputRef}
@ -269,10 +272,8 @@ export class SessionClosableOverlay extends React.Component<Props, State> {
} }
private onGroupNameChanged(event: any) { private onGroupNameChanged(event: any) {
event.persist;
this.setState({ this.setState({
groupName: event.target.value, groupName: event,
}); });
} }
} }

@ -7,6 +7,7 @@ interface Props {
editable?: boolean; editable?: boolean;
onChange?: any; onChange?: any;
onPressEnter?: any; onPressEnter?: any;
maxLength?: number;
} }
export class SessionIdEditable extends React.PureComponent<Props> { export class SessionIdEditable extends React.PureComponent<Props> {
@ -26,7 +27,7 @@ export class SessionIdEditable extends React.PureComponent<Props> {
} }
public render() { public render() {
const { placeholder, editable, text, value} = this.props; const { placeholder, editable, text, value, maxLength} = this.props;
return ( return (
<div className="session-id-editable"> <div className="session-id-editable">
@ -39,6 +40,7 @@ export class SessionIdEditable extends React.PureComponent<Props> {
onKeyDown={this.handleKeyDown} onKeyDown={this.handleKeyDown}
onChange={this.handleChange} onChange={this.handleChange}
value={value || text} value={value || text}
maxLength={maxLength}
/> />
</div> </div>
); );

Loading…
Cancel
Save