Files
ambersplace.net/cohost-archive/static/client-preact-components-pages-signup.9cf0c1a9da40b6689211.js

2 lines
11 KiB
JavaScript

"use strict";(self.__LOADABLE_LOADED_CHUNKS__=self.__LOADABLE_LOADED_CHUNKS__||[]).push([[8391],{68248:function(e,t,a){a.d(t,{Z:function(){return r}});class r{static async getSalt(e){const t=new URL("/api/v1/login/salt",document.URL);return t.searchParams.append("email",e),(await fetch(t.toString()).then((e=>e.json().then((e=>e))))).salt}static async hashPasswordInWorker(e,t,r){const n=new Worker(new URL(a.p+a.u(3639),a.b));return new Promise((a=>{n.onmessage=e=>{a(e.data.clientHash)},n.postMessage({email:e,password:r,salt:t})}))}}},72228:function(e,t,a){a.d(t,{F:function(){return m}});var r=a(97244),n=a(34377),l=a(65443),s=a.n(l),o=a(94159),i=a(99838);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},c.apply(this,arguments)}const m=({style:e="light",showValidity:t=!0,name:a,control:l,rules:m,trigger:d,...u})=>{const{field:p,fieldState:g}=(0,i.bc)({name:a,control:l,rules:m}),{name:h,onChange:y}=p,[f,b]=(0,o.useState)();(0,o.useEffect)((()=>{p.ref(f)}),[f,p]);const{inputStyleClasses:w,contentDivStyleClasses:E,validityIconStyleClasses:v}=(0,o.useMemo)((()=>{switch(e){case"light":return{inputStyleClasses:"border-gray-600 text-notBlack\n placeholder:text-gray-600\n focus:border-notBlack disabled:border-gray-300",contentDivStyleClasses:"to-notWhite",validityIconStyleClasses:"bg-notWhite"};case"dynamic":return{inputStyleClasses:"co-styled-input",contentDivStyleClasses:"co-styled-input-content",validityIconStyleClasses:"co-styled-input-validity-icon"};default:return{inputStyleClasses:"border-gray-400 text-notWhite \n placeholder:text-gray-400\n focus:border-notWhite read-only:bg-gray-700",contentDivStyleClasses:"to-notBlack",validityIconStyleClasses:"bg-notBlack"}}}),[e]);return(0,o.useEffect)((()=>{f&&f.value&&f.value!==u.defaultValue&&f.value!==p.value&&!g.isTouched&&(y(f.value),d(h,{shouldFocus:!0}))}),[f,p.value,h,g.isTouched,y,u.defaultValue,d]),o.createElement("div",{className:"relative"},o.createElement("input",c({className:s()("\n w-full min-w-[15rem] rounded-lg border-2 bg-transparent\n ",w)},u,p,{ref:b})),t&&!u.readOnly&&g.isTouched?o.createElement(o.Fragment,null,o.createElement("div",{className:s()("\n absolute bottom-0 right-9 top-0 my-auto h-6 w-3 \n bg-gradient-to-r from-transparent\n ",E)}),g.invalid?o.createElement(r.Z,{className:s()("\n absolute bottom-0 right-3 top-0 my-auto h-6 \n w-6 text-red\n ",v)}):o.createElement(n.Z,{className:s()("\n absolute bottom-0 right-3 top-0 my-auto h-6\n w-6 bg-notWhite text-green\n ",v)})):null)}},34645:function(e,t,a){a.r(t),a.d(t,{Signup:function(){return _},default:function(){return Z}});var r=a(12093),n=a(15867),l=a(87836),s=a(95024),o=a(94159),i=a(90275),c=a(51028),m=a(70069),d=a(68248),u=a(76608),p=a.n(u),g=a(86036),h=a.n(g),y=a(64152),f=a.n(y),b=a(84879),w=a(50894),E=a.n(w),v=a(99838),x=a(67920),N=a(6553),C=a(28922),S=a(21161),k=a(71860),P=a(40196);const O=new(f()),T=b.ou.now().minus({years:16}),I=({inviteCode:e})=>{const{t:t}=(0,c.$G)(),{isServer:a}=(0,x.NS)(),n=(0,o.useMemo)((()=>a?"":E()({alliterative:O.d10()<3,words:O.integer({min:2,max:4})}).dashed),[a]),[l,s]=(0,o.useState)(!1),[,i]=(0,o.useState)(!1),{HCAPTCHA_SITE_KEY:m}=(0,P.N)(),u=(0,o.useRef)(null),{register:g,handleSubmit:y,getValues:f,setValue:w,control:I,trigger:_,formState:{errors:Z}}=(0,v.cI)({mode:"all",defaultValues:{inviteCode:e}}),q=k.S.projects.checkHandle.useMutation();(0,o.useEffect)((()=>{g("hCaptchaToken",{required:t("client:register.captcha.required","Please complete the captcha.").toString()})}));const D=(0,v.qo)({control:I}),L=D.birthdate,W=Math.abs(b.ou.fromISO(D.birthdate??b.ou.now().toISODate()).diffNow("years").years)<18;return o.createElement(S.Z,{fallback:o.createElement("div",{className:"prose prose-invert text-notWhite"},o.createElement("p",null,"Loading..."),o.createElement("p",null,"If you keep seeing this, try refreshing!"))},o.createElement("form",{onSubmit:y((async t=>{s(!0),await(u.current?.execute({async:!0}));const a=await d.Z.getSalt(t.email),n=await d.Z.hashPasswordInWorker(t.email,a,t.password),l=new URLSearchParams({handle:t.handle,salt:a,clientHash:n,email:t.email,birthdate:t.birthdate,"h-captcha-response":t.hCaptchaToken});e&&l.set("inviteCode",e),201===(await h().post(r.ZP.public.apiV1.register().toString(),l)).status&&location.replace("/"),s(!1)})),className:"py flex flex-col gap-6"},o.createElement("h1",{className:"font-league text-2xl"},"Register"),o.createElement("div",{className:"flex flex-col gap-2"},o.createElement("label",{className:"text-lg"},o.createElement("p",{className:"my-2 text-lg"},t("client:register.handle.label")),o.createElement(C.y,{trigger:_,placeholder:n,type:"text",name:"handle",control:I,rules:{required:"Handle is required!",validate:async e=>{try{const t=await q.mutateAsync({handle:e});return!0===t.valid||t.reason}catch(e){return t("common:unknown-error").toString()}}}}),o.createElement("p",{className:"my-2 text-sm"},t("client:register.handle.description","Must be at least 3 characters and contain only letters, numbers, or the hyphen (-) character. You can change this later!"))),o.createElement("p",{className:"text-red",role:"alert"},Z.handle?Z.handle.message:null)),o.createElement("div",{className:"flex flex-col gap-2"},o.createElement("label",null,o.createElement("p",{className:"my-2 text-lg"},t("client:register.email.label")),o.createElement(C.y,{trigger:_,type:"email",placeholder:"bradley@example.com",autoComplete:"email",name:"email",control:I,rules:{required:"E-mail address is required!",validate:async e=>{try{i(!0);const t=await h().post(r.ZP.public.apiV1.checkEmail().toString(),{email:e},{responseType:"json"});return i(!1),!0===t.data.valid||t.data.reason}catch(e){return i(!1),t("common:unknown-error").toString()}}}}),o.createElement("p",{className:"my-2 text-sm"},t("client:register.email.description","You'll use this to login! We will never email you without your permission."))),o.createElement("p",{className:"text-red",role:"alert"},Z.email?Z.email.message:null)),o.createElement("div",{className:"flex flex-col gap-2"},o.createElement("p",{className:"text-lg"},t("client:register.password.label")),o.createElement(C.y,{trigger:_,type:"password",autoComplete:"new-password",placeholder:"hunter2",name:"password",control:I,rules:{required:t("client:register.password.required","Password is required!").toString(),minLength:{value:8,message:t("client:register.password.min-length","Password must be at least 8 characters!").toString()}},"aria-label":"password"}),o.createElement("p",{className:"text-red",role:"alert"},Z.password?Z.password.message:null),o.createElement(C.y,{trigger:_,type:"password",placeholder:"hunter2",autoComplete:"new-password",control:I,name:"passwordConfirm",rules:{validate:e=>e===f().password||t("client:register.password.confirm-password-mismatch","Passwords must match!").toString()},"aria-label":"confirm password"}),o.createElement("p",{className:"text-sm"},t("client:register.password.description","Your password must be at least 8 characters. Other than that, go wild.")),o.createElement("p",{className:"text-sm"},o.createElement(c.cC,{i18nKey:"client:register.password.password-manager"},"Please consider"," ",o.createElement("a",{rel:"noopener noreferrer",target:"_blank",className:"font-bold text-mango hover:underline",href:"https://www.consumerreports.org/digital-security/everything-you-need-to-know-about-password-managers-a5624939418/"},"using a password manager")," ","to generate a secure password.")),o.createElement("p",{className:"text-red",role:"alert"},Z.passwordConfirm?Z.passwordConfirm.message:null)),D.inviteCode?o.createElement("div",{className:"flex flex-col gap-2"},o.createElement("label",{htmlFor:"inviteCode",className:"text-lg"},t("client:register.invite-code.label","invite code")),o.createElement(C.y,{trigger:_,type:"text",name:"inviteCode",readOnly:!0,control:I}),o.createElement(c.cC,{i18nKey:"client:register.invite-code.description"},o.createElement("p",{className:"text-sm"},"You're signing up with an invite code! You'll be able to post immediately!"))):null,o.createElement("label",{className:"flex flex-col gap-2"},o.createElement("p",{className:"text-lg"},t("client:register.birthdate.label","date of birth")),o.createElement(C.y,{trigger:_,type:"date",autoComplete:"bday",max:T.toISODate(),name:"birthdate",rules:{required:"Birthdate is required!",max:T.toISODate()},control:I}),o.createElement("p",{className:"text-sm"},t("client:register.birthdate.description","You must be 16 or older to use cohost.")),L&&W?o.createElement("p",{className:"text-sm"},t("client:register.birthdate.under-18","If you're under 18, your legal guardian must also agree to the terms of service.")):null,o.createElement("p",{className:"text-red",role:"alert"},Z.birthdate?Z.birthdate.message:null)),o.createElement("div",{className:"flex flex-col gap-2"},o.createElement(p(),{sitekey:m,onVerify:e=>{w("hCaptchaToken",e),_("hCaptchaToken")},onExpire:()=>{w("hCaptchaToken",""),_("hCaptchaToken")},ref:u,theme:"dark"}),o.createElement("p",{className:"text-red"},Z.hCaptchaToken?Z.hCaptchaToken.message:null)),o.createElement("div",{className:"flex flex-col gap-2"},o.createElement("p",{className:"text-sm"},"I accept the"," ",o.createElement("a",{href:r.ZP.public.staticContent({slug:"tos"}).toString(),className:"font-bold text-mango-500 hover:underline"},"Terms of Use")," ","and"," ",o.createElement("a",{href:r.ZP.public.staticContent({slug:"privacy"}).toString(),className:"font-bold text-mango-500 hover:underline"},"Privacy Notice"),", and agree to abide by the"," ",o.createElement("a",{href:r.ZP.public.staticContent({slug:"community-guidelines"}).toString(),className:"font-bold text-mango-500 hover:underline"},"Community Guidelines"),"."),o.createElement(N.p,{type:"submit",disabled:l},t("common:sign-up")))))},_=({inviteCode:e})=>{const t=(0,s.useFlag)(n.T.enum["disable-account-signup"]);return o.createElement(o.Fragment,null,o.createElement(i.ql,{title:"sign up"}),o.createElement(m.L,{className:"-ml-6 text-notWhite lg:-ml-12"}),t?o.createElement(c.cC,{parent:"p",className:"prose text-notWhite",i18nKey:"client:register.disabled"},"cohost will be entering read-only mode on October 1st and will be shutting down at the end of 2024. we have disabled sign-ups. please check"," ",o.createElement("a",{href:r.ZP.public.project.mainAppProfile({projectHandle:"staff"}).toString()},"@staff")," ","for more information."):o.createElement(I,{inviteCode:e}),o.createElement("a",{href:r.ZP.public.welcome().toString(),className:"flex items-center gap-1 text-mango hover:underline"},o.createElement(l.Z,{className:"h-6 w-6"}),"Back"))};_.displayName="signup";var Z=_},28922:function(e,t,a){a.d(t,{y:function(){return s}});var r=a(94159),n=a(72228);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},l.apply(this,arguments)}const s=({...e})=>r.createElement(n.F,l({style:"dark"},e))}}]);
//# sourceMappingURL=client-preact-components-pages-signup.9cf0c1a9da40b6689211.js.map