mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-16 05:04:57 +08:00
port create room
This commit is contained in:
parent
29d2ed7191
commit
e2c9afb278
@ -18,6 +18,9 @@ limitations under the License.
|
|||||||
|
|
||||||
var React = require("react");
|
var React = require("react");
|
||||||
var MatrixClientPeg = require("../../MatrixClientPeg");
|
var MatrixClientPeg = require("../../MatrixClientPeg");
|
||||||
|
var PresetValues = require('../atoms/create_room/Presets').Presets;
|
||||||
|
var q = require('q');
|
||||||
|
var encryption = require("../../encryption");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
propTypes: {
|
propTypes: {
|
||||||
@ -41,25 +44,52 @@ module.exports = {
|
|||||||
return {
|
return {
|
||||||
phase: this.phases.CONFIG,
|
phase: this.phases.CONFIG,
|
||||||
error_string: "",
|
error_string: "",
|
||||||
|
is_private: true,
|
||||||
|
share_history: false,
|
||||||
|
default_preset: PresetValues.PrivateChat,
|
||||||
|
topic: '',
|
||||||
|
room_name: '',
|
||||||
|
invited_users: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
onCreateRoom: function() {
|
onCreateRoom: function() {
|
||||||
var options = {};
|
var options = {};
|
||||||
|
|
||||||
var room_name = this.getName();
|
if (this.state.room_name) {
|
||||||
if (room_name) {
|
options.name = this.state.room_name;
|
||||||
options.name = room_name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var preset = this.getPreset();
|
if (this.state.topic) {
|
||||||
if (preset) {
|
options.topic = this.state.topic;
|
||||||
options.preset = preset;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var invited_users = this.getInvitedUsers();
|
if (this.state.preset) {
|
||||||
if (invited_users) {
|
if (this.state.preset != PresetValues.Custom) {
|
||||||
options.invite = invited_users;
|
options.preset = this.state.preset;
|
||||||
|
} else {
|
||||||
|
options.initial_state = [
|
||||||
|
{
|
||||||
|
type: "m.room.join_rules",
|
||||||
|
content: {
|
||||||
|
"join_rules": this.state.is_private ? "invite" : "public"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "m.room.history_visibility",
|
||||||
|
content: {
|
||||||
|
"history_visibility": this.state.share_history ? "shared" : "invited"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
options.invite = this.state.invited_users;
|
||||||
|
|
||||||
|
var alias = this.getAliasLocalpart();
|
||||||
|
if (alias) {
|
||||||
|
options.room_alias_name = alias;
|
||||||
}
|
}
|
||||||
|
|
||||||
var cli = MatrixClientPeg.get();
|
var cli = MatrixClientPeg.get();
|
||||||
@ -69,7 +99,20 @@ module.exports = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var deferred = MatrixClientPeg.get().createRoom(options);
|
var deferred = cli.createRoom(options);
|
||||||
|
|
||||||
|
var response;
|
||||||
|
|
||||||
|
if (this.state.encrypt) {
|
||||||
|
deferred = deferred.then(function(res) {
|
||||||
|
response = res;
|
||||||
|
return encryption.enableEncryption(
|
||||||
|
cli, response.roomId, options.invite
|
||||||
|
);
|
||||||
|
}).then(function() {
|
||||||
|
return q(response) }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
phase: this.phases.CREATING,
|
phase: this.phases.CREATING,
|
||||||
@ -77,11 +120,11 @@ module.exports = {
|
|||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
deferred.then(function () {
|
deferred.then(function (resp) {
|
||||||
self.setState({
|
self.setState({
|
||||||
phase: self.phases.CREATED,
|
phase: self.phases.CREATED,
|
||||||
});
|
});
|
||||||
self.props.onRoomCreated();
|
self.props.onRoomCreated(resp.room_id);
|
||||||
}, function(err) {
|
}, function(err) {
|
||||||
self.setState({
|
self.setState({
|
||||||
phase: self.phases.ERROR,
|
phase: self.phases.ERROR,
|
||||||
|
Loading…
Reference in New Issue
Block a user