bindWsEvents method
void
bindWsEvents()
Implementation
void bindWsEvents() {
_sub?.cancel();
_sub = _net.ws.eventStream.listen((frame) async {
if (frame.event != WsEvents.userUpdated) return;
final payload = frame.payloadMap ?? {};
final userId = asInt(payload['user_id']);
// 仅处理本人资料;好友资料变更可由业务自行监听同一事件扩展
if (_self == null || userId != _self!.id) return;
_self = _self!.copyWith(
nickname: asString(payload['nickname'], _self!.nickname),
avatar: asString(payload['avatar'], _self!.avatar),
gender: asInt(payload['gender'], _self!.gender),
motto: asString(payload['motto'], _self!.motto),
birthday: asString(payload['birthday'], _self!.birthday),
);
await _store.setKv(
LocalStorage.keyUserInfo,
encodeJsonString(_self!.toJson()),
);
_listener?.selfInfoUpdated(_self!);
});
}