diff options
author | Dessalines <tyhou13@gmx.com> | 2019-03-22 18:42:57 -0700 |
---|---|---|
committer | Dessalines <tyhou13@gmx.com> | 2019-03-22 18:42:57 -0700 |
commit | e570c70701e1c66dad12bef76821f6d94c717a02 (patch) | |
tree | 070d5ba322226acd5fe0d0a7757cb936462ab2ff /ui/src/components/create-community.tsx | |
parent | 816aa0b15f3766e340d8722f03e8b3a7633ab6fb (diff) |
Adding login and Register
- Login and Register mostly working.
- Starting to work on creating communities.
Diffstat (limited to 'ui/src/components/create-community.tsx')
-rw-r--r-- | ui/src/components/create-community.tsx | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/ui/src/components/create-community.tsx b/ui/src/components/create-community.tsx new file mode 100644 index 00000000..dbacd18d --- /dev/null +++ b/ui/src/components/create-community.tsx @@ -0,0 +1,90 @@ +import { Component, linkEvent } from 'inferno'; +import { Subscription } from "rxjs"; +import { retryWhen, delay, take } from 'rxjs/operators'; +import { CommunityForm, UserOperation } from '../interfaces'; +import { WebSocketService, UserService } from '../services'; +import { msgOp } from '../utils'; + +interface State { + communityForm: CommunityForm; +} + +let emptyState: State = { + communityForm: { + name: null, + } +} + +export class CreateCommunity extends Component<any, State> { + private subscription: Subscription; + + constructor(props, context) { + super(props, context); + + this.state = emptyState; + + this.subscription = WebSocketService.Instance.subject + .pipe(retryWhen(errors => errors.pipe(delay(3000), take(10)))) + .subscribe( + (msg) => this.parseMessage(msg), + (err) => console.error(err), + ); + } + + componentWillUnmount() { + this.subscription.unsubscribe(); + } + + render() { + return ( + <div class="container"> + <div class="row"> + <div class="col-12 col-lg-6 mb-4"> + {this.communityForm()} + </div> + </div> + </div> + ) + } + + communityForm() { + return ( + <div> + <form onSubmit={linkEvent(this, this.handleCreateCommunitySubmit)}> + <h3>Create Forum</h3> + <div class="form-group row"> + <label class="col-sm-2 col-form-label">Name</label> + <div class="col-sm-10"> + <input type="text" class="form-control" value={this.state.communityForm.name} onInput={linkEvent(this, this.handleCommunityNameChange)} required minLength={3} /> + </div> + </div> + <div class="form-group row"> + <div class="col-sm-10"> + <button type="submit" class="btn btn-secondary">Create</button> + </div> + </div> + </form> + </div> + ); + } + + handleCreateCommunitySubmit(i: CreateCommunity, event) { + event.preventDefault(); + WebSocketService.Instance.createCommunity(i.state.communityForm); + } + + handleCommunityNameChange(i: CreateCommunity, event) { + i.state.communityForm.name = event.target.value; + i.setState(i.state); + } + + parseMessage(msg: any) { + let op: UserOperation = msgOp(msg); + if (msg.error) { + alert(msg.error); + return; + } else { + } + } + +} |