Have a post-registration screen. Fix race in ChangeAvatar where if you hadn't got an initial avatar downloaded yet you couldn't update it after the component loaded.

This commit is contained in:
Kegan Dougal 2015-11-20 11:57:04 +00:00
parent ad60e23459
commit d46e42f8e7
3 changed files with 30 additions and 9 deletions

View file

@ -36,6 +36,16 @@ module.exports = {
}
},
componentWillReceiveProps: function(newProps) {
if (this.avatarSet) {
// don't clobber what the user has just set
return;
}
this.setState({
avatarUrl: newProps.initialAvatarUrl
});
},
setAvatarFromFile: function(file) {
var newUrl = null;

View file

@ -15,10 +15,14 @@ limitations under the License.
*/
'use strict';
var React = require('react');
var MatrixClientPeg = require("../../MatrixClientPeg");
module.exports = {
propTypes: {
onFinished: React.PropTypes.func
},
getDefaultProps: function() {
return {
onFinished: function() {},

View file

@ -31,7 +31,7 @@ module.exports = {
RoomView: "room_view",
UserSettings: "user_settings",
CreateRoom: "create_room",
RoomDirectory: "room_directory",
RoomDirectory: "room_directory"
},
AuxPanel: {
@ -144,6 +144,11 @@ module.exports = {
});
this.notifyNewScreen('login');
break;
case 'start_post_registration':
this.setState({ // don't clobber logged_in status
screen: 'post_registration'
});
break;
case 'token_login':
if (this.state.logged_in) return;
@ -298,13 +303,11 @@ module.exports = {
},
onLoggedIn: function(credentials) {
if (credentials) { // registration doesn't do this yet
console.log("onLoggedIn => %s", credentials.userId);
MatrixClientPeg.replaceUsingAccessToken(
credentials.homeserverUrl, credentials.identityServerUrl,
credentials.userId, credentials.accessToken
);
}
console.log("onLoggedIn => %s", credentials.userId);
MatrixClientPeg.replaceUsingAccessToken(
credentials.homeserverUrl, credentials.identityServerUrl,
credentials.userId, credentials.accessToken
);
this.setState({
screen: undefined,
logged_in: true
@ -431,6 +434,10 @@ module.exports = {
dis.dispatch({
action: 'view_room_directory',
});
} else if (screen == 'post_registration') {
dis.dispatch({
action: 'start_post_registration',
});
} else if (screen.indexOf('room/') == 0) {
var roomString = screen.split('/')[1];
if (roomString[0] == '#') {