@social-mail/social-mail-client 1.4.39 → 1.4.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/AdminAppIndex.pack.js +2 -2
- package/dist/admin/AdminAppIndex.pack.min.js +1 -1
- package/dist/public/channel/ChannelApp.pack.js +2 -2
- package/dist/public/channel/ChannelApp.pack.min.js +1 -1
- package/dist/public/contact-us/ContactUsApp.pack.js +1 -1
- package/dist/public/contact-us/ContactUsApp.pack.min.js +1 -1
- package/dist/public/preview/pdf/PreviewPDF.pack.js +2 -2
- package/dist/public/preview/pdf/PreviewPDF.pack.min.js +1 -1
- package/dist/public/preview/video/PreviewVideo.pack.js +2 -2
- package/dist/public/preview/video/PreviewVideo.pack.min.js +1 -1
- package/dist/public/preview/zip/DownloadZip.pack.js +2 -2
- package/dist/public/preview/zip/DownloadZip.pack.min.js +1 -1
- package/dist/public/store/StoreApp.pack.js +2 -2
- package/dist/public/store/StoreApp.pack.min.js +1 -1
- package/dist/public/store/cart/ShoppingCart.pack.js +2 -2
- package/dist/public/store/cart/ShoppingCart.pack.min.js +1 -1
- package/dist/site-editor-app/SiteEditorApp.pack.js +2 -2
- package/dist/site-editor-app/SiteEditorApp.pack.min.js +1 -1
- package/dist/web/AppIndex.pack.js +2 -2
- package/dist/web/AppIndex.pack.min.js +1 -1
- package/package.json +2 -2
|
@@ -142,5 +142,5 @@ var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){fun
|
|
|
142
142
|
& img.qr-code {
|
|
143
143
|
width: 256px;
|
|
144
144
|
}
|
|
145
|
-
`.installGlobal("qr-code");generateUrl=item=>{const body=item.keyword?`${item.keyword} ${item.code}`:item.code;if(/android/i.test(navigator.userAgent)){return`SMS:${item.phoneNumber}?body=${encodeURIComponent(body)}`}return`SMS:${item.phoneNumber}?&body=${encodeURIComponent(body)}`};_export("default",QRCodeControl=class QRCodeControl extends AtomControl{constructor(app,e=document.createElement("qr-code")){super(app,e);this.smsConfig=null;this.selectedConfig=null;this.runAfterInit((()=>this.app.runAsync((()=>this.init()))))}init(){return __awaiter(this,void 0,void 0,(function*(){if(!this.smsConfig){return}if(typeof this.smsConfig==="string"){this.smsConfig=JSON.parse(this.smsConfig)}this.selectedConfig=this.smsConfig.config[0];const isMobile=/ios|iphone|android/i.test(navigator.userAgent);if(isMobile){this.renderer=XNode.create("div",null,XNode.create(AppForm,null,XNode.create("h4",null,"Please verify your phone number"),XNode.create("div",null,"Click on following button, that will open your Messages(SMS/Text) screen with your verification code, please click send on your Messages screen."),XNode.create(FormField,{label:"Country"},XNode.create(DropDown,{itemRenderer:x=>XNode.create("label",{text:x.countryCode}),items:this.smsConfig.config,selectedItem:Bind.twoWaysImmediate((()=>this.selectedConfig))})),XNode.create("div",null,XNode.create(EmailIconTextButton,{href:Bind.oneWay((()=>generateUrl(this.selectedConfig))),target:"_blank",text:"Open Messages"}))));return}this.renderer=XNode.create("div",null,XNode.create(AppForm,null,XNode.create("h4",null,"Please verify your phone number"),XNode.create("div",null,"Scan following QR Code with your phone to open the Messages(SMS/Text) with generated code. And hit the send button."),XNode.create(FormField,{label:"Country"},XNode.create(DropDown,{itemRenderer:x=>XNode.create("label",{text:x.countryCode}),items:this.smsConfig.config,selectedItem:Bind.twoWaysImmediate((()=>this.selectedConfig))})),XNode.create("div",null,XNode.create("img",{class:"qr-code",src:Bind.oneWay((()=>`data:image/svg+xml;base64,${btoa(this.selectedConfig.qrCodeUrl)}`))}))))}))}});__decorate([BindableProperty,__metadata("design:type",Object)],QRCodeControl.prototype,"smsConfig",void 0)}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/basic/MaskedInput");System.register(["tslib","@web-atoms/core/dist/core/XNode","./styles/masked-input.global.less"],(function(_export,_context){"use strict";var __rest,XNode,updateMask;function MaskedInput(_a){var{mask}=_a,a=__rest(_a,["mask"]);return XNode.create("input",Object.assign({"data-mask":mask,"event-change":updateMask,"event-keypress":updateMask,"event-keyup":updateMask},a))}_export("default",MaskedInput);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_stylesMaskedInputGlobalLess){}],execute:function(){updateMask=e=>{const target=e.target;const mask=target.dataset.mask;if(!mask){return}let result="";const value=target.value;for(let index=0,elementIndex=0;elementIndex<value.length;elementIndex++,index++){const element=value[elementIndex];const maskElement=mask[index];switch(maskElement){case"#":result+=/[0-9]/.test(element)?element:"";continue;case".":if(element!=="."){result+="."}result+=element;break}}if(target.value!==result){target.value=result}}}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/phone-editor/PhoneEditor");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/web/controls/AtomControl","../countries/CountrySelect","@web-atoms/core/dist/core/Bind","@web-atoms/web-controls/dist/basic/MaskedInput"],(function(_export,_context){"use strict";var __awaiter,XNode,AtomControl,CountrySelect,formatForCountry,isdForCountry,Bind,MaskedInput,PhoneEditor;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_countriesCountrySelect){CountrySelect=_countriesCountrySelect.CountrySelect;formatForCountry=_countriesCountrySelect.formatForCountry;isdForCountry=_countriesCountrySelect.isdForCountry},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsWebControlsDistBasicMaskedInput){MaskedInput=_webAtomsWebControlsDistBasicMaskedInput.default}],execute:function(){_export("default",PhoneEditor=class PhoneEditor extends AtomControl{preCreate(){this.country="IN";this.phoneNumberText="";this.value=null;this.render(XNode.create("div",{"data-layout":"row"},XNode.create(CountrySelect,{value:Bind.twoWaysImmediate((()=>this.country))}),XNode.create(MaskedInput,{"data-mask":Bind.oneWayAsync((()=>formatForCountry(this.country))),value:Bind.twoWaysImmediate((()=>this.phoneNumberText))})));this.bindEvent(this.element,"input",(()=>__awaiter(this,void 0,void 0,(function*(){const isdCode=yield isdForCountry(this.country);const phoneNumber=this.phoneNumberText.replace(/[^0-9]/g,"");this.value=isdCode.startsWith("+")?isdCode+phoneNumber:`+${isdCode}${phoneNumber}`}))))}})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/users/SignupPage");System.register(["tslib","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/core/dist/services/FetchBuilder","@web-atoms/core/dist/view-model/Action","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../common/controls/countries/CountrySelect","../../../common/controls/qrcode/QRCode","@web-atoms/core/dist/core/sleep","../../../model/model","../../../common/controls/Loader","@web-atoms/core/dist/core/InjectProperty","../../../services/EntityService","../../../common/controls/phone-editor/PhoneEditor","../../../styles/users/signup.local.less"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,Bind,XNode,Form,FormField,FetchBuilder,Action,ContentPage,isdForCountry,QRCodeControl,sleep,VerificationToken,Loader,InjectProperty,EntityService,PhoneEditor,SignupPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_webAtomsWebControlsDistMobileAppMobileApp){ContentPage=_webAtomsWebControlsDistMobileAppMobileApp.ContentPage},function(_commonControlsCountriesCountrySelect){isdForCountry=_commonControlsCountriesCountrySelect.isdForCountry},function(_commonControlsQrcodeQRCode){QRCodeControl=_commonControlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_modelModel){VerificationToken=_modelModel.VerificationToken},function(_commonControlsLoader){Loader=_commonControlsLoader.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_servicesEntityService){EntityService=_servicesEntityService.default},function(_commonControlsPhoneEditorPhoneEditor){PhoneEditor=_commonControlsPhoneEditorPhoneEditor.default},function(_stylesUsersSignupLocalLess){}],execute:function(){_export("default",SignupPage=class SignupPage extends ContentPage{constructor(){super(...arguments);this.termsAgreed=false;this.model={name:"",username:"",password:"",passwordAgain:"",phoneNumber:"",country:"US",phoneNumberText:"",captcha:VerificationToken.create({type:"captcha",verifyCode:""}),phone:VerificationToken.create({type:"sms",verifyCode:""})}}init(){return __awaiter(this,void 0,void 0,(function*(){this.hideToolbar=true;this.element.className="social-mail-signup-page";this.title="Social Mail Signup";this.renderer=XNode.create("div",null,XNode.create(Loader,null));const{verificationID:id,accessCode}=yield this.entityService.save(this.model.captcha);this.renderer=XNode.create("div",null,XNode.create("div",null,XNode.create("div",{"data-max-width":"size-large"},XNode.create(Form,null,XNode.create(FormField,{label:"Your Name"},XNode.create("input",{autofocus:true,placeholder:"Display Name",value:Bind.twoWaysImmediate((()=>this.model.name))})),XNode.create(FormField,{label:"Email Address"},XNode.create("div",{"data-layout":"row","data-padding":"auto"},XNode.create("input",{"data-border":"none",placeholder:"first-last-name",style:"outline: none",type:"text",value:Bind.twoWaysImmediate((()=>this.model.username))}),XNode.create("span",{text:"@socialmail.me"}))),XNode.create("details",null,XNode.create("summary",null,"Username Policy"),"Please choose username that resembles your real legal name. Any other name will be banned and blocked permanently. And you will not be able to create new username with same phone number as well."),XNode.create(FormField,{label:"Password"},XNode.create("input",{type:"password",value:Bind.twoWaysImmediate((()=>this.model.password))})),XNode.create(FormField,{label:"Password Again"},XNode.create("input",{type:"password",value:Bind.twoWaysImmediate((()=>this.model.passwordAgain))})),XNode.create(FormField,{label:"Phone Number"},XNode.create(PhoneEditor,{value:Bind.twoWaysImmediate((()=>this.model.phoneNumber))})),XNode.create("div",null,"We require phone number verification to prevent misuse and fraud over the email. And it will also help you in setting up two factor authentication to prevent hackers from accessing your private emails."),XNode.create("br",null),XNode.create("br",null),XNode.create(FormField,{label:"Captcha"},XNode.create("img",{src:`/api/users/captcha/${id}/${accessCode}`})),XNode.create(FormField,{label:"Enter 5 Digit Code"},XNode.create("input",{type:"tel",value:Bind.twoWaysImmediate((()=>this.model.captcha.verifyCode))})),XNode.create("div",{"data-layout":"row"},XNode.create("input",{type:"checkbox",checked:Bind.twoWaysImmediate((()=>this.termsAgreed))}),XNode.create("span",{text:"I agree the "}),XNode.create("a",{href:"https://socialmail.in/terms.html",target:"_blank"},"Terms & Conditions")),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"go-button","data-submit-event":"request-phone-verification"},"Signup"))))))}))}requestPhoneVerification(){return __awaiter(this,void 0,void 0,(function*(){const{verificationID,accessCode,verifyCode}=this.model.captcha;const vc=yield this.entityService.invoke(VerificationToken,"verifyCode",this.model.captcha,verificationID,accessCode,verifyCode);if(!vc.verified){throw new Error("Invalid captcha code")}this.model.phone.verifyAddresses=this.model.phoneNumber;const{externalConfig}=yield this.entityService.save(this.model.phone);this.renderer=XNode.create("div",null,XNode.create("div",null,XNode.create("div",{"data-max-width":"size-large"},XNode.create(QRCodeControl,{smsConfig:JSON.parse(externalConfig)}))));const ve=this.model.phone;for(;;){const v=yield this.entityService.query(VerificationToken,"get",ve.verificationID,ve.accessCode).firstOrDefault();if(v.verified){ve.verified=true;ve.verifyCode="verified";break}yield sleep(5e3)}yield this.signup()}))}signup(){return __awaiter(this,void 0,void 0,(function*(){const{model}=this;delete model.phone.addresses;delete model.captcha.addresses;if(!this.termsAgreed){throw new Error("You must agree to Terms & Conditions.")}if(!model.password){throw new Error("Password is required")}if(model.password.length<7){throw new Error("Password is cannot be less than 7 characters")}if(/\s/i.test(model.password)){throw new Error("Password must not any whitespace characters")}const isdCode=yield isdForCountry(model.country);const phoneNumber=model.phoneNumberText.replace(/[^0-9]/g,"");model.phoneNumber=isdCode.startsWith("+")?isdCode+phoneNumber:`+${isdCode}${phoneNumber}`;const{userID}=yield FetchBuilder.post("/api/users/signup").jsonBody(model).asJson();if(userID){location.href="/";return}}))}askPhoneCode(){return __awaiter(this,void 0,void 0,(function*(){this.renderer=XNode.create("div",null,XNode.create("div",null,XNode.create("div",{"data-max-width":"size-large"},XNode.create(QRCodeControl,{smsConfig:this.model.phone.smsConfig}))));do{yield sleep(5e3);yield this.signup()}while(true)}))}});__decorate([InjectProperty,__metadata("design:type",EntityService)],SignupPage.prototype,"entityService",void 0);__decorate([Action({onEvent:"request-phone-verification"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SignupPage.prototype,"requestPhoneVerification",null);__decorate([Action({onEvent:"signup"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SignupPage.prototype,"signup",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/commands/AppCommands");System.register(["@web-atoms/core/dist/core/Command","../../common/commands/CommonCommands"],(function(_export,_context){"use strict";var Command,CommonCommands,AppCommands;_export("default",void 0);return{setters:[function(_webAtomsCoreDistCoreCommand){Command=_webAtomsCoreDistCoreCommand.default},function(_commonCommandsCommonCommands){CommonCommands=_commonCommandsCommonCommands.default}],execute:function(){_export("default",AppCommands=class AppCommands extends CommonCommands{});AppCommands.openHome=Command.create({route:"/",routeOrder:200,openPage:()=>_context.import("../page/home/HomePage")});AppCommands.openMailboxList=Command.create({route:"/mailboxes",routeOrder:100,openPage:()=>_context.import("../../common/pages/mailboxes/MailboxListPage")});AppCommands.openMails=Command.create({route:"/mails",routeOrder:100,openPage:()=>_context.import("../page/mails/MailboxContacts")});AppCommands.signup=Command.create({route:"/social-mail/users/signup",openPage:()=>_context.import("../page/users/SignupPage")})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/style/OverrideAppStyle");System.register(["./override-app-style.local.less"],(function(_export,_context){"use strict";return{setters:[function(_overrideAppStyleLocalLess){}],execute:function(){}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/style/GlobalStyle");System.register(["@web-atoms/core/dist/core/types","@web-atoms/core/dist/core/AtomList","./OverrideAppStyle","@web-atoms/data-styles/data-styles","./global-style.local.less"],(function(_export,_context){"use strict";var UMD,___UMD;function addLinkTag(href,integrity,rel="stylesheet"){if(!document.head.querySelector(`[href="${href}"]`)){const fa=document.createElement("link");fa.href=href;fa.crossOrigin="anonymous";fa.as="style";fa.rel="preload";if(integrity){fa.integrity=integrity}fa.onload=()=>{fa.onload=null;fa.rel=rel};document.head.insertBefore(fa,document.head.firstElementChild)}}return{setters:[function(_webAtomsCoreDistCoreTypes){UMD=_webAtomsCoreDistCoreTypes.UMD},function(_webAtomsCoreDistCoreAtomList){},function(_OverrideAppStyle){},function(_webAtomsDataStylesDataStyles){},function(_globalStyleLocalLess){}],execute:function(){_export("___UMD",___UMD=UMD);addLinkTag("https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap");addLinkTag("https://npm-git.azureedge.net/npm/package/@c8private/fa-icons@6.7.1/css/all.min.css");addLinkTag("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0");addLinkTag("https://cdn.jsdelivr.net/npm/file-icon-vectors@1.0.0/dist/file-icon-vivid.min.css")}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/LoginService");System.register(["tslib","@web-atoms/core/dist/di/DISingleton","@web-atoms/core/dist/di/Inject","./EntityService","../model/model","../common/SocialMailApp","@web-atoms/core/dist/App","@web-atoms/core/dist/core/sleep","@web-atoms/date-time/dist/DateTime"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DISingleton,Inject,EntityService,LoginSession,SocialMailApp,App,sleep,DateTime,LoginService;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistDiDISingleton){DISingleton=_webAtomsCoreDistDiDISingleton.default},function(_webAtomsCoreDistDiInject){Inject=_webAtomsCoreDistDiInject.Inject},function(_EntityService){EntityService=_EntityService.default},function(_modelModel){LoginSession=_modelModel.LoginSession},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_webAtomsCoreDistApp){App=_webAtomsCoreDistApp.App},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default}],execute:function(){LoginService=class LoginService{getUser(){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){(_a=this.user)!==null&&_a!==void 0?_a:this.user=(_b=yield this.entityService.query(LoginSession,"currentUser").firstOrDefault())===null||_b===void 0?void 0:_b.user;SocialMailApp.user=this.user;if((_c=this.user)===null||_c===void 0?void 0:_c.userID){}return this.user}))}login(session,cancelToken){return __awaiter(this,void 0,void 0,(function*(){const result=yield this.entityService.save(session);if(session.invalid){if(session.verificationToken){this.checkSession(session,cancelToken).catch(console.error)}return session.status}location.reload()}))}checkSession(session,cancelToken){return __awaiter(this,void 0,void 0,(function*(){do{yield sleep(5e3);session.dateUpdated=DateTime.now;yield this.entityService.save(session,(c=>c));if(!session.invalid){location.reload()}}while(!(cancelToken===null||cancelToken===void 0?void 0:cancelToken.cancelled))}))}updateRegistration(s){return __awaiter(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}logout(){return __awaiter(this,void 0,void 0,(function*(){const session=yield this.entityService.query(LoginSession,"currentUser").firstOrDefault();session.invalid=true;const cloner=this.entityService.cloner(session);yield this.entityService.save(cloner.copy);yield sleep(1e3);location.reload()}))}enforceLogin(){return __awaiter(this,void 0,void 0,(function*(){const user=yield this.getUser();if(user===null||user===void 0?void 0:user.userID){return}}))}};__decorate([Inject,__metadata("design:type",EntityService)],LoginService.prototype,"entityService",void 0);__decorate([Inject,__metadata("design:type",App)],LoginService.prototype,"app",void 0);LoginService=__decorate([DISingleton()],LoginService);_export("default",LoginService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/user/forgot/ForgotPassword");System.register(["tslib","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../controls/countries/CountrySelect","@web-atoms/web-controls/dist/basic/MaskedInput","@web-atoms/core/dist/services/FetchBuilder","@web-atoms/core/dist/view-model/Action","@web-atoms/core/dist/web/services/PopupService","@web-atoms/web-controls/dist/basic/PasswordBox","../../../apiPath","../../../controls/qrcode/QRCode","@web-atoms/core/dist/core/sleep","./ForgotPassword.local.less"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,Bind,XNode,Form,FormField,ContentPage,CountrySelect,formatForCountry,isdForCountry,MaskedInput,FetchBuilder,Action,PopupService,PasswordBox,apiPath,QRCodeControl,sleep,ForgotPassword,css;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsWebControlsDistMobileAppMobileApp){ContentPage=_webAtomsWebControlsDistMobileAppMobileApp.ContentPage},function(_controlsCountriesCountrySelect){CountrySelect=_controlsCountriesCountrySelect.CountrySelect;formatForCountry=_controlsCountriesCountrySelect.formatForCountry;isdForCountry=_controlsCountriesCountrySelect.isdForCountry},function(_webAtomsWebControlsDistBasicMaskedInput){MaskedInput=_webAtomsWebControlsDistBasicMaskedInput.default},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_webAtomsCoreDistWebServicesPopupService){PopupService=_webAtomsCoreDistWebServicesPopupService.default},function(_webAtomsWebControlsDistBasicPasswordBox){PasswordBox=_webAtomsWebControlsDistBasicPasswordBox.default},function(_apiPath){apiPath=_apiPath.apiPath},function(_controlsQrcodeQRCode){QRCodeControl=_controlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_ForgotPasswordLocalLess){}],execute:function(){css="forgot-password-window";_export("default",ForgotPassword=class ForgotPassword extends ContentPage{constructor(){super(...arguments);this.model={username:"",password:"",passwordAgain:"",phoneNumber:"",country:"US",phoneNumberText:"",phone:{code:""},captcha:{code:""}}}init(){return __awaiter(this,void 0,void 0,(function*(){this.hideToolbar=true;this.title="Reset Password";const{id,accessCode}=this.model.captcha=yield FetchBuilder.put(apiPath("/api/users/captcha")).asJson();this.render(XNode.create("div",{class:css},XNode.create("div",{"data-layout":"center-all"},XNode.create(Form,{"data-border":"frame"},XNode.create("h3",null,"To reset password, enter following."),XNode.create(FormField,{label:"Username"},XNode.create("input",{autofocus:true,value:Bind.twoWaysImmediate((()=>this.model.username))})),XNode.create(FormField,{label:"Phone Number"},XNode.create("div",{"data-layout":"row"},XNode.create(CountrySelect,{value:Bind.twoWaysImmediate((()=>this.model.country))}),XNode.create(MaskedInput,{"data-mask":Bind.oneWayAsync((()=>formatForCountry(this.model.country))),value:Bind.twoWaysImmediate((()=>this.model.phoneNumberText))}))),XNode.create(FormField,{label:"Captcha"},XNode.create("img",{src:apiPath(`/api/users/captcha/${id}/${accessCode}`)})),XNode.create(FormField,{label:"Enter 5 Digit Code"},XNode.create("input",{type:"tel",value:Bind.twoWaysImmediate((()=>this.model.captcha.code))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"go-button","data-submit-event":"ask-code"},"Next"))))))}))}resetPassword(){return __awaiter(this,void 0,void 0,(function*(){const{model}=this;if(model.phone.verified){if(!model.password){throw new Error("Password is required")}}if(model.password){if(model.password.length<7){throw new Error("Password is cannot be less than 7 characters")}if(/\s/i.test(model.password)){throw new Error("Password must not any whitespace characters")}if(model.passwordAgain!==model.password){throw new Error("Passwords do not match")}}const isdCode=yield isdForCountry(model.country);const phoneNumber=model.phoneNumberText.replace(/[^0-9]/g,"");model.phoneNumber=isdCode.startsWith("+")?isdCode+phoneNumber:`+${isdCode}${phoneNumber}`;const{userID,phone,captcha}=yield FetchBuilder.post(apiPath("/api/users/password/reset/")).jsonBody(this.model).asJson();if(captcha===null||captcha===void 0?void 0:captcha.verified){model.captcha.verified=captcha.verified}if(userID){yield PopupService.alert({message:"Password has been reset successfully, please login with your new password."});location.href="/";return}if(phone.verified){this.model.phone.verified=phone.verified;this.askPasswords();return}if(phone.id){this.model.phone.id=phone.id;this.model.phone.smsConfig=phone.smsConfig}yield this.askCode()}))}askCode(){return __awaiter(this,void 0,void 0,(function*(){this.renderer=XNode.create("div",{class:css},XNode.create("div",{"data-layout":"center-all"},XNode.create(QRCodeControl,{smsConfig:this.model.phone.smsConfig})));yield sleep(3e3);yield this.resetPassword()}))}askPasswords(){this.renderer=XNode.create("div",{class:css},XNode.create("div",{"data-layout":"center-all"},XNode.create(Form,{"data-border":"frame"},XNode.create("h3",null,"Enter new password."),XNode.create(FormField,{label:"Password"},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.password))})),XNode.create(FormField,{label:"Password Again"},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.passwordAgain))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"go-button","data-submit-event":"ask-code"},"Next")))))}});__decorate([Action({onEvent:"ask-code"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ForgotPassword.prototype,"resetPassword",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/TestMode");System.register([],(function(_export,_context){"use strict";var AppLocation;return{setters:[],execute:function(){_export("AppLocation",AppLocation={isLocalTesting:/^\d+\.\d+\.\d+\.\d+$/.test(location.hostname)})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/user/login/LoginPage");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/mobile-app/MobileApp","@web-atoms/web-controls/dist/basic/FormField","../../../../model/model","@web-atoms/core/dist/core/Bind","@web-atoms/web-controls/dist/basic/PasswordBox","@web-atoms/core/dist/view-model/Action","@web-atoms/core/dist/core/InjectProperty","../../../../services/LoginService","../../../controls/password/PasswordStrength","../../../validators/Validators","../../../controls/buttons/IconButton","@web-atoms/web-controls/dist/PageNavigator","../forgot/ForgotPassword","@web-atoms/core/dist/web/services/PopupService","../../../form/AppForm","../../../../web/commands/AppCommands","@web-atoms/date-time/dist/DateTime","../../../controls/qrcode/QRCode","@web-atoms/core/dist/core/types","../../../TestMode"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,ContentPage,FormField,LoginSession,Bind,PasswordBox,Action,InjectProperty,LoginService,PasswordStrength,Validators,SaveIconTextButton,PageNavigator,ForgotPassword,PopupService,AppForm,AppCommands,DateTime,QRCode,CancelToken,AppLocation,LoginPage,isSocialMail;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistMobileAppMobileApp){ContentPage=_webAtomsWebControlsDistMobileAppMobileApp.ContentPage},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_modelModel){LoginSession=_modelModel.LoginSession},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsWebControlsDistBasicPasswordBox){PasswordBox=_webAtomsWebControlsDistBasicPasswordBox.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_servicesLoginService){LoginService=_servicesLoginService.default},function(_controlsPasswordPasswordStrength){PasswordStrength=_controlsPasswordPasswordStrength.default},function(_validatorsValidators){Validators=_validatorsValidators.Validators},function(_controlsButtonsIconButton){SaveIconTextButton=_controlsButtonsIconButton.SaveIconTextButton},function(_webAtomsWebControlsDistPageNavigator){PageNavigator=_webAtomsWebControlsDistPageNavigator.default},function(_forgotForgotPassword){ForgotPassword=_forgotForgotPassword.default},function(_webAtomsCoreDistWebServicesPopupService){PopupService=_webAtomsCoreDistWebServicesPopupService.default},function(_formAppForm){AppForm=_formAppForm.default},function(_webCommandsAppCommands){AppCommands=_webCommandsAppCommands.default},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default},function(_controlsQrcodeQRCode){QRCode=_controlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreTypes){CancelToken=_webAtomsCoreDistCoreTypes.CancelToken},function(_TestMode){AppLocation=_TestMode.AppLocation}],execute:function(){isSocialMail=/socialmail\.(me|in)/i.test(location.href)||AppLocation.isLocalTesting;_export("default",LoginPage=class LoginPage extends ContentPage{constructor(){super(...arguments);this.password="";this.ct=new CancelToken}init(){return __awaiter(this,void 0,void 0,(function*(){this.footerRenderer=()=>XNode.create("div",{"data-layout":"row"},XNode.create("a",{target:"_blank","data-margin-left":"auto",href:"https://socialmail.me"},"Social Mail"));this.hideToolbar=true;this.model=LoginSession.create({});this.model.userName="";this.model.checkPassword="";this.model.timeToken="";this.model.oneTimePassword="";this.render(XNode.create("div",null,XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("h3",null,"Sign in to continue"),XNode.create(FormField,{label:"Username"},XNode.create("input",{autofocus:true,value:Bind.twoWaysImmediate((()=>this.model.userName))})),XNode.create(FormField,{label:"Password"},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.checkPassword))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"accent-button","data-submit-event":"login",text:"Login"})),isSocialMail&&XNode.create("div",{"data-layout":"row"},XNode.create("span",{"data-click-event":"forgot-password","data-layout":"link"},"Forgot password?")),isSocialMail&&XNode.create("div",{"data-layout":"row"},XNode.create("a",{"data-click-event":"route",href:AppCommands.signup.displayRoute({})},"Sign Up"))))))}))}login(){var _a;return __awaiter(this,void 0,void 0,(function*(){this.model.dateUpdated=DateTime.now;(_a=this.ct)===null||_a===void 0?void 0:_a.cancel();this.ct=new CancelToken;const status=yield this.userService.login(this.model,this.ct);if(!status){return}if(status==="change-password"){yield this.showChangePassword();return}this.showOtherFactors()}))}showOtherFactors(){const smsConfig=this.model.verificationToken;if(!smsConfig.smsConfig){this.showAuthenticator();return}this.renderer=XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create(QRCode,{smsConfig:smsConfig.smsConfig}),XNode.create("h4",null,"OR"),XNode.create("h4",null,XNode.create("label",{"event-click":()=>this.showAuthenticator(),"data-layout":"link"},"Enter Authenticator Code"))))}showAuthenticator(){var _a;(_a=this.ct)===null||_a===void 0?void 0:_a.cancel();this.ct=null;this.renderer=XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("h4",null,"Enter Authenticator Code"),XNode.create(FormField,{label:"Code"},XNode.create("input",{autofocus:true,type:"tel",value:Bind.twoWaysImmediate((()=>this.model.timeToken))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"event-click":()=>this.showOTP(),"data-layout":"link"},"Enter One Time Password instead.")),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"event-click":()=>this.login(),text:"Go"}))))}showOTP(){this.renderer=XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("h4",null,"Enter One Time Password"),XNode.create(FormField,{label:"Password"},XNode.create("input",{autofocus:true,type:"tel",value:Bind.twoWaysImmediate((()=>this.model.oneTimePassword))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"event-click":()=>this.showOtherFactors(),"data-layout":"link"},"Enter Authenticator Code instad.")),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"event-click":()=>this.login(),text:"Go"}))))}showChangePassword(){return __awaiter(this,void 0,void 0,(function*(){this.model.newPassword="";this.renderer=XNode.create("div",null,XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("div",null,"Update your password, your one time password is expired."),XNode.create(FormField,{label:"Password",autofocus:true,required:true,error:Bind.oneWay((()=>Validators.isValidPassword(this.password)?"":"Password must contain one symbol, one number and should be minimum 7 characters"))},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.password))})),XNode.create(PasswordStrength,{password:Bind.oneWay((()=>this.password))}),XNode.create(FormField,{label:"Password Again",required:true,error:Bind.oneWay((()=>this.model.newPassword!==this.password?"Passwords do not match":""))},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.newPassword))})),XNode.create("div",{"data-layout":"command-row"},XNode.create("button",{"data-submit-event":"login",text:"Change Password & Login"})))))}))}forgotPassword(){return __awaiter(this,void 0,void 0,(function*(){if(isSocialMail){PageNavigator.openPage(ForgotPassword);return}yield PopupService.alert({message:"Please contact your administrator"})}))}});__decorate([InjectProperty,__metadata("design:type",LoginService)],LoginPage.prototype,"userService",void 0);__decorate([Action({onEvent:"login"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],LoginPage.prototype,"login",null);__decorate([Action({onEvent:"forgot-password"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],LoginPage.prototype,"forgotPassword",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/menu/MenuItem");System.register(["tslib","@web-atoms/core/dist/core/XNode","./MenuItem.global.less"],(function(_export,_context){"use strict";var __rest,XNode;function MenuItem(_a){var{label,icon=void 0,click=undefined,title=label,description=void 0,href="",commandLink="",target=undefined,bell=void 0,bellTitle=void 0,bellClick=void 0}=_a,a=__rest(_a,["label","icon","click","title","description","href","commandLink","target","bell","bellTitle","bellClick"]);return href||commandLink?XNode.create("a",Object.assign({"data-layout":"menu-item","data-text-decoration":"none",title,"data-click-event":commandLink?"route":void 0,href:href||commandLink,target,"event-click":click},a),icon&&XNode.create("i",{class:icon}),XNode.create("span",{text:label}),description&&XNode.create("small",{text:description}),bell!==void 0&&XNode.create("i",Object.assign({"data-element":"badge",title:bellTitle,class:bell?"fad fa-bell":"fad fa-bell-slash"},typeof bellClick==="string"?{"data-click-event":bellClick}:{"data-click-event":"none","event-click":bellClick}))):XNode.create("div",Object.assign({title,"data-layout":"menu-item","event-click":click},a),icon&&XNode.create("i",{class:icon}),XNode.create("span",{text:label}),description&&XNode.create("small",{text:description}),bell!==void 0&&XNode.create("i",{"data-click-event":bellClick,"data-element":"badge",title:bellTitle,class:bell?"fad fa-bell":"fad fa-bell-slash"}))}_export("default",MenuItem);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_MenuItemGlobalLess){}],execute:function(){}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/menu/MenuRepeater");System.register(["@web-atoms/web-controls/dist/basic/AtomRepeater","./MenuRepeater.global.less"],(function(_export,_context){"use strict";var AtomRepeater,MenuRepeater;_export("default",void 0);return{setters:[function(_webAtomsWebControlsDistBasicAtomRepeater){AtomRepeater=_webAtomsWebControlsDistBasicAtomRepeater.default},function(_MenuRepeaterGlobalLess){}],execute:function(){_export("default",MenuRepeater=class MenuRepeater extends AtomRepeater{constructor(app,e=document.createElement("menu-repeater")){super(app,e)}})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/drawer/BaseDrawer");System.register(["@web-atoms/web-controls/dist/mobile-app/MobileApp","./BaseDrawer.global.less"],(function(_export,_context){"use strict";var Drawer,BaseDrawer;_export("default",void 0);return{setters:[function(_webAtomsWebControlsDistMobileAppMobileApp){Drawer=_webAtomsWebControlsDistMobileAppMobileApp.Drawer},function(_BaseDrawerGlobalLess){}],execute:function(){_export("default",BaseDrawer=class BaseDrawer extends Drawer{constructor(app,e=document.createElement("drawer-menu")){super(app,e)}})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/drawer/AppDrawer");System.register(["tslib","@web-atoms/core/dist/core/XNode","../../common/SocialMailApp","../../common/controls/menu/MenuItem","../commands/AppCommands","@web-atoms/web-controls/dist/basic/Expander","../../common/NumberFormats","@web-atoms/core/dist/view-model/Action","../../common/commands/CommonCommands","../../services/LoginService","../../common/AppUrlService","@web-atoms/core/dist/core/InjectProperty","../../common/menu/MenuService","../../common/controls/menu/MenuRepeater","../../common/controls/drawer/BaseDrawer","@web-atoms/core/dist/core/Bind"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,SocialMailApp,MenuItem,AppCommands,ExpanderMenu,toFileSize,Action,CommonCommands,LoginService,AppUrlService,InjectProperty,MenuService,MenuRepeater,BaseDrawer,Bind,AppDrawer;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_commonControlsMenuMenuItem){MenuItem=_commonControlsMenuMenuItem.default},function(_commandsAppCommands){AppCommands=_commandsAppCommands.default},function(_webAtomsWebControlsDistBasicExpander){ExpanderMenu=_webAtomsWebControlsDistBasicExpander.ExpanderMenu},function(_commonNumberFormats){toFileSize=_commonNumberFormats.toFileSize},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_commonCommandsCommonCommands){CommonCommands=_commonCommandsCommonCommands.default},function(_servicesLoginService){LoginService=_servicesLoginService.default},function(_commonAppUrlService){AppUrlService=_commonAppUrlService.AppUrlService},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_commonMenuMenuService){MenuService=_commonMenuMenuService.default},function(_commonControlsMenuMenuRepeater){MenuRepeater=_commonControlsMenuMenuRepeater.default},function(_commonControlsDrawerBaseDrawer){BaseDrawer=_commonControlsDrawerBaseDrawer.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default}],execute:function(){_export("default",AppDrawer=class AppDrawer extends BaseDrawer{init(){return __awaiter(this,void 0,void 0,(function*(){this.user=SocialMailApp.user;this.renderer=XNode.create("div",null,XNode.create("header",null,SocialMailApp.config.name),XNode.create("section",null,XNode.create(MenuItem,{icon:"fas fa-home",label:"Home",commandLink:AppCommands.openHome.displayRoute({})}),XNode.create(ExpanderMenu,{isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-envelope",label:"Mailboxes",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.mailboxes,itemRenderer:mb=>XNode.create(MenuItem,{commandLink:AppCommands.openMailbox.displayRoute({id:mb.mailboxID}),label:mb.emailAddress.name,description:mb.emailAddress.emailAddress,title:mb.emailAddress.emailAddress})}),XNode.create(MenuItem,{label:"All",commandLink:AppCommands.openMailboxList.displayRoute({})})),XNode.create(ExpanderMenu,{"style-display":Bind.oneWay((()=>this.menuService.channels.length>0)),isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-hard-drive",label:"Channels",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.channels,itemRenderer:mb=>XNode.create(MenuItem,{commandLink:AppCommands.openChannel.displayRoute({id:mb.mailboxID}),label:mb.emailAddress.name,description:mb.emailAddress.emailAddress,title:mb.emailAddress.emailAddress})})),XNode.create(ExpanderMenu,{"style-display":Bind.oneWay((()=>this.menuService.drives.length>0)),isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-hard-drive",label:"Drives",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.drives,itemRenderer:d=>{var _a;return XNode.create(MenuItem,{commandLink:AppCommands.openFiles.displayRoute({id:d.appFileID}),label:d.name,description:`${(_a=d.creator)===null||_a===void 0?void 0:_a.displayName} ${BigInt(d.fileSize)>BigInt(0)?"("+toFileSize(d.fileSize)+")":""}`})}}),XNode.create(MenuItem,{label:"All",commandLink:AppCommands.openDrives.displayRoute({})})),XNode.create(ExpanderMenu,{"style-display":Bind.oneWay((()=>this.menuService.websites.length>0)),isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-hard-drive",label:"Web Sites",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.websites,itemRenderer:d=>XNode.create(MenuItem,{href:AppUrlService.editWebSite(d),target:`_web_${d.folderID}`,label:d.folder.name,description:toFileSize(Number(d.folder.fileSize)+Number(d.snapshotStorage))})}),XNode.create(MenuItem,{label:"All",commandLink:AppCommands.openWebSiteList.displayRoute({})})),XNode.create(ExpanderMenu,{isExpanded:false},XNode.create(MenuItem,{icon:"fas fa-gears",label:"Account Settings"}),XNode.create(MenuItem,{label:"Dns Zones",commandLink:CommonCommands.dnsZoneList.displayRoute({})}),!SocialMailApp.config.externalLogin&&XNode.create(MenuItem,{label:"Change Password",commandLink:CommonCommands.changePassword.displayRoute({})}),!SocialMailApp.config.externalLogin&&XNode.create(MenuItem,{label:"Multi Factor",commandLink:CommonCommands.setupMultiFactor.displayRoute({})}),XNode.create(MenuItem,{label:"Access Tokens",commandLink:CommonCommands.accessTokenList.displayRoute({})}),XNode.create(MenuItem,{label:"Logout","data-click-event":"user-logout"}))))}))}userLogout(){return __awaiter(this,void 0,void 0,(function*(){const loginService=this.resolve(LoginService);yield loginService.logout()}))}onClick(none,e){var _a;(_a=this.selected)===null||_a===void 0?void 0:_a.removeAttribute("data-selected");let start=e.target;while(start!==e.currentTarget){if(start.getAttribute("data-layout")==="menu-item"){start.setAttribute("data-selected","true");this.selected=start;break}start=start.parentElement}}});__decorate([InjectProperty,__metadata("design:type",MenuService)],AppDrawer.prototype,"menuService",void 0);__decorate([Action({onEvent:"user-logout"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],AppDrawer.prototype,"userLogout",null);__decorate([Action({onEvent:"click"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,MouseEvent]),__metadata("design:returntype",void 0)],AppDrawer.prototype,"onClick",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/ModuleInfo");System.register(["@web-atoms/core/dist/core/XNode"],(function(_export,_context){"use strict";var XNode,ModuleInfo;return{setters:[function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default}],execute:function(){_export("ModuleInfo",ModuleInfo=typeof moduleInfo==="undefined"?[]:[XNode.create("div",{title:`${moduleInfo.server.package}@${moduleInfo.server.version}`},moduleInfo.server.version)," | ",XNode.create("div",{title:`${moduleInfo.ui.package}@${moduleInfo.ui.version}`},moduleInfo.ui.version)])}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/WebPushService");System.register(["tslib","@web-atoms/core/dist/di/DITransient","@web-atoms/core/dist/di/Inject","./EntityService","../model/model","@web-atoms/core/dist/services/FetchBuilder","../common/apiPath"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DITransient,Inject,EntityService,LoginSession,FetchBuilder,apiPath,WebPushService;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistDiDITransient){DITransient=_webAtomsCoreDistDiDITransient.default},function(_webAtomsCoreDistDiInject){Inject=_webAtomsCoreDistDiInject.Inject},function(_EntityService){EntityService=_EntityService.default},function(_modelModel){LoginSession=_modelModel.LoginSession},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_commonApiPath){apiPath=_commonApiPath.apiPath}],execute:function(){WebPushService=class WebPushService{register(){return __awaiter(this,void 0,void 0,(function*(){try{if(!("serviceWorker"in navigator)){return}const r=yield navigator.serviceWorker.ready;let s=yield r.pushManager.getSubscription();if(!s){s=yield this.createRegistration(r);if(!s){return}}yield this.updateRegistration(s)}catch(error){console.error(error)}}))}createRegistration(r){return __awaiter(this,void 0,void 0,(function*(){const permission=yield Notification.requestPermission();if(permission!=="granted"){return}const{webPush:{publicKey}}=yield FetchBuilder.get(apiPath("/api/push/keys")).asJson();const s=yield r.pushManager.subscribe({userVisibleOnly:true,applicationServerKey:publicKey});return s}))}updateRegistration(s){return __awaiter(this,void 0,void 0,(function*(){const session=yield this.entityService.query(LoginSession,"currentUser").firstOrDefault();session.deviceToken=JSON.stringify(s);session.deviceTokenType="WebPush";const cloner=this.entityService.cloner(session);yield this.entityService.save(cloner.copy)}))}};__decorate([Inject,__metadata("design:type",EntityService)],WebPushService.prototype,"entityService",void 0);WebPushService=__decorate([DITransient()],WebPushService);_export("default",WebPushService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/user/multi-factor/SetupMultiFactorPage");System.register(["tslib","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../../model/model","@web-atoms/core/dist/core/InjectProperty","../services/UserService","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","../../../controls/buttons/IconButton","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/view-model/Action","../../../date/DateFormats","../../../controls/countries/CountrySelect","@web-atoms/web-controls/dist/basic/MaskedInput","../../../controls/qrcode/QRCode","@web-atoms/core/dist/core/sleep","../../../../services/EntityService","@web-atoms/date-time/dist/DateTime"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,PopupWindowPage,UserAuthFactor,InjectProperty,UserService,XNode,Form,AddIconTextButton,SaveIconTextButton,FormField,Bind,Action,DateFormats,CountrySelect,formatForCountry,isdForCountry,MaskedInput,QRCodeControl,sleep,EntityService,DateTime,SetupMultiFactorPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsWebControlsDistMobileAppMobileApp){PopupWindowPage=_webAtomsWebControlsDistMobileAppMobileApp.PopupWindowPage},function(_modelModel){UserAuthFactor=_modelModel.UserAuthFactor},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_servicesUserService){UserService=_servicesUserService.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_controlsButtonsIconButton){AddIconTextButton=_controlsButtonsIconButton.AddIconTextButton;SaveIconTextButton=_controlsButtonsIconButton.SaveIconTextButton},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_dateDateFormats){DateFormats=_dateDateFormats.DateFormats},function(_controlsCountriesCountrySelect){CountrySelect=_controlsCountriesCountrySelect.CountrySelect;formatForCountry=_controlsCountriesCountrySelect.formatForCountry;isdForCountry=_controlsCountriesCountrySelect.isdForCountry},function(_webAtomsWebControlsDistBasicMaskedInput){MaskedInput=_webAtomsWebControlsDistBasicMaskedInput.default},function(_controlsQrcodeQRCode){QRCodeControl=_controlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_servicesEntityService){EntityService=_servicesEntityService.default},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default}],execute:function(){_export("default",SetupMultiFactorPage=class SetupMultiFactorPage extends PopupWindowPage{constructor(){super(...arguments);this.countryCode="US";this.phoneNumber=""}init(){return __awaiter(this,void 0,void 0,(function*(){this.model=yield this.userService.getCurrent();const{multiFactor}=this.model;this.title="Please setup security";yield this.generateOTP()}))}renderAuthFactor(item){if(item.method==="totp"){return XNode.create("tr",null,XNode.create("td",null,"Authenticator"),XNode.create("td",null,item.hint),XNode.create("td",null,DateFormats.relative.short(item.dateUpdated)),XNode.create("td",null,XNode.create("i",{class:"fas fa-check green"})))}if(item.method==="one-time"){return XNode.create("tr",null,XNode.create("td",null,"OTP"),XNode.create("td",null,item.hint,"*****************"),XNode.create("td",null,DateFormats.relative.short(item.dateUpdated)),XNode.create("td",null,XNode.create("i",{class:"fas fa-check green"})))}return XNode.create("tr",null,XNode.create("td",null,item.method),XNode.create("td",null,item.hint),XNode.create("td",null,DateFormats.relative.short(item.dateUpdated)),XNode.create("td",null,XNode.create("i",{class:"fas fa-check green"})))}addAuthenticator(){return __awaiter(this,void 0,void 0,(function*(){const authFactor=yield this.userService.createAuthFactor(this.model);this.authFactor=authFactor;this.renderer=XNode.create("div",{"data-layout":"center-page-900px"},XNode.create(Form,null,XNode.create(FormField,{label:""},XNode.create("div",null,"Scan following QR Code in any compatible Authenticator App. Enter the generated code and hit the verify button.")),XNode.create(FormField,{label:"Secret"},XNode.create("img",{src:authFactor.qrCodeDataUrl})),XNode.create(FormField,{label:"Code",required:true,error:Bind.oneWay((()=>this.authFactor.token?"":"Code is required"))},XNode.create("input",{type:"tel",value:Bind.twoWaysImmediate((()=>this.authFactor.token))})),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"data-submit-event":"save-auth-factor",text:"Verify"}))))}))}generateOTP(){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){const authList=(_a=(_b=this.model).authFactors)!==null&&_a!==void 0?_a:_b.authFactors=[];let generated=false;const newAuth=[];while(authList.filter((x=>x.method==="one-time")).length<=8){const af=UserAuthFactor.create({method:"one-time"});authList.push(af);newAuth.push(af)}yield this.userService.saveAuthFactors(newAuth);let text="";for(const iterator of authList){if(!(iterator===null||iterator===void 0?void 0:iterator.displaySecret)){continue}generated=true;text+="\r\n"+iterator.displaySecret}if(!generated){yield this.verifyCellPhone();return}text+="\r\n";this.renderer=XNode.create("div",{"data-layout":"center-page-900px"},XNode.create(Form,null,XNode.create(FormField,{label:"One Time Passwords"},XNode.create("div",null,"Please copy and save these one time codes somewhere safe. You can use them if you cannot access Authenticator app.")),XNode.create(FormField,{label:""},XNode.create("textarea",{rows:12,value:text})),XNode.create("div",null,"After copying, setup authenticator to finish."),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"event-click":()=>this.verifyCellPhone(),text:"Verify Cell Phone"}))))}))}verifyCellPhone(){return __awaiter(this,void 0,void 0,(function*(){const pv=this.model.authFactors.find((x=>x.method==="otp-in"));if(!pv){return yield this.addCellPhone()}if(pv.verified){this.model.multiFactor=true;yield this.userService.save(this.model);this.renderer=XNode.create("div",null,XNode.create("div",null,"Your phone has been verified, you can optionally add",XNode.create("br",null),"Google Authenticator or similar as backup code generator",XNode.create("br",null),"that you can use in case of poor cellular network."),XNode.create("div",null,XNode.create(AddIconTextButton,{"event-click":()=>this.addAuthenticator(),text:"Add Authenticator"})));return}this.renderer=XNode.create("div",null,XNode.create(Form,null,XNode.create(QRCodeControl,{smsConfig:pv.verificationToken.externalConfig})));const es=this.entityService;const id=pv.authFactorID;do{yield sleep(5e3);pv.dateUpdated=DateTime.now;yield es.save(pv,(c=>c));if(pv.verified){break}}while(true);this.model.multiFactor=true;yield this.userService.save(this.model);yield this.verifyCellPhone()}))}addCellPhone(){return __awaiter(this,void 0,void 0,(function*(){this.renderer=XNode.create("div",null,XNode.create(Form,null,XNode.create(FormField,{label:"Phone Number"},XNode.create("div",{"data-layout":"row"},XNode.create(CountrySelect,{value:Bind.twoWaysImmediate((()=>this.countryCode))}),XNode.create(MaskedInput,{mask:Bind.oneWayAsync((()=>formatForCountry(this.countryCode))),value:Bind.twoWaysImmediate((()=>this.phoneNumber))}))),XNode.create("div",null,"In next screen, you will be asked ",XNode.create("br",null)," to verify your phone number.",XNode.create("br",null),XNode.create("br",null),XNode.create("br",null),XNode.create("br",null),XNode.create("br",null)),XNode.create(FormField,{label:""},XNode.create(AddIconTextButton,{"data-submit-event":"add-phone-number"}))))}))}addPhoneNumber(){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){const es=this.entityService;const isdCode=yield isdForCountry(this.countryCode,"+");const phoneNumber=isdCode+this.phoneNumber.replace(/[^\d]/g,"");const uaf=UserAuthFactor.create({userID:this.model.userID,isdCode,phoneNumber,method:"otp-in"});const m=yield es.save(uaf,(c=>c));if(m.verificationToken){uaf.verificationToken=m.verificationToken}((_a=(_b=this.model).authFactors)!==null&&_a!==void 0?_a:_b.authFactors=[]).add(uaf);yield this.verifyCellPhone()}))}enableMultiFactor(){return __awaiter(this,void 0,void 0,(function*(){this.model.multiFactor=true;yield this.userService.save(this.model);yield this.init()}))}saveAuthFactor(){return __awaiter(this,void 0,void 0,(function*(){yield this.userService.verify(this.authFactor);this.model.multiFactor=true;yield this.userService.save(this.model);location.reload()}))}});__decorate([InjectProperty,__metadata("design:type",UserService)],SetupMultiFactorPage.prototype,"userService",void 0);__decorate([InjectProperty,__metadata("design:type",EntityService)],SetupMultiFactorPage.prototype,"entityService",void 0);__decorate([Action({}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"verifyCellPhone",null);__decorate([Action({}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"addCellPhone",null);__decorate([Action({onEvent:"add-phone-number"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"addPhoneNumber",null);__decorate([Action({onEvent:"enable-multi-factor",success:"Multi factor authentication enabled successfully."}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"enableMultiFactor",null);__decorate([Action({onEvent:"save-auth-factor",success:"Multi Factor Login is setup successfully."}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"saveAuthFactor",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/AppIndex");System.register(["tslib","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/Pack","@web-atoms/web-controls/dist/desktop-app/MobileDesktopApp","@web-atoms/core/dist/core/Route","@web-atoms/web-controls/dist/PageNavigator","@web-atoms/core/dist/core/Command","./commands/AppCommands","../style/GlobalStyle","../services/LoginService","../common/pages/user/login/LoginPage","./drawer/AppDrawer","../services/files/LocalFileService","../common/controls/ModuleInfo","@web-atoms/core/dist/core/sleep","../services/WebPushService","../common/pages/user/multi-factor/SetupMultiFactorPage","../common/SocialMailApp","./page/users/SignupPage","./page/mails/mini-compose/MiniComposePage","../common/TestMode"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,InjectProperty,XNode,Pack,MobileDesktopApp,Route,PageNavigator,Command,AppCommands,LoginService,LoginPage,AppDrawer,LocalFileService,ModuleInfo,sleep,WebPushService,SetupMultiFactorPage,SocialMailApp,SignupPage,MiniComposePage,AppLocation,_a,_b,_c,_d,AppIndex;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistPack){Pack=_webAtomsCoreDistPack.default},function(_webAtomsWebControlsDistDesktopAppMobileDesktopApp){MobileDesktopApp=_webAtomsWebControlsDistDesktopAppMobileDesktopApp.default},function(_webAtomsCoreDistCoreRoute){Route=_webAtomsCoreDistCoreRoute.default},function(_webAtomsWebControlsDistPageNavigator){PageNavigator=_webAtomsWebControlsDistPageNavigator.default},function(_webAtomsCoreDistCoreCommand){Command=_webAtomsCoreDistCoreCommand.default},function(_commandsAppCommands){AppCommands=_commandsAppCommands.default},function(_styleGlobalStyle){},function(_servicesLoginService){LoginService=_servicesLoginService.default},function(_commonPagesUserLoginLoginPage){LoginPage=_commonPagesUserLoginLoginPage.default},function(_drawerAppDrawer){AppDrawer=_drawerAppDrawer.default},function(_servicesFilesLocalFileService){LocalFileService=_servicesFilesLocalFileService.default},function(_commonControlsModuleInfo){ModuleInfo=_commonControlsModuleInfo.ModuleInfo},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_servicesWebPushService){WebPushService=_servicesWebPushService.default},function(_commonPagesUserMultiFactorSetupMultiFactorPage){SetupMultiFactorPage=_commonPagesUserMultiFactorSetupMultiFactorPage.default},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_pageUsersSignupPage){SignupPage=_pageUsersSignupPage.default},function(_pageMailsMiniComposeMiniComposePage){MiniComposePage=_pageMailsMiniComposeMiniComposePage.default},function(_commonTestMode){AppLocation=_commonTestMode.AppLocation}],execute:function(){(_a=(_c=Symbol).asyncDispose)!==null&&_a!==void 0?_a:_c.asyncDispose=Symbol("asyncDispose");(_b=(_d=Symbol).dispose)!==null&&_b!==void 0?_b:_d.dispose=Symbol("dispose");AppIndex=class AppIndex extends MobileDesktopApp{init(){return __awaiter(this,void 0,void 0,(function*(){AppCommands.install(this);this.resolve(LocalFileService);const currentUser=yield this.userService.getUser();if(!currentUser){if(SocialMailApp.config.externalLogin){location.href=SocialMailApp.config.externalLogin}if(/\/signup$/i.test(location.href)||/\/signup\//i.test(location.href)){PageNavigator.openPage(SignupPage);return}PageNavigator.openPage(LoginPage);return}this.drawerMenu=AppDrawer;while(!currentUser.multiFactor){yield PageNavigator.pushPageForResultOrCancel(SetupMultiFactorPage)}if(!Command.invokeRoute()){AppCommands.openHome.dispatch()}if(this.desktopApp){this.desktopApp.statusBarRenderer=()=>{var _a;return XNode.create("div",{"data-layout":"row"},((_a=currentUser.roles)===null||_a===void 0?void 0:_a.find((x=>/^admin/i.test(x.roleName))))&&XNode.create("a",{href:"/admin",target:"_blank"},"Admin"),XNode.create("div",{"data-flex":"stretch-full"}),...ModuleInfo)}}const url=new URL(location.href);const mailto=url.searchParams.get("mailto");if(mailto){PageNavigator.pushPage(MiniComposePage,{asAttachment:false,thread:{},mailto})}yield sleep(500);yield this.resolve(WebPushService).register()}))}};__decorate([InjectProperty,__metadata("design:type",LoginService)],AppIndex.prototype,"userService",void 0);AppIndex=__decorate([Pack],AppIndex);_export("default",AppIndex);Route.encodeUrl=url=>{if(url.startsWith("#")){return url}if(AppLocation.isLocalTesting){return"#!"+url}return url}}}}));window.installStyleSheet("./AppIndex.pack.global.less.css");window.installStyleSheet("./AppIndex.pack.local.less.css");
|
|
145
|
+
`.installGlobal("qr-code");generateUrl=item=>{const body=item.keyword?`${item.keyword} ${item.code}`:item.code;if(/android/i.test(navigator.userAgent)){return`SMS:${item.phoneNumber}?body=${encodeURIComponent(body)}`}return`SMS:${item.phoneNumber}?&body=${encodeURIComponent(body)}`};_export("default",QRCodeControl=class QRCodeControl extends AtomControl{constructor(app,e=document.createElement("qr-code")){super(app,e);this.smsConfig=null;this.selectedConfig=null;this.runAfterInit((()=>this.app.runAsync((()=>this.init()))))}init(){return __awaiter(this,void 0,void 0,(function*(){if(!this.smsConfig){return}if(typeof this.smsConfig==="string"){this.smsConfig=JSON.parse(this.smsConfig)}this.selectedConfig=this.smsConfig.config[0];const isMobile=/ios|iphone|android/i.test(navigator.userAgent);if(isMobile){this.renderer=XNode.create("div",null,XNode.create(AppForm,null,XNode.create("h4",null,"Please verify your phone number"),XNode.create("div",null,"Click on following button, that will open your Messages(SMS/Text) screen with your verification code, please click send on your Messages screen."),XNode.create(FormField,{label:"Country"},XNode.create(DropDown,{itemRenderer:x=>XNode.create("label",{text:x.countryCode}),items:this.smsConfig.config,selectedItem:Bind.twoWaysImmediate((()=>this.selectedConfig))})),XNode.create("div",null,XNode.create(EmailIconTextButton,{href:Bind.oneWay((()=>generateUrl(this.selectedConfig))),target:"_blank",text:"Open Messages"}))));return}this.renderer=XNode.create("div",null,XNode.create(AppForm,null,XNode.create("h4",null,"Please verify your phone number"),XNode.create("div",null,"Scan following QR Code with your phone to open the Messages(SMS/Text) with generated code. And hit the send button."),XNode.create(FormField,{label:"Country"},XNode.create(DropDown,{itemRenderer:x=>XNode.create("label",{text:x.countryCode}),items:this.smsConfig.config,selectedItem:Bind.twoWaysImmediate((()=>this.selectedConfig))})),XNode.create("div",null,XNode.create("img",{class:"qr-code",src:Bind.oneWay((()=>`data:image/svg+xml;base64,${btoa(this.selectedConfig.qrCodeUrl)}`))}))))}))}});__decorate([BindableProperty,__metadata("design:type",Object)],QRCodeControl.prototype,"smsConfig",void 0)}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/basic/MaskedInput");System.register(["tslib","@web-atoms/core/dist/core/XNode","./styles/masked-input.global.less"],(function(_export,_context){"use strict";var __rest,XNode,updateMask;function MaskedInput(_a){var{mask}=_a,a=__rest(_a,["mask"]);return XNode.create("input",Object.assign({"data-mask":mask,"event-change":updateMask,"event-keypress":updateMask,"event-keyup":updateMask},a))}_export("default",MaskedInput);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_stylesMaskedInputGlobalLess){}],execute:function(){updateMask=e=>{const target=e.target;const mask=target.dataset.mask;if(!mask){return}let result="";const value=target.value;for(let index=0,elementIndex=0;elementIndex<value.length;elementIndex++,index++){const element=value[elementIndex];const maskElement=mask[index];switch(maskElement){case"#":result+=/[0-9]/.test(element)?element:"";continue;case".":if(element!=="."){result+="."}result+=element;break}}if(target.value!==result){target.value=result}}}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/phone-editor/PhoneEditor");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/web/controls/AtomControl","../countries/CountrySelect","@web-atoms/core/dist/core/Bind","@web-atoms/web-controls/dist/basic/MaskedInput"],(function(_export,_context){"use strict";var __awaiter,XNode,AtomControl,CountrySelect,formatForCountry,isdForCountry,Bind,MaskedInput,PhoneEditor;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_countriesCountrySelect){CountrySelect=_countriesCountrySelect.CountrySelect;formatForCountry=_countriesCountrySelect.formatForCountry;isdForCountry=_countriesCountrySelect.isdForCountry},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsWebControlsDistBasicMaskedInput){MaskedInput=_webAtomsWebControlsDistBasicMaskedInput.default}],execute:function(){_export("default",PhoneEditor=class PhoneEditor extends AtomControl{preCreate(){this.country="IN";this.phoneNumberText="";this.value=null;this.render(XNode.create("div",{"data-layout":"row"},XNode.create(CountrySelect,{value:Bind.twoWaysImmediate((()=>this.country))}),XNode.create(MaskedInput,{"data-mask":Bind.oneWayAsync((()=>formatForCountry(this.country))),value:Bind.twoWaysImmediate((()=>this.phoneNumberText))})));this.bindEvent(this.element,"input",(()=>__awaiter(this,void 0,void 0,(function*(){const isdCode=yield isdForCountry(this.country);const phoneNumber=this.phoneNumberText.replace(/[^0-9]/g,"");this.value=isdCode.startsWith("+")?isdCode+phoneNumber:`+${isdCode}${phoneNumber}`}))))}})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/users/SignupPage");System.register(["tslib","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/core/dist/services/FetchBuilder","@web-atoms/core/dist/view-model/Action","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../common/controls/countries/CountrySelect","../../../common/controls/qrcode/QRCode","@web-atoms/core/dist/core/sleep","../../../model/model","../../../common/controls/Loader","@web-atoms/core/dist/core/InjectProperty","../../../services/EntityService","../../../common/controls/phone-editor/PhoneEditor","../../../styles/users/signup.local.less"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,Bind,XNode,Form,FormField,FetchBuilder,Action,ContentPage,isdForCountry,QRCodeControl,sleep,VerificationToken,Loader,InjectProperty,EntityService,PhoneEditor,SignupPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_webAtomsWebControlsDistMobileAppMobileApp){ContentPage=_webAtomsWebControlsDistMobileAppMobileApp.ContentPage},function(_commonControlsCountriesCountrySelect){isdForCountry=_commonControlsCountriesCountrySelect.isdForCountry},function(_commonControlsQrcodeQRCode){QRCodeControl=_commonControlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_modelModel){VerificationToken=_modelModel.VerificationToken},function(_commonControlsLoader){Loader=_commonControlsLoader.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_servicesEntityService){EntityService=_servicesEntityService.default},function(_commonControlsPhoneEditorPhoneEditor){PhoneEditor=_commonControlsPhoneEditorPhoneEditor.default},function(_stylesUsersSignupLocalLess){}],execute:function(){_export("default",SignupPage=class SignupPage extends ContentPage{constructor(){super(...arguments);this.termsAgreed=false;this.model={name:"",username:"",password:"",passwordAgain:"",phoneNumber:"",country:"US",phoneNumberText:"",captcha:VerificationToken.create({type:"captcha",verifyCode:""}),phone:VerificationToken.create({type:"sms",verifyCode:""})}}init(){return __awaiter(this,void 0,void 0,(function*(){this.hideToolbar=true;this.element.className="social-mail-signup-page";this.title="Social Mail Signup";this.renderer=XNode.create("div",null,XNode.create(Loader,null));const{verificationID:id,accessCode}=yield this.entityService.save(this.model.captcha);this.renderer=XNode.create("div",null,XNode.create("div",null,XNode.create("div",{"data-max-width":"size-large"},XNode.create(Form,null,XNode.create(FormField,{label:"Your Name"},XNode.create("input",{autofocus:true,placeholder:"Display Name",value:Bind.twoWaysImmediate((()=>this.model.name))})),XNode.create(FormField,{label:"Email Address"},XNode.create("div",{"data-layout":"row","data-padding":"auto"},XNode.create("input",{"data-border":"none",placeholder:"first-last-name",style:"outline: none",type:"text",value:Bind.twoWaysImmediate((()=>this.model.username))}),XNode.create("span",{text:"@socialmail.me"}))),XNode.create("details",null,XNode.create("summary",null,"Username Policy"),"Please choose username that resembles your real legal name. Any other name will be banned and blocked permanently. And you will not be able to create new username with same phone number as well."),XNode.create(FormField,{label:"Password"},XNode.create("input",{type:"password",value:Bind.twoWaysImmediate((()=>this.model.password))})),XNode.create(FormField,{label:"Password Again"},XNode.create("input",{type:"password",value:Bind.twoWaysImmediate((()=>this.model.passwordAgain))})),XNode.create(FormField,{label:"Phone Number"},XNode.create(PhoneEditor,{value:Bind.twoWaysImmediate((()=>this.model.phoneNumber))})),XNode.create("div",null,"We require phone number verification to prevent misuse and fraud over the email. And it will also help you in setting up two factor authentication to prevent hackers from accessing your private emails."),XNode.create("br",null),XNode.create("br",null),XNode.create(FormField,{label:"Captcha"},XNode.create("img",{src:`/api/users/captcha/${id}/${accessCode}`})),XNode.create(FormField,{label:"Enter 5 Digit Code"},XNode.create("input",{type:"tel",value:Bind.twoWaysImmediate((()=>this.model.captcha.verifyCode))})),XNode.create("div",{"data-layout":"row"},XNode.create("input",{type:"checkbox",checked:Bind.twoWaysImmediate((()=>this.termsAgreed))}),XNode.create("span",{text:"I agree the "}),XNode.create("a",{href:"https://socialmail.in/terms.html",target:"_blank"},"Terms & Conditions")),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"go-button","data-submit-event":"request-phone-verification"},"Signup"))))))}))}requestPhoneVerification(){return __awaiter(this,void 0,void 0,(function*(){const{verificationID,accessCode,verifyCode}=this.model.captcha;const vc=yield this.entityService.invoke(VerificationToken,"verifyCode",this.model.captcha,verificationID,accessCode,verifyCode);if(!vc.verified){throw new Error("Invalid captcha code")}this.model.phone.verifyAddresses=this.model.phoneNumber;const{externalConfig}=yield this.entityService.save(this.model.phone);this.renderer=XNode.create("div",null,XNode.create("div",null,XNode.create("div",{"data-max-width":"size-large"},XNode.create(QRCodeControl,{smsConfig:JSON.parse(externalConfig)}))));const ve=this.model.phone;for(;;){const v=yield this.entityService.query(VerificationToken,"get",ve.verificationID,ve.accessCode).firstOrDefault();if(v.verified){ve.verified=true;ve.verifyCode="verified";break}yield sleep(5e3)}yield this.signup()}))}signup(){return __awaiter(this,void 0,void 0,(function*(){const{model}=this;delete model.phone.addresses;delete model.captcha.addresses;if(!this.termsAgreed){throw new Error("You must agree to Terms & Conditions.")}if(!model.password){throw new Error("Password is required")}if(model.password.length<7){throw new Error("Password is cannot be less than 7 characters")}if(/\s/i.test(model.password)){throw new Error("Password must not any whitespace characters")}const isdCode=yield isdForCountry(model.country);const phoneNumber=model.phoneNumberText.replace(/[^0-9]/g,"");model.phoneNumber=isdCode.startsWith("+")?isdCode+phoneNumber:`+${isdCode}${phoneNumber}`;const{userID}=yield FetchBuilder.post("/api/users/signup").jsonBody(model).asJson();if(userID){location.href="/";return}}))}askPhoneCode(){return __awaiter(this,void 0,void 0,(function*(){this.renderer=XNode.create("div",null,XNode.create("div",null,XNode.create("div",{"data-max-width":"size-large"},XNode.create(QRCodeControl,{smsConfig:this.model.phone.smsConfig}))));do{yield sleep(5e3);yield this.signup()}while(true)}))}});__decorate([InjectProperty,__metadata("design:type",EntityService)],SignupPage.prototype,"entityService",void 0);__decorate([Action({onEvent:"request-phone-verification"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SignupPage.prototype,"requestPhoneVerification",null);__decorate([Action({onEvent:"signup"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SignupPage.prototype,"signup",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/commands/AppCommands");System.register(["@web-atoms/core/dist/core/Command","../../common/commands/CommonCommands"],(function(_export,_context){"use strict";var Command,CommonCommands,AppCommands;_export("default",void 0);return{setters:[function(_webAtomsCoreDistCoreCommand){Command=_webAtomsCoreDistCoreCommand.default},function(_commonCommandsCommonCommands){CommonCommands=_commonCommandsCommonCommands.default}],execute:function(){_export("default",AppCommands=class AppCommands extends CommonCommands{});AppCommands.openHome=Command.create({route:"/",routeOrder:200,openPage:()=>_context.import("../page/home/HomePage")});AppCommands.openMailboxList=Command.create({route:"/mailboxes",routeOrder:100,openPage:()=>_context.import("../../common/pages/mailboxes/MailboxListPage")});AppCommands.openMails=Command.create({route:"/mails",routeOrder:100,openPage:()=>_context.import("../page/mails/MailboxContacts")});AppCommands.signup=Command.create({route:"/social-mail/users/signup",openPage:()=>_context.import("../page/users/SignupPage")})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/style/OverrideAppStyle");System.register(["./override-app-style.local.less"],(function(_export,_context){"use strict";return{setters:[function(_overrideAppStyleLocalLess){}],execute:function(){}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/style/GlobalStyle");System.register(["@web-atoms/core/dist/core/types","@web-atoms/core/dist/core/AtomList","./OverrideAppStyle","@web-atoms/data-styles/data-styles","./global-style.local.less"],(function(_export,_context){"use strict";var UMD,___UMD;function addLinkTag(href,integrity,rel="stylesheet"){if(!document.head.querySelector(`[href="${href}"]`)){const fa=document.createElement("link");fa.href=href;fa.crossOrigin="anonymous";fa.as="style";fa.rel="preload";if(integrity){fa.integrity=integrity}fa.onload=()=>{fa.onload=null;fa.rel=rel};document.head.insertBefore(fa,document.head.firstElementChild)}}return{setters:[function(_webAtomsCoreDistCoreTypes){UMD=_webAtomsCoreDistCoreTypes.UMD},function(_webAtomsCoreDistCoreAtomList){},function(_OverrideAppStyle){},function(_webAtomsDataStylesDataStyles){},function(_globalStyleLocalLess){}],execute:function(){_export("___UMD",___UMD=UMD);addLinkTag("https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap");addLinkTag("https://npm-git.azureedge.net/npm/package/@c8private/fa-icons@6.7.1/css/all.min.css");addLinkTag("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0");addLinkTag("https://cdn.jsdelivr.net/npm/file-icon-vectors@1.0.0/dist/file-icon-vivid.min.css")}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/LoginService");System.register(["tslib","@web-atoms/core/dist/di/DISingleton","@web-atoms/core/dist/di/Inject","./EntityService","../model/model","../common/SocialMailApp","@web-atoms/core/dist/App","@web-atoms/core/dist/core/sleep","@web-atoms/date-time/dist/DateTime"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DISingleton,Inject,EntityService,LoginSession,SocialMailApp,App,sleep,DateTime,LoginService;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistDiDISingleton){DISingleton=_webAtomsCoreDistDiDISingleton.default},function(_webAtomsCoreDistDiInject){Inject=_webAtomsCoreDistDiInject.Inject},function(_EntityService){EntityService=_EntityService.default},function(_modelModel){LoginSession=_modelModel.LoginSession},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_webAtomsCoreDistApp){App=_webAtomsCoreDistApp.App},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default}],execute:function(){LoginService=class LoginService{getUser(){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){(_a=this.user)!==null&&_a!==void 0?_a:this.user=(_b=yield this.entityService.query(LoginSession,"currentUser").firstOrDefault())===null||_b===void 0?void 0:_b.user;SocialMailApp.user=this.user;if((_c=this.user)===null||_c===void 0?void 0:_c.userID){}return this.user}))}login(session,cancelToken){return __awaiter(this,void 0,void 0,(function*(){const result=yield this.entityService.save(session);if(session.invalid){if(session.verificationToken){this.checkSession(session,cancelToken).catch(console.error)}return session.status}location.reload()}))}checkSession(session,cancelToken){return __awaiter(this,void 0,void 0,(function*(){do{yield sleep(5e3);session.dateUpdated=DateTime.now;yield this.entityService.save(session,(c=>c));if(!session.invalid){location.reload()}}while(!(cancelToken===null||cancelToken===void 0?void 0:cancelToken.cancelled))}))}updateRegistration(s){return __awaiter(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}logout(){return __awaiter(this,void 0,void 0,(function*(){const session=yield this.entityService.query(LoginSession,"currentUser").firstOrDefault();session.invalid=true;const cloner=this.entityService.cloner(session);yield this.entityService.save(cloner.copy);yield sleep(1e3);location.reload()}))}enforceLogin(){return __awaiter(this,void 0,void 0,(function*(){const user=yield this.getUser();if(user===null||user===void 0?void 0:user.userID){return}}))}};__decorate([Inject,__metadata("design:type",EntityService)],LoginService.prototype,"entityService",void 0);__decorate([Inject,__metadata("design:type",App)],LoginService.prototype,"app",void 0);LoginService=__decorate([DISingleton()],LoginService);_export("default",LoginService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/user/forgot/ForgotPassword");System.register(["tslib","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../controls/countries/CountrySelect","@web-atoms/web-controls/dist/basic/MaskedInput","@web-atoms/core/dist/services/FetchBuilder","@web-atoms/core/dist/view-model/Action","@web-atoms/core/dist/web/services/PopupService","@web-atoms/web-controls/dist/basic/PasswordBox","../../../apiPath","../../../controls/qrcode/QRCode","@web-atoms/core/dist/core/sleep","./ForgotPassword.local.less"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,Bind,XNode,Form,FormField,ContentPage,CountrySelect,formatForCountry,isdForCountry,MaskedInput,FetchBuilder,Action,PopupService,PasswordBox,apiPath,QRCodeControl,sleep,ForgotPassword,css;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsWebControlsDistMobileAppMobileApp){ContentPage=_webAtomsWebControlsDistMobileAppMobileApp.ContentPage},function(_controlsCountriesCountrySelect){CountrySelect=_controlsCountriesCountrySelect.CountrySelect;formatForCountry=_controlsCountriesCountrySelect.formatForCountry;isdForCountry=_controlsCountriesCountrySelect.isdForCountry},function(_webAtomsWebControlsDistBasicMaskedInput){MaskedInput=_webAtomsWebControlsDistBasicMaskedInput.default},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_webAtomsCoreDistWebServicesPopupService){PopupService=_webAtomsCoreDistWebServicesPopupService.default},function(_webAtomsWebControlsDistBasicPasswordBox){PasswordBox=_webAtomsWebControlsDistBasicPasswordBox.default},function(_apiPath){apiPath=_apiPath.apiPath},function(_controlsQrcodeQRCode){QRCodeControl=_controlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_ForgotPasswordLocalLess){}],execute:function(){css="forgot-password-window";_export("default",ForgotPassword=class ForgotPassword extends ContentPage{constructor(){super(...arguments);this.model={username:"",password:"",passwordAgain:"",phoneNumber:"",country:"US",phoneNumberText:"",phone:{code:""},captcha:{code:""}}}init(){return __awaiter(this,void 0,void 0,(function*(){this.hideToolbar=true;this.title="Reset Password";const{id,accessCode}=this.model.captcha=yield FetchBuilder.put(apiPath("/api/users/captcha")).asJson();this.render(XNode.create("div",{class:css},XNode.create("div",{"data-layout":"center-all"},XNode.create(Form,{"data-border":"frame"},XNode.create("h3",null,"To reset password, enter following."),XNode.create(FormField,{label:"Username"},XNode.create("input",{autofocus:true,value:Bind.twoWaysImmediate((()=>this.model.username))})),XNode.create(FormField,{label:"Phone Number"},XNode.create("div",{"data-layout":"row"},XNode.create(CountrySelect,{value:Bind.twoWaysImmediate((()=>this.model.country))}),XNode.create(MaskedInput,{"data-mask":Bind.oneWayAsync((()=>formatForCountry(this.model.country))),value:Bind.twoWaysImmediate((()=>this.model.phoneNumberText))}))),XNode.create(FormField,{label:"Captcha"},XNode.create("img",{src:apiPath(`/api/users/captcha/${id}/${accessCode}`)})),XNode.create(FormField,{label:"Enter 5 Digit Code"},XNode.create("input",{type:"tel",value:Bind.twoWaysImmediate((()=>this.model.captcha.code))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"go-button","data-submit-event":"ask-code"},"Next"))))))}))}resetPassword(){return __awaiter(this,void 0,void 0,(function*(){const{model}=this;if(model.phone.verified){if(!model.password){throw new Error("Password is required")}}if(model.password){if(model.password.length<7){throw new Error("Password is cannot be less than 7 characters")}if(/\s/i.test(model.password)){throw new Error("Password must not any whitespace characters")}if(model.passwordAgain!==model.password){throw new Error("Passwords do not match")}}const isdCode=yield isdForCountry(model.country);const phoneNumber=model.phoneNumberText.replace(/[^0-9]/g,"");model.phoneNumber=isdCode.startsWith("+")?isdCode+phoneNumber:`+${isdCode}${phoneNumber}`;const{userID,phone,captcha}=yield FetchBuilder.post(apiPath("/api/users/password/reset/")).jsonBody(this.model).asJson();if(captcha===null||captcha===void 0?void 0:captcha.verified){model.captcha.verified=captcha.verified}if(userID){yield PopupService.alert({message:"Password has been reset successfully, please login with your new password."});location.href="/";return}if(phone.verified){this.model.phone.verified=phone.verified;this.askPasswords();return}if(phone.id){this.model.phone.id=phone.id;this.model.phone.smsConfig=phone.smsConfig}yield this.askCode()}))}askCode(){return __awaiter(this,void 0,void 0,(function*(){this.renderer=XNode.create("div",{class:css},XNode.create("div",{"data-layout":"center-all"},XNode.create(QRCodeControl,{smsConfig:this.model.phone.smsConfig})));yield sleep(3e3);yield this.resetPassword()}))}askPasswords(){this.renderer=XNode.create("div",{class:css},XNode.create("div",{"data-layout":"center-all"},XNode.create(Form,{"data-border":"frame"},XNode.create("h3",null,"Enter new password."),XNode.create(FormField,{label:"Password"},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.password))})),XNode.create(FormField,{label:"Password Again"},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.passwordAgain))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"go-button","data-submit-event":"ask-code"},"Next")))))}});__decorate([Action({onEvent:"ask-code"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ForgotPassword.prototype,"resetPassword",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/TestMode");System.register([],(function(_export,_context){"use strict";var AppLocation;return{setters:[],execute:function(){_export("AppLocation",AppLocation={isLocalTesting:/^\d+\.\d+\.\d+\.\d+$/.test(location.hostname)})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/user/login/LoginPage");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/mobile-app/MobileApp","@web-atoms/web-controls/dist/basic/FormField","../../../../model/model","@web-atoms/core/dist/core/Bind","@web-atoms/web-controls/dist/basic/PasswordBox","@web-atoms/core/dist/view-model/Action","@web-atoms/core/dist/core/InjectProperty","../../../../services/LoginService","../../../controls/password/PasswordStrength","../../../validators/Validators","../../../controls/buttons/IconButton","@web-atoms/web-controls/dist/PageNavigator","../forgot/ForgotPassword","@web-atoms/core/dist/web/services/PopupService","../../../form/AppForm","../../../../web/commands/AppCommands","@web-atoms/date-time/dist/DateTime","../../../controls/qrcode/QRCode","@web-atoms/core/dist/core/types","../../../TestMode"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,ContentPage,FormField,LoginSession,Bind,PasswordBox,Action,InjectProperty,LoginService,PasswordStrength,Validators,SaveIconTextButton,PageNavigator,ForgotPassword,PopupService,AppForm,AppCommands,DateTime,QRCode,CancelToken,AppLocation,LoginPage,isSocialMail;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistMobileAppMobileApp){ContentPage=_webAtomsWebControlsDistMobileAppMobileApp.ContentPage},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_modelModel){LoginSession=_modelModel.LoginSession},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsWebControlsDistBasicPasswordBox){PasswordBox=_webAtomsWebControlsDistBasicPasswordBox.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_servicesLoginService){LoginService=_servicesLoginService.default},function(_controlsPasswordPasswordStrength){PasswordStrength=_controlsPasswordPasswordStrength.default},function(_validatorsValidators){Validators=_validatorsValidators.Validators},function(_controlsButtonsIconButton){SaveIconTextButton=_controlsButtonsIconButton.SaveIconTextButton},function(_webAtomsWebControlsDistPageNavigator){PageNavigator=_webAtomsWebControlsDistPageNavigator.default},function(_forgotForgotPassword){ForgotPassword=_forgotForgotPassword.default},function(_webAtomsCoreDistWebServicesPopupService){PopupService=_webAtomsCoreDistWebServicesPopupService.default},function(_formAppForm){AppForm=_formAppForm.default},function(_webCommandsAppCommands){AppCommands=_webCommandsAppCommands.default},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default},function(_controlsQrcodeQRCode){QRCode=_controlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreTypes){CancelToken=_webAtomsCoreDistCoreTypes.CancelToken},function(_TestMode){AppLocation=_TestMode.AppLocation}],execute:function(){isSocialMail=/socialmail\.(me|in)/i.test(location.href)||AppLocation.isLocalTesting;_export("default",LoginPage=class LoginPage extends ContentPage{constructor(){super(...arguments);this.password="";this.ct=new CancelToken}init(){return __awaiter(this,void 0,void 0,(function*(){this.footerRenderer=()=>XNode.create("div",{"data-layout":"row"},XNode.create("a",{target:"_blank","data-margin-left":"auto",href:"https://socialmail.me"},"Social Mail"));this.hideToolbar=true;this.model=LoginSession.create({});this.model.userName="";this.model.checkPassword="";this.model.timeToken="";this.model.oneTimePassword="";this.render(XNode.create("div",null,XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("h3",null,"Sign in to continue"),XNode.create(FormField,{label:"Username"},XNode.create("input",{autofocus:true,value:Bind.twoWaysImmediate((()=>this.model.userName))})),XNode.create(FormField,{label:"Password"},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.checkPassword))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"data-layout":"accent-button","data-submit-event":"login",text:"Login"})),isSocialMail&&XNode.create("div",{"data-layout":"row"},XNode.create("span",{"data-click-event":"forgot-password","data-layout":"link"},"Forgot password?")),isSocialMail&&XNode.create("div",{"data-layout":"row"},XNode.create("a",{"data-click-event":"route",href:AppCommands.signup.displayRoute({})},"Sign Up"))))))}))}login(){var _a;return __awaiter(this,void 0,void 0,(function*(){this.model.dateUpdated=DateTime.now;(_a=this.ct)===null||_a===void 0?void 0:_a.cancel();this.ct=new CancelToken;const status=yield this.userService.login(this.model,this.ct);if(!status){return}if(status==="change-password"){yield this.showChangePassword();return}this.showOtherFactors()}))}showOtherFactors(){const smsConfig=this.model.verificationToken;if(!smsConfig.smsConfig){this.showAuthenticator();return}this.renderer=XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create(QRCode,{smsConfig:smsConfig.smsConfig}),XNode.create("h4",null,"OR"),XNode.create("h4",null,XNode.create("label",{"event-click":()=>this.showAuthenticator(),"data-layout":"link"},"Enter Authenticator Code"))))}showAuthenticator(){var _a;(_a=this.ct)===null||_a===void 0?void 0:_a.cancel();this.ct=null;this.renderer=XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("h4",null,"Enter Authenticator Code"),XNode.create(FormField,{label:"Code"},XNode.create("input",{autofocus:true,type:"tel",value:Bind.twoWaysImmediate((()=>this.model.timeToken))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"event-click":()=>this.showOTP(),"data-layout":"link"},"Enter One Time Password instead.")),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"event-click":()=>this.login(),text:"Go"}))))}showOTP(){this.renderer=XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("h4",null,"Enter One Time Password"),XNode.create(FormField,{label:"Password"},XNode.create("input",{autofocus:true,type:"tel",value:Bind.twoWaysImmediate((()=>this.model.oneTimePassword))})),XNode.create("div",{"data-layout":"row"},XNode.create("button",{"event-click":()=>this.showOtherFactors(),"data-layout":"link"},"Enter Authenticator Code instad.")),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"event-click":()=>this.login(),text:"Go"}))))}showChangePassword(){return __awaiter(this,void 0,void 0,(function*(){this.model.newPassword="";this.renderer=XNode.create("div",null,XNode.create("div",{"data-layout":"center-all"},XNode.create(AppForm,null,XNode.create("div",null,"Update your password, your one time password is expired."),XNode.create(FormField,{label:"Password",autofocus:true,required:true,error:Bind.oneWay((()=>Validators.isValidPassword(this.password)?"":"Password must contain one symbol, one number and should be minimum 7 characters"))},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.password))})),XNode.create(PasswordStrength,{password:Bind.oneWay((()=>this.password))}),XNode.create(FormField,{label:"Password Again",required:true,error:Bind.oneWay((()=>this.model.newPassword!==this.password?"Passwords do not match":""))},XNode.create(PasswordBox,{value:Bind.twoWaysImmediate((()=>this.model.newPassword))})),XNode.create("div",{"data-layout":"command-row"},XNode.create("button",{"data-submit-event":"login",text:"Change Password & Login"})))))}))}forgotPassword(){return __awaiter(this,void 0,void 0,(function*(){if(isSocialMail){PageNavigator.openPage(ForgotPassword);return}yield PopupService.alert({message:"Please contact your administrator"})}))}});__decorate([InjectProperty,__metadata("design:type",LoginService)],LoginPage.prototype,"userService",void 0);__decorate([Action({onEvent:"login"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],LoginPage.prototype,"login",null);__decorate([Action({onEvent:"forgot-password"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],LoginPage.prototype,"forgotPassword",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/menu/MenuItem");System.register(["tslib","@web-atoms/core/dist/core/XNode","./MenuItem.global.less"],(function(_export,_context){"use strict";var __rest,XNode;function MenuItem(_a){var{label,icon=void 0,click=undefined,title=label,description=void 0,href="",commandLink="",target=undefined,bell=void 0,bellTitle=void 0,bellClick=void 0}=_a,a=__rest(_a,["label","icon","click","title","description","href","commandLink","target","bell","bellTitle","bellClick"]);return href||commandLink?XNode.create("a",Object.assign({"data-layout":"menu-item","data-text-decoration":"none",title,"data-click-event":commandLink?"route":void 0,href:href||commandLink,target,"event-click":click},a),icon&&XNode.create("i",{class:icon}),XNode.create("span",{text:label}),description&&XNode.create("small",{text:description}),bell!==void 0&&XNode.create("i",Object.assign({"data-element":"badge",title:bellTitle,class:bell?"fad fa-bell":"fad fa-bell-slash"},typeof bellClick==="string"?{"data-click-event":bellClick}:{"data-click-event":"none","event-click":bellClick}))):XNode.create("div",Object.assign({title,"data-layout":"menu-item","event-click":click},a),icon&&XNode.create("i",{class:icon}),XNode.create("span",{text:label}),description&&XNode.create("small",{text:description}),bell!==void 0&&XNode.create("i",{"data-click-event":bellClick,"data-element":"badge",title:bellTitle,class:bell?"fad fa-bell":"fad fa-bell-slash"}))}_export("default",MenuItem);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_MenuItemGlobalLess){}],execute:function(){}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/menu/MenuRepeater");System.register(["@web-atoms/web-controls/dist/basic/AtomRepeater","./MenuRepeater.global.less"],(function(_export,_context){"use strict";var AtomRepeater,MenuRepeater;_export("default",void 0);return{setters:[function(_webAtomsWebControlsDistBasicAtomRepeater){AtomRepeater=_webAtomsWebControlsDistBasicAtomRepeater.default},function(_MenuRepeaterGlobalLess){}],execute:function(){_export("default",MenuRepeater=class MenuRepeater extends AtomRepeater{constructor(app,e=document.createElement("menu-repeater")){super(app,e)}})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/drawer/BaseDrawer");System.register(["@web-atoms/web-controls/dist/mobile-app/MobileApp","./BaseDrawer.global.less"],(function(_export,_context){"use strict";var Drawer,BaseDrawer;_export("default",void 0);return{setters:[function(_webAtomsWebControlsDistMobileAppMobileApp){Drawer=_webAtomsWebControlsDistMobileAppMobileApp.Drawer},function(_BaseDrawerGlobalLess){}],execute:function(){_export("default",BaseDrawer=class BaseDrawer extends Drawer{constructor(app,e=document.createElement("drawer-menu")){super(app,e)}})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/drawer/AppDrawer");System.register(["tslib","@web-atoms/core/dist/core/XNode","../../common/SocialMailApp","../../common/controls/menu/MenuItem","../commands/AppCommands","@web-atoms/web-controls/dist/basic/Expander","../../common/NumberFormats","@web-atoms/core/dist/view-model/Action","../../common/commands/CommonCommands","../../services/LoginService","../../common/AppUrlService","@web-atoms/core/dist/core/InjectProperty","../../common/menu/MenuService","../../common/controls/menu/MenuRepeater","../../common/controls/drawer/BaseDrawer","@web-atoms/core/dist/core/Bind"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,SocialMailApp,MenuItem,AppCommands,ExpanderMenu,toFileSize,Action,CommonCommands,LoginService,AppUrlService,InjectProperty,MenuService,MenuRepeater,BaseDrawer,Bind,AppDrawer;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_commonControlsMenuMenuItem){MenuItem=_commonControlsMenuMenuItem.default},function(_commandsAppCommands){AppCommands=_commandsAppCommands.default},function(_webAtomsWebControlsDistBasicExpander){ExpanderMenu=_webAtomsWebControlsDistBasicExpander.ExpanderMenu},function(_commonNumberFormats){toFileSize=_commonNumberFormats.toFileSize},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_commonCommandsCommonCommands){CommonCommands=_commonCommandsCommonCommands.default},function(_servicesLoginService){LoginService=_servicesLoginService.default},function(_commonAppUrlService){AppUrlService=_commonAppUrlService.AppUrlService},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_commonMenuMenuService){MenuService=_commonMenuMenuService.default},function(_commonControlsMenuMenuRepeater){MenuRepeater=_commonControlsMenuMenuRepeater.default},function(_commonControlsDrawerBaseDrawer){BaseDrawer=_commonControlsDrawerBaseDrawer.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default}],execute:function(){_export("default",AppDrawer=class AppDrawer extends BaseDrawer{init(){return __awaiter(this,void 0,void 0,(function*(){this.user=SocialMailApp.user;this.renderer=XNode.create("div",null,XNode.create("header",null,SocialMailApp.config.name),XNode.create("section",null,XNode.create(MenuItem,{icon:"fas fa-home",label:"Home",commandLink:AppCommands.openHome.displayRoute({})}),XNode.create(ExpanderMenu,{isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-envelope",label:"Mailboxes",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.mailboxes,itemRenderer:mb=>XNode.create(MenuItem,{commandLink:AppCommands.openMailbox.displayRoute({id:mb.mailboxID}),label:mb.emailAddress.name,description:mb.emailAddress.emailAddress,title:mb.emailAddress.emailAddress})}),XNode.create(MenuItem,{label:"All",commandLink:AppCommands.openMailboxList.displayRoute({})})),XNode.create(ExpanderMenu,{"style-display":Bind.oneWay((()=>this.menuService.channels.length>0)),isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-hard-drive",label:"Channels",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.channels,itemRenderer:mb=>XNode.create(MenuItem,{commandLink:AppCommands.openChannel.displayRoute({id:mb.mailboxID}),label:mb.emailAddress.name,description:mb.emailAddress.emailAddress,title:mb.emailAddress.emailAddress})})),XNode.create(ExpanderMenu,{"style-display":Bind.oneWay((()=>this.menuService.drives.length>0)),isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-hard-drive",label:"Drives",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.drives,itemRenderer:d=>{var _a;return XNode.create(MenuItem,{commandLink:AppCommands.openFiles.displayRoute({id:d.appFileID}),label:d.name,description:`${(_a=d.creator)===null||_a===void 0?void 0:_a.displayName} ${BigInt(d.fileSize)>BigInt(0)?"("+toFileSize(d.fileSize)+")":""}`})}}),XNode.create(MenuItem,{label:"All",commandLink:AppCommands.openDrives.displayRoute({})})),XNode.create(ExpanderMenu,{"style-display":Bind.oneWay((()=>this.menuService.websites.length>0)),isExpanded:true},XNode.create(MenuItem,{icon:"fas fa-hard-drive",label:"Web Sites",commandLink:null}),XNode.create(MenuRepeater,{items:this.menuService.websites,itemRenderer:d=>XNode.create(MenuItem,{href:AppUrlService.editWebSite(d),target:`_web_${d.folderID}`,label:d.folder.name,description:toFileSize(Number(d.folder.fileSize)+Number(d.snapshotStorage))})}),XNode.create(MenuItem,{label:"All",commandLink:AppCommands.openWebSiteList.displayRoute({})})),XNode.create(ExpanderMenu,{isExpanded:false},XNode.create(MenuItem,{icon:"fas fa-gears",label:"Account Settings"}),XNode.create(MenuItem,{label:"Dns Zones",commandLink:CommonCommands.dnsZoneList.displayRoute({})}),!SocialMailApp.config.externalLogin&&XNode.create(MenuItem,{label:"Change Password",commandLink:CommonCommands.changePassword.displayRoute({})}),!SocialMailApp.config.externalLogin&&XNode.create(MenuItem,{label:"Multi Factor",commandLink:CommonCommands.setupMultiFactor.displayRoute({})}),XNode.create(MenuItem,{label:"Access Tokens",commandLink:CommonCommands.accessTokenList.displayRoute({})}),XNode.create(MenuItem,{label:"Logout","data-click-event":"user-logout"}))))}))}userLogout(){return __awaiter(this,void 0,void 0,(function*(){const loginService=this.resolve(LoginService);yield loginService.logout()}))}onClick(none,e){var _a;(_a=this.selected)===null||_a===void 0?void 0:_a.removeAttribute("data-selected");let start=e.target;while(start!==e.currentTarget){if(start.getAttribute("data-layout")==="menu-item"){start.setAttribute("data-selected","true");this.selected=start;break}start=start.parentElement}}});__decorate([InjectProperty,__metadata("design:type",MenuService)],AppDrawer.prototype,"menuService",void 0);__decorate([Action({onEvent:"user-logout"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],AppDrawer.prototype,"userLogout",null);__decorate([Action({onEvent:"click"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,MouseEvent]),__metadata("design:returntype",void 0)],AppDrawer.prototype,"onClick",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/ModuleInfo");System.register(["@web-atoms/core/dist/core/XNode"],(function(_export,_context){"use strict";var XNode,ModuleInfo;return{setters:[function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default}],execute:function(){_export("ModuleInfo",ModuleInfo=typeof moduleInfo==="undefined"?[]:[XNode.create("div",{title:`${moduleInfo.server.package}@${moduleInfo.server.version}`},moduleInfo.server.version)," | ",XNode.create("div",{title:`${moduleInfo.ui.package}@${moduleInfo.ui.version}`},moduleInfo.ui.version)])}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/WebPushService");System.register(["tslib","@web-atoms/core/dist/di/DITransient","@web-atoms/core/dist/di/Inject","./EntityService","../model/model","@web-atoms/core/dist/services/FetchBuilder","../common/apiPath"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DITransient,Inject,EntityService,LoginSession,FetchBuilder,apiPath,WebPushService;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistDiDITransient){DITransient=_webAtomsCoreDistDiDITransient.default},function(_webAtomsCoreDistDiInject){Inject=_webAtomsCoreDistDiInject.Inject},function(_EntityService){EntityService=_EntityService.default},function(_modelModel){LoginSession=_modelModel.LoginSession},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_commonApiPath){apiPath=_commonApiPath.apiPath}],execute:function(){WebPushService=class WebPushService{register(){return __awaiter(this,void 0,void 0,(function*(){try{if(!("serviceWorker"in navigator)){return}const r=yield navigator.serviceWorker.ready;let s=yield r.pushManager.getSubscription();if(!s){s=yield this.createRegistration(r);if(!s){return}}yield this.updateRegistration(s)}catch(error){console.error(error)}}))}createRegistration(r){return __awaiter(this,void 0,void 0,(function*(){const permission=yield Notification.requestPermission();if(permission!=="granted"){return}const{webPush:{publicKey}}=yield FetchBuilder.get(apiPath("/api/push/keys")).asJson();const s=yield r.pushManager.subscribe({userVisibleOnly:true,applicationServerKey:publicKey});return s}))}updateRegistration(s){return __awaiter(this,void 0,void 0,(function*(){const session=yield this.entityService.query(LoginSession,"currentUser").firstOrDefault();session.deviceToken=JSON.stringify(s);session.deviceTokenType="WebPush";const cloner=this.entityService.cloner(session);yield this.entityService.save(cloner.copy)}))}};__decorate([Inject,__metadata("design:type",EntityService)],WebPushService.prototype,"entityService",void 0);WebPushService=__decorate([DITransient()],WebPushService);_export("default",WebPushService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/user/multi-factor/SetupMultiFactorPage");System.register(["tslib","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../../model/model","@web-atoms/core/dist/core/InjectProperty","../services/UserService","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","../../../controls/buttons/IconButton","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/view-model/Action","../../../date/DateFormats","../../../controls/countries/CountrySelect","@web-atoms/web-controls/dist/basic/MaskedInput","../../../controls/qrcode/QRCode","@web-atoms/core/dist/core/sleep","../../../../services/EntityService","@web-atoms/date-time/dist/DateTime"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,PopupWindowPage,UserAuthFactor,InjectProperty,UserService,XNode,Form,AddIconTextButton,SaveIconTextButton,FormField,Bind,Action,DateFormats,CountrySelect,formatForCountry,isdForCountry,MaskedInput,QRCodeControl,sleep,EntityService,DateTime,SetupMultiFactorPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsWebControlsDistMobileAppMobileApp){PopupWindowPage=_webAtomsWebControlsDistMobileAppMobileApp.PopupWindowPage},function(_modelModel){UserAuthFactor=_modelModel.UserAuthFactor},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_servicesUserService){UserService=_servicesUserService.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_controlsButtonsIconButton){AddIconTextButton=_controlsButtonsIconButton.AddIconTextButton;SaveIconTextButton=_controlsButtonsIconButton.SaveIconTextButton},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_dateDateFormats){DateFormats=_dateDateFormats.DateFormats},function(_controlsCountriesCountrySelect){CountrySelect=_controlsCountriesCountrySelect.CountrySelect;formatForCountry=_controlsCountriesCountrySelect.formatForCountry;isdForCountry=_controlsCountriesCountrySelect.isdForCountry},function(_webAtomsWebControlsDistBasicMaskedInput){MaskedInput=_webAtomsWebControlsDistBasicMaskedInput.default},function(_controlsQrcodeQRCode){QRCodeControl=_controlsQrcodeQRCode.default},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_servicesEntityService){EntityService=_servicesEntityService.default},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default}],execute:function(){_export("default",SetupMultiFactorPage=class SetupMultiFactorPage extends PopupWindowPage{constructor(){super(...arguments);this.countryCode="US";this.phoneNumber=""}init(){return __awaiter(this,void 0,void 0,(function*(){this.model=yield this.userService.getCurrent();const{multiFactor}=this.model;this.title="Please setup security";yield this.generateOTP()}))}renderAuthFactor(item){if(item.method==="totp"){return XNode.create("tr",null,XNode.create("td",null,"Authenticator"),XNode.create("td",null,item.hint),XNode.create("td",null,DateFormats.relative.short(item.dateUpdated)),XNode.create("td",null,XNode.create("i",{class:"fas fa-check green"})))}if(item.method==="one-time"){return XNode.create("tr",null,XNode.create("td",null,"OTP"),XNode.create("td",null,item.hint,"*****************"),XNode.create("td",null,DateFormats.relative.short(item.dateUpdated)),XNode.create("td",null,XNode.create("i",{class:"fas fa-check green"})))}return XNode.create("tr",null,XNode.create("td",null,item.method),XNode.create("td",null,item.hint),XNode.create("td",null,DateFormats.relative.short(item.dateUpdated)),XNode.create("td",null,XNode.create("i",{class:"fas fa-check green"})))}addAuthenticator(){return __awaiter(this,void 0,void 0,(function*(){const authFactor=yield this.userService.createAuthFactor(this.model);this.authFactor=authFactor;this.renderer=XNode.create("div",{"data-layout":"center-page-900px"},XNode.create(Form,null,XNode.create(FormField,{label:""},XNode.create("div",null,"Scan following QR Code in any compatible Authenticator App. Enter the generated code and hit the verify button.")),XNode.create(FormField,{label:"Secret"},XNode.create("img",{src:authFactor.qrCodeDataUrl})),XNode.create(FormField,{label:"Code",required:true,error:Bind.oneWay((()=>this.authFactor.token?"":"Code is required"))},XNode.create("input",{type:"tel",value:Bind.twoWaysImmediate((()=>this.authFactor.token))})),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"data-submit-event":"save-auth-factor",text:"Verify"}))))}))}generateOTP(){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){const authList=(_a=(_b=this.model).authFactors)!==null&&_a!==void 0?_a:_b.authFactors=[];let generated=false;const newAuth=[];while(authList.filter((x=>x.method==="one-time")).length<=8){const af=UserAuthFactor.create({method:"one-time"});authList.push(af);newAuth.push(af)}yield this.userService.saveAuthFactors(newAuth);let text="";for(const iterator of authList){if(!(iterator===null||iterator===void 0?void 0:iterator.displaySecret)){continue}generated=true;text+="\r\n"+iterator.displaySecret}if(!generated){yield this.verifyCellPhone();return}text+="\r\n";this.renderer=XNode.create("div",{"data-layout":"center-page-900px"},XNode.create(Form,null,XNode.create(FormField,{label:"One Time Passwords"},XNode.create("div",null,"Please copy and save these one time codes somewhere safe. You can use them if you cannot access Authenticator app.")),XNode.create(FormField,{label:""},XNode.create("textarea",{rows:12,value:text})),XNode.create("div",null,"After copying, setup authenticator to finish."),XNode.create("div",{"data-layout":"command-row"},XNode.create(SaveIconTextButton,{"event-click":()=>this.verifyCellPhone(),text:"Verify Cell Phone"}))))}))}verifyCellPhone(){return __awaiter(this,void 0,void 0,(function*(){const pv=this.model.authFactors.find((x=>x.method==="otp-in"));if(!pv){return yield this.addCellPhone()}if(pv.verified){this.model.multiFactor=true;yield this.userService.save(this.model);this.renderer=XNode.create("div",null,XNode.create("div",null,"Your phone has been verified, you can optionally add",XNode.create("br",null),"Google Authenticator or similar as backup code generator",XNode.create("br",null),"that you can use in case of poor cellular network."),XNode.create("div",null,XNode.create(AddIconTextButton,{"event-click":()=>this.addAuthenticator(),text:"Add Authenticator"})));return}this.renderer=XNode.create("div",null,XNode.create(Form,null,XNode.create(QRCodeControl,{smsConfig:pv.verificationToken.externalConfig})));const es=this.entityService;const id=pv.authFactorID;do{yield sleep(5e3);pv.dateUpdated=DateTime.now;yield es.save(pv,(c=>c));if(pv.verified){break}}while(true);this.model.multiFactor=true;yield this.userService.save(this.model);yield this.verifyCellPhone()}))}addCellPhone(){return __awaiter(this,void 0,void 0,(function*(){this.renderer=XNode.create("div",null,XNode.create(Form,null,XNode.create(FormField,{label:"Phone Number"},XNode.create("div",{"data-layout":"row"},XNode.create(CountrySelect,{value:Bind.twoWaysImmediate((()=>this.countryCode))}),XNode.create(MaskedInput,{mask:Bind.oneWayAsync((()=>formatForCountry(this.countryCode))),value:Bind.twoWaysImmediate((()=>this.phoneNumber))}))),XNode.create("div",null,"In next screen, you will be asked ",XNode.create("br",null)," to verify your phone number.",XNode.create("br",null),XNode.create("br",null),XNode.create("br",null),XNode.create("br",null),XNode.create("br",null)),XNode.create(FormField,{label:""},XNode.create(AddIconTextButton,{"data-submit-event":"add-phone-number"}))))}))}addPhoneNumber(){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){const es=this.entityService;const isdCode=yield isdForCountry(this.countryCode,"+");const phoneNumber=isdCode+this.phoneNumber.replace(/[^\d]/g,"");const uaf=UserAuthFactor.create({userID:this.model.userID,isdCode,phoneNumber,method:"otp-in"});const m=yield es.save(uaf,(c=>c));if(m.verificationToken){uaf.verificationToken=m.verificationToken}((_a=(_b=this.model).authFactors)!==null&&_a!==void 0?_a:_b.authFactors=[]).add(uaf);yield this.verifyCellPhone()}))}enableMultiFactor(){return __awaiter(this,void 0,void 0,(function*(){this.model.multiFactor=true;yield this.userService.save(this.model);yield this.init()}))}saveAuthFactor(){return __awaiter(this,void 0,void 0,(function*(){yield this.userService.verify(this.authFactor);this.model.multiFactor=true;yield this.userService.save(this.model);location.reload()}))}});__decorate([InjectProperty,__metadata("design:type",UserService)],SetupMultiFactorPage.prototype,"userService",void 0);__decorate([InjectProperty,__metadata("design:type",EntityService)],SetupMultiFactorPage.prototype,"entityService",void 0);__decorate([Action({}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"verifyCellPhone",null);__decorate([Action({}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"addCellPhone",null);__decorate([Action({onEvent:"add-phone-number"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"addPhoneNumber",null);__decorate([Action({onEvent:"enable-multi-factor",success:"Multi factor authentication enabled successfully."}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"enableMultiFactor",null);__decorate([Action({onEvent:"save-auth-factor",success:"Multi Factor Login is setup successfully."}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],SetupMultiFactorPage.prototype,"saveAuthFactor",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/AppIndex");System.register(["tslib","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/Pack","@web-atoms/web-controls/dist/desktop-app/MobileDesktopApp","@web-atoms/core/dist/core/Route","@web-atoms/web-controls/dist/PageNavigator","@web-atoms/core/dist/core/Command","./commands/AppCommands","../style/GlobalStyle","../services/LoginService","../common/pages/user/login/LoginPage","./drawer/AppDrawer","../services/files/LocalFileService","../common/controls/ModuleInfo","@web-atoms/core/dist/core/sleep","../services/WebPushService","../common/pages/user/multi-factor/SetupMultiFactorPage","../common/SocialMailApp","./page/users/SignupPage","./page/mails/mini-compose/MiniComposePage","../common/TestMode"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,InjectProperty,XNode,Pack,MobileDesktopApp,Route,PageNavigator,Command,AppCommands,LoginService,LoginPage,AppDrawer,LocalFileService,ModuleInfo,sleep,WebPushService,SetupMultiFactorPage,SocialMailApp,SignupPage,MiniComposePage,AppLocation,_a,_b,_c,_d,AppIndex;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistPack){Pack=_webAtomsCoreDistPack.default},function(_webAtomsWebControlsDistDesktopAppMobileDesktopApp){MobileDesktopApp=_webAtomsWebControlsDistDesktopAppMobileDesktopApp.default},function(_webAtomsCoreDistCoreRoute){Route=_webAtomsCoreDistCoreRoute.default},function(_webAtomsWebControlsDistPageNavigator){PageNavigator=_webAtomsWebControlsDistPageNavigator.default},function(_webAtomsCoreDistCoreCommand){Command=_webAtomsCoreDistCoreCommand.default},function(_commandsAppCommands){AppCommands=_commandsAppCommands.default},function(_styleGlobalStyle){},function(_servicesLoginService){LoginService=_servicesLoginService.default},function(_commonPagesUserLoginLoginPage){LoginPage=_commonPagesUserLoginLoginPage.default},function(_drawerAppDrawer){AppDrawer=_drawerAppDrawer.default},function(_servicesFilesLocalFileService){LocalFileService=_servicesFilesLocalFileService.default},function(_commonControlsModuleInfo){ModuleInfo=_commonControlsModuleInfo.ModuleInfo},function(_webAtomsCoreDistCoreSleep){sleep=_webAtomsCoreDistCoreSleep.default},function(_servicesWebPushService){WebPushService=_servicesWebPushService.default},function(_commonPagesUserMultiFactorSetupMultiFactorPage){SetupMultiFactorPage=_commonPagesUserMultiFactorSetupMultiFactorPage.default},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_pageUsersSignupPage){SignupPage=_pageUsersSignupPage.default},function(_pageMailsMiniComposeMiniComposePage){MiniComposePage=_pageMailsMiniComposeMiniComposePage.default},function(_commonTestMode){AppLocation=_commonTestMode.AppLocation}],execute:function(){(_a=(_c=Symbol).asyncDispose)!==null&&_a!==void 0?_a:_c.asyncDispose=Symbol("asyncDispose");(_b=(_d=Symbol).dispose)!==null&&_b!==void 0?_b:_d.dispose=Symbol("dispose");AppIndex=class AppIndex extends MobileDesktopApp{init(){return __awaiter(this,void 0,void 0,(function*(){AppCommands.install(this);this.resolve(LocalFileService);const currentUser=yield this.userService.getUser();if(!currentUser){if(SocialMailApp.config.externalLogin){location.href=SocialMailApp.config.externalLogin}if(/\/signup$/i.test(location.href)||/\/signup\//i.test(location.href)){PageNavigator.openPage(SignupPage);return}PageNavigator.openPage(LoginPage);return}this.drawerMenu=AppDrawer;while(!currentUser.multiFactor){yield PageNavigator.pushPageForResultOrCancel(SetupMultiFactorPage)}if(!Command.invokeRoute()){AppCommands.openHome.dispatch()}if(this.desktopApp){this.desktopApp.statusBarRenderer=()=>{var _a;return XNode.create("div",{"data-layout":"row"},((_a=currentUser.roles)===null||_a===void 0?void 0:_a.find((x=>/^admin/i.test(x.roleName))))&&XNode.create("a",{href:"/admin",target:"_blank"},"Admin"),XNode.create("div",{"data-flex":"stretch-full"}),...ModuleInfo)}}const url=new URL(location.href);const mailto=url.searchParams.get("mailto");if(mailto){PageNavigator.pushPage(MiniComposePage,{asAttachment:false,thread:{},mailto})}yield sleep(500);yield this.resolve(WebPushService).register()}))}};__decorate([InjectProperty,__metadata("design:type",LoginService)],AppIndex.prototype,"userService",void 0);AppIndex=__decorate([Pack],AppIndex);_export("default",AppIndex);Route.encodeUrl=url=>{if(url.startsWith("#")){return url}if(AppLocation.isLocalTesting){return"#!"+url}return url}}}}));window.installStyleSheet(new URL("./AppIndex.pack.global.less.css",document.currentScript.src).toString());window.installStyleSheet(new URL("./AppIndex.pack.local.less.css",document.currentScript.src).toString());
|
|
146
146
|
//# sourceMappingURL=AppIndex.pack.min.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@social-mail/social-mail-client",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.41",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"@web-atoms/email-dom": "^1.0.33",
|
|
20
20
|
"@web-atoms/entity": "^2.4.76",
|
|
21
21
|
"@web-atoms/module-loader": "^2.1.56",
|
|
22
|
-
"@web-atoms/pack": "^1.0.
|
|
22
|
+
"@web-atoms/pack": "^1.0.99",
|
|
23
23
|
"@web-atoms/web-controls": "^2.4.62",
|
|
24
24
|
"reflect-metadata": "^0.1.13",
|
|
25
25
|
"tinycolor2": "^1.6.0"
|