proxy-based Twister client written with react-js
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

103 lines
2.6 KiB

var AppSettingsMixin = require('../common/AppSettingsMixin.js');
var EventListenerMixin = require('../common/EventListenerMixin.js');
module.exports = ProfileMixin = {
mixins: [
AppSettingsMixin,
EventListenerMixin('profileupdatebyuser'),
EventListenerMixin('avatarupdatebyuser'),
],
onprofileupdatebyuser: function(event){
//console.log("catched event",this.state.username,event.detail)
var profile =event.detail;
if(profile.getUsername()==this.state.username){
this.setState(function(state){
state.fullname = profile.getField("fullname");
state.bio = profile.getField("bio");
state.location = profile.getField("location");
state.url = profile.getField("url");
return state;
})
}
},
onavatarupdatebyuser: function(event){
//console.log("catched event",this.state.username,event.detail)
var avatar =event.detail;
if(avatar.getUsername()==this.state.username){
this.setState(function(state){
state.avatar = avatar.getUrl();
return state;
})
}
},
getInitialState: function() {
var username = this.props.username;
if (!username) {
username = (this.props.params.username ? this.props.params.username : this.props.activeAccount);
}
var state = {
username: username,
avatar: "img/genericPerson.png",
fullname: "",
bio: "",
location: "",
url: ""
};
var profile = Twister.getUser(username).getProfile();
if (profile.inCache()) {
state.fullname = profile.getField("fullname");
state.bio = profile.getField("bio");
state.location = profile.getField("location");
state.url = profile.getField("url");
}
var avatar = Twister.getUser(username).getAvatar();
if (avatar.inCache()) {
state.avatar = avatar.getUrl();
}
return state;
},
updateProfile: function () {
var thisComponent = this;
Twister.getUser(this.state.username).doAvatar(function(avatar){
if (avatar.getUrl()) {
thisComponent.setStateSafe({avatar: avatar.getUrl()});
}
});
Twister.getUser(this.state.username).doProfile(function(profile){
thisComponent.setStateSafe({
fullname: profile.getField("fullname"),
bio: profile.getField("bio"),
location: profile.getField("location"),
url: profile.getField("url"),
});
});
},
componentDidMount: function () {
this.updateProfile();
this.setInterval(this.updateProfile,this.state.appSettings.pollIntervalProfile*1000);
}
};