export default class ContentController{ /* (1) Construct default attributes * ---------------------------------------------------------*/ constructor(){} /* (2) Channel bindings * ---------------------------------------------------------*/ get cid(){ return gs.get.channel.current; } get cbuf(){ return gs.get.channel._buffer; } /* (3) Room ID binding * ---------------------------------------------------------*/ get rid(){ return gs.get.room.text.current; } get rbuf(){ return gs.get.room._buffer.text; } get messages(){ return this.rbuf.messages; } get members(){ return this.rbuf.members; } // current user data get uid(){ return gs.get.auth.user.uid; } get ubuf(){ return gs.get.auth.user; } /* (5) User getter * * @user_id User id * * @return user User data * ---------------------------------------------------------*/ user(user_id=null){ /* (1) Error: if invalid user_id */ if( isNaN(user_id) ) return {}; /* (2) Error: unknown user */ if( this.cbuf.users == null || this.cbuf.users.length < 1 ) return {}; /* (3) return user data */ for( let u of this.cbuf.users ) if( u.uid === user_id ) return u; /* (4) Error */ return {}; } /* (6) Change username * * @username New username ---------------------------------------------------------*/ change_username(username=null){ /* (1) Error: if invalid user_id */ if( typeof username !== 'string' ) return false; /* (2) Error: unknown user */ if( this.uid == null ) return false; /* (3) Call api UPDATE */ api.call(`PUT /user/${this.uid}`, { username: username }, function(rs){ gs.get.popup.hide(); // manage error if( rs.error !== 0 ) return; // update global username let tmp_user = auth.user; tmp_user.username = username; auth.user = tmp_user; // update username in channel for( let u in this.cbuf.users ) if( this.cbuf.users[u].uid == this.uid ) this.cbuf.users[u].username = username; }.bind(this), auth.token); /* (4) Error */ return true; } /* (7) Change password * * @password New password * ---------------------------------------------------------*/ change_password(password=null){ /* (1) Error: if invalid user_id */ if( typeof password !== 'string' ) return false; /* (2) Error: unknown user */ if( this.uid == null ) return false; /* (3) Call api UPDATE */ api.call(`PUT /user/${this.uid}`, { password: password }, () => gs.get.popup.hide(), auth.token); /* (4) Error */ return true; } /* (8) Send message * ---------------------------------------------------------*/ send_message(_msg=null){ /* (1) Manage invalid _msg */ if( typeof _msg !== 'string' || _msg.length <= 0 ) return true; /* (2) Send message */ window.csock.send({ buffer: { rid: this.rid, mid: null, message: _msg }}); return true; } /* (9) MAIN UPDATER * ---------------------------------------------------------*/ manage_update(_dat){ for( let r in _dat.room ){ if( _dat.room[r] === null ) continue; // create new room for( let r2 in gs.get.room.text.list ){ if( gs.get.room.text.list[r2].id === r ) return console.log('CREATE ROOM'); for( let m of _dat.room[r].messages ) gs.get.room.text.list[r2].messages.push({ uid: m.uid, mid: m.mid, msg: m.content, ts: m.ts }) } } } }