FormError

This commit is contained in:
MathMan05
2024-08-26 12:12:52 -05:00
parent 39f008758b
commit a90e584790
4 changed files with 38 additions and 14 deletions

View File

@@ -9,7 +9,7 @@ import { SnowFlake } from "./snowflake.js";
import { Message } from "./message.js";
import { channeljson, memberjson, presencejson, readyjson } from "./jsontypes.js";
import { Member } from "./member.js";
import { Settings } from "./settings.js";
import { FormError, Settings } from "./settings.js";
import { MarkDown } from "./markdown.js";
const wsCodesRetry=new Set([4000,4003,4005,4007,4008,4009]);
@@ -1052,7 +1052,7 @@ class Localuser{
if(in1===in2){
return in1;
}else{
throw [copy,"Passwords don't match"]
throw new FormError(copy,"Passwords don't match");
}
})
});

View File

@@ -649,6 +649,16 @@ class Options implements OptionsElement<void>{
}
}
}
class FormError extends Error{
elem:OptionsElement<any>;
message:string;
constructor(elem:OptionsElement<any>,message:string){
super(message);
this.message=message;
this.elem=elem;
}
}
export {FormError};
class Form implements OptionsElement<object>{
name:string;
readonly options:Options;
@@ -766,11 +776,13 @@ class Form implements OptionsElement<object>{
try{
build[key]=thing();
}catch(e:any){
const elm=this.options.html.get(e[0]);
if(elm){
const html=elm.deref();
if(html){
this.makeError(html,e[1]);
if(e instanceof FormError){
const elm=this.options.html.get(e.elem);
if(elm){
const html=elm.deref();
if(html){
this.makeError(html,e.message);
}
}
}
return;