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.7 KiB
103 lines
2.7 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.context.router.getCurrentParams().username ? this.context.router.getCurrentParams().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); |
|
|
|
} |
|
}; |