Proper client state init

This commit is contained in:
WolverinDEV 2020-04-27 20:22:14 +02:00
parent c300949923
commit cf0868f35b

View file

@ -254,6 +254,11 @@ interface ClientNameState {
@BatchUpdateAssignment(BatchUpdateType.CHANNEL_TREE) @BatchUpdateAssignment(BatchUpdateType.CHANNEL_TREE)
@ReactEventHandler<ClientName>(e => e.props.client.events) @ReactEventHandler<ClientName>(e => e.props.client.events)
class ClientName extends ReactComponentBase<ClientNameProperties, ClientNameState> { class ClientName extends ReactComponentBase<ClientNameProperties, ClientNameState> {
protected initialize() {
this.updateGroups();
this.updateAwayMessage();
}
protected defaultState(): ClientNameState { protected defaultState(): ClientNameState {
return { return {
group_prefix: "", group_prefix: "",
@ -268,14 +273,7 @@ class ClientName extends ReactComponentBase<ClientNameProperties, ClientNameStat
</div> </div>
} }
@EventHandler<ClientEvents>("notify_properties_updated") private updateGroups() {
private handlePropertiesChanged(event: ClientEvents["notify_properties_updated"]) {
if(typeof event.updated_properties.client_away !== "undefined" || typeof event.updated_properties.client_away_message !== "undefined") {
this.setState({
away_message: event.client_properties.client_away_message && " [" + event.client_properties.client_away_message + "]"
});
}
if(typeof event.updated_properties.client_servergroups !== "undefined" || typeof event.updated_properties.client_channel_group_id !== "undefined") {
let prefix_groups: string[] = []; let prefix_groups: string[] = [];
let suffix_groups: string[] = []; let suffix_groups: string[] = [];
for(const group_id of this.props.client.assignedServerGroupIds()) { for(const group_id of this.props.client.assignedServerGroupIds()) {
@ -299,7 +297,22 @@ class ClientName extends ReactComponentBase<ClientNameProperties, ClientNameStat
this.setState({ this.setState({
group_suffix: suffix_groups.map(e => "[" + e + "]").join(""), group_suffix: suffix_groups.map(e => "[" + e + "]").join(""),
group_prefix: prefix_groups.map(e => "[" + e + "]").join("") group_prefix: prefix_groups.map(e => "[" + e + "]").join("")
}) });
}
private updateAwayMessage() {
this.setState({
away_message: this.props.client.properties.client_away_message && " [" + this.props.client.properties.client_away_message + "]"
});
}
@EventHandler<ClientEvents>("notify_properties_updated")
private handlePropertiesChanged(event: ClientEvents["notify_properties_updated"]) {
if(typeof event.updated_properties.client_away !== "undefined" || typeof event.updated_properties.client_away_message !== "undefined") {
this.updateAwayMessage();
}
if(typeof event.updated_properties.client_servergroups !== "undefined" || typeof event.updated_properties.client_channel_group_id !== "undefined") {
this.updateGroups();
} }
} }
} }