497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
|
/** Given a .message-row element, this function returns whethe the
current user may, at least hypothetically, delete the message
globally. A user may always delete a local copy of a
post. The server may trump this, e.g. if the login has been
cancelled after this page was loaded.
*/
cs.userMayDelete = function(eMsg){
return eMsg.msgid>0
&& (this.me === eMsg.dataset.xfrom
|| F.user.isAdmin/*will be confirmed server-side*/);
};
/** Returns a new Error() object encapsulating state from the given
fetch() response promise. */
cs._newResponseError = function(response){
|
|
|
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
|
/** Given a .message-row element, this function returns whethe the
current user may, at least hypothetically, delete the message
globally. A user may always delete a local copy of a
post. The server may trump this, e.g. if the login has been
cancelled after this page was loaded.
*/
cs.userMayDelete = function(eMsg){
return +eMsg.dataset.msgid>0
&& (this.me === eMsg.dataset.xfrom
|| F.user.isAdmin/*will be confirmed server-side*/);
};
/** Returns a new Error() object encapsulating state from the given
fetch() response promise. */
cs._newResponseError = function(response){
|
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
|
id = e.dataset.msgid;
}else{
e = this.getMessageElemById(id);
}
if(!(e instanceof HTMLElement)) return;
if(this.userMayDelete(e)){
this.ajaxStart();
fetch("chat-delete?name=" + id)
.then(this._fetchJsonOrError)
.then(()=>this.deleteMessageElem(e))
.catch(err=>this.reportErrorAsMessage(err))
.finally(()=>this.ajaxEnd());
}else{
this.deleteMessageElem(id);
}
};
|
|
|
>
>
>
|
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
|
id = e.dataset.msgid;
}else{
e = this.getMessageElemById(id);
}
if(!(e instanceof HTMLElement)) return;
if(this.userMayDelete(e)){
this.ajaxStart();
fetch("chat-delete/" + id)
.then(function(response){
if(!response.ok) throw cs._newResponseError(response);
return response;
})
.then(()=>this.deleteMessageElem(e))
.catch(err=>this.reportErrorAsMessage(err))
.finally(()=>this.ajaxEnd());
}else{
this.deleteMessageElem(id);
}
};
|