discord-client/webpack/lib/content-controller.js

137 lines
2.9 KiB
JavaScript
Raw Normal View History

export default class ContentController{
2018-03-22 13:57:03 +00:00
/* (1) Construct default attributes
*
---------------------------------------------------------*/
constructor(){}
2018-03-22 13:57:03 +00:00
/* (2) Channel bindings
*
---------------------------------------------------------*/
get cid(){ return gs.get.channel.current; }
2018-03-22 13:57:03 +00:00
get cbuf(){ return gs.get.channel._buffer; }
2018-03-28 13:54:19 +00:00
2018-03-22 13:57:03 +00:00
/* (3) Room ID binding
2018-03-22 13:57:03 +00:00
*
---------------------------------------------------------*/
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<int> User id
*
* @return user<array> 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<Event> Textarea event
*
---------------------------------------------------------*/
auto_grow(e){
setTimeout(() => {
e.target.style.height = '0';
e.target.style.height = `calc( ${e.target.scrollHeight}px )`;
}, 1);
}
/* (7) Change username
*
* @username<String> New username
---------------------------------------------------------*/
change_username(username=null){
/* (1) Error: if invalid user_id */
if( typeof username !== 'string' || !/^[a-z0-9_-]{3,20}$/i.test(username) )
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){
// 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<String> New password
*
---------------------------------------------------------*/
change_password(password=null){
/* (1) Error: if invalid user_id */
if( typeof password !== 'string' || !/^[^<>\/\\]{8,50}$/.test(password) )
return false;
/* (2) Error: unknown user */
if( this.uid == null )
return false;
/* (3) Call api UPDATE */
api.call(`PUT /user/${this.uid}`, { password: password }, () => {}, auth.token);
/* (4) Error */
return true;
}
2018-03-22 13:57:03 +00:00
}