From 27456d0e200eb6a314c3fdb91199ed2f97f0514a Mon Sep 17 00:00:00 2001 From: wmwragg Date: Thu, 15 Sep 2016 11:46:06 +0100 Subject: [PATCH] Removed no longer used MultiInviteDialog, as it's now been replaced with the ChatInviteDialog --- src/component-index.js | 1 - .../views/dialogs/MultiInviteDialog.js | 218 ------------------ 2 files changed, 219 deletions(-) delete mode 100644 src/components/views/dialogs/MultiInviteDialog.js diff --git a/src/component-index.js b/src/component-index.js index f71610a615..08477c676e 100644 --- a/src/component-index.js +++ b/src/component-index.js @@ -52,7 +52,6 @@ module.exports.components['views.dialogs.DeactivateAccountDialog'] = require('./ module.exports.components['views.dialogs.EncryptedEventDialog'] = require('./components/views/dialogs/EncryptedEventDialog'); module.exports.components['views.dialogs.ErrorDialog'] = require('./components/views/dialogs/ErrorDialog'); module.exports.components['views.dialogs.LogoutPrompt'] = require('./components/views/dialogs/LogoutPrompt'); -module.exports.components['views.dialogs.MultiInviteDialog'] = require('./components/views/dialogs/MultiInviteDialog'); module.exports.components['views.dialogs.NeedToRegisterDialog'] = require('./components/views/dialogs/NeedToRegisterDialog'); module.exports.components['views.dialogs.QuestionDialog'] = require('./components/views/dialogs/QuestionDialog'); module.exports.components['views.dialogs.SetDisplayNameDialog'] = require('./components/views/dialogs/SetDisplayNameDialog'); diff --git a/src/components/views/dialogs/MultiInviteDialog.js b/src/components/views/dialogs/MultiInviteDialog.js deleted file mode 100644 index a8d7aec495..0000000000 --- a/src/components/views/dialogs/MultiInviteDialog.js +++ /dev/null @@ -1,218 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; - -import {getAddressType, inviteToRoom} from '../../../Invite'; -import sdk from '../../../index'; - -export default class MultiInviteDialog extends React.Component { - constructor(props, context) { - super(props, context); - - this._onCancel = this._onCancel.bind(this); - this._startInviting = this._startInviting.bind(this); - this._canceled = false; - - this.state = { - busy: false, - completionStates: {}, // State of each address (invited or error) - errorTexts: {}, // Textual error per address - done: false, - }; - for (let i = 0; i < this.props.inputs.length; ++i) { - const input = this.props.inputs[i]; - if (getAddressType(input) === null) { - this.state.completionStates[i] = 'error'; - this.state.errorTexts[i] = 'Unrecognised address'; - } - } - } - - componentWillUnmount() { - this._canceled = true; - } - - _onCancel() { - this._canceled = true; - this.props.onFinished(false); - } - - _startInviting() { - this.setState({ - busy: true, - done: false, - }); - this._inviteMore(0); - } - - _inviteMore(nextIndex) { - if (this._canceled) { - return; - } - - if (nextIndex == this.props.inputs.length) { - this.setState({ - busy: false, - done: true, - }); - return; - } - - const input = this.props.inputs[nextIndex]; - - // don't try to invite it if it's an invalid address - // (it will already be marked as an error though, - // so no need to do so again) - if (getAddressType(input) === null) { - this._inviteMore(nextIndex + 1); - return; - } - - // don't re-invite (there's no way in the UI to do this, but - // for sanity's sake) - if (this.state.completionStates[nextIndex] == 'invited') { - this._inviteMore(nextIndex + 1); - return; - } - - inviteToRoom(this.props.roomId, input).then(() => { - if (this._canceled) { return; } - - this.setState((s) => { - s.completionStates[nextIndex] = 'invited' - return s; - }); - this._inviteMore(nextIndex + 1); - }, (err) => { - if (this._canceled) { return; } - - let errorText; - let fatal = false; - if (err.errcode == 'M_FORBIDDEN') { - fatal = true; - errorText = 'You do not have permission to invite people to this room.'; - } else if (err.errcode == 'M_LIMIT_EXCEEDED') { - // we're being throttled so wait a bit & try again - setTimeout(() => { - this._inviteMore(nextIndex); - }, 5000); - return; - } else { - errorText = 'Unknown server error'; - } - this.setState((s) => { - s.completionStates[nextIndex] = 'error'; - s.errorTexts[nextIndex] = errorText; - s.busy = !fatal; - s.done = fatal; - return s; - }); - if (!fatal) { - this._inviteMore(nextIndex + 1); - } - }); - } - - _getProgressIndicator() { - let numErrors = 0; - for (const k of Object.keys(this.state.completionStates)) { - if (this.state.completionStates[k] == 'error') { - ++numErrors; - } - } - let errorText; - if (numErrors > 0) { - const plural = numErrors > 1 ? 's' : ''; - errorText = ({numErrors} error{plural}) - } - return - {Object.keys(this.state.completionStates).length} / {this.props.inputs.length} {errorText} - ; - } - - render() { - const Spinner = sdk.getComponent("elements.Spinner"); - const inviteTiles = []; - - for (let i = 0; i < this.props.inputs.length; ++i) { - const input = this.props.inputs[i]; - let statusClass = ''; - let statusElement; - if (this.state.completionStates[i] == 'error') { - statusClass = 'error'; - statusElement =

{this.state.errorTexts[i]}

; - } else if (this.state.completionStates[i] == 'invited') { - statusClass = 'invited'; - } - inviteTiles.push( -
  • -

    {input}

    - {statusElement} -
  • - ); - } - - let controls = []; - if (this.state.busy) { - controls.push(); - controls.push(); - controls.push({this._getProgressIndicator()}); - } else if (this.state.done) { - controls.push( - - ); - controls.push({this._getProgressIndicator()}); - } else { - controls.push( - ); - controls.push(); - } - - return ( -
    -
    - Inviting {this.props.inputs.length} People -
    -
    -
      - {inviteTiles} -
    -
    -
    - {controls} -
    -
    - ); - } -} - -MultiInviteDialog.propTypes = { - onFinished: React.PropTypes.func.isRequired, - inputs: React.PropTypes.array.isRequired, - roomId: React.PropTypes.string.isRequired, -};