export default class ContentController{ /* (1) Construct default attributes * ---------------------------------------------------------*/ constructor(){} /* (2) Channel bindings * ---------------------------------------------------------*/ get cid(){ return gs.get.channel.current; } get cbuf(){ /* (1) Ignore: if no channel */ if( gs.get.channel.list == null || gs.get.channel.list.length === 0 ) return {}; /* (2) Search for current channel */ for( let c of gs.get.channel.list ){ // Return if channel found // if( c.id === this.cid ) return c; } /* (3) If nothing found */ return {}; } /* (3) Room ID binding * ---------------------------------------------------------*/ get rid(){ return gs.get.room.text.current; } get rbuf(){ /* (1) Ignore: if no rooms empty */ if( gs.get.room.text.list == null || gs.get.room.text.list.length === 0 ) return {}; /* (2) Search for current room */ for( let r of gs.get.room.text.list ){ // Return if room found // if( r.id === this.rid ) return r; } /* (3) If nothing found */ return {}; } get messages(){ return this.rbuf.messages; } get members(){ return this.rbuf.members; } /* (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) Textarea auto_grow * * @e Textarea event * ---------------------------------------------------------*/ auto_grow(e){ setTimeout(() => { e.target.style.height = '0'; e.target.style.height = `calc( ${e.target.scrollHeight}px )`; }, 1); } }