@@ -10,7 +10,6 @@ import {
1010
1111import Ape from "./ape" ;
1212import { updateFromServer as updateConfigFromServer } from "./config" ;
13- import { navigate } from "./controllers/route-controller" ;
1413import * as DB from "./db" ;
1514import * as Notifications from "./elements/notifications" ;
1615import {
@@ -26,18 +25,16 @@ import {
2625import * as RegisterCaptchaModal from "./modals/register-captcha" ;
2726import { showPopup } from "./modals/simple-modals-base" ;
2827import * as AuthEvent from "./observables/auth-event" ;
29- import * as LoginPage from "./pages/login" ;
3028import * as Sentry from "./sentry" ;
3129import { showLoaderBar , hideLoaderBar } from "./signals/loader-bar" ;
3230import * as ConnectionState from "./states/connection" ;
3331import { addBanner } from "./stores/banners" ;
34- import { qs , qsa } from "./utils/dom" ;
3532import * as Misc from "./utils/misc" ;
3633
3734export const gmailProvider = new GoogleAuthProvider ( ) ;
3835export const githubProvider = new GithubAuthProvider ( ) ;
3936
40- async function sendVerificationEmail ( ) : Promise < void > {
37+ export async function sendVerificationEmail ( ) : Promise < void > {
4138 if ( ! isAuthAvailable ( ) ) {
4239 Notifications . add ( "Authentication uninitialized" , - 1 , {
4340 duration : 3 ,
@@ -46,9 +43,7 @@ async function sendVerificationEmail(): Promise<void> {
4643 }
4744
4845 showLoaderBar ( ) ;
49- qs ( ".sendVerificationEmail" ) ?. disable ( ) ;
5046 const response = await Ape . users . verificationEmail ( ) ;
51- qs ( ".sendVerificationEmail" ) ?. enable ( ) ;
5247 if ( response . status !== 200 ) {
5348 hideLoaderBar ( ) ;
5449 Notifications . add ( "Failed to request verification email" , - 1 , { response } ) ;
@@ -97,8 +92,6 @@ async function getDataAndInit(): Promise<boolean> {
9792 return true ;
9893 } catch ( error ) {
9994 console . error ( error ) ;
100- LoginPage . enableInputs ( ) ;
101- qs ( "header nav .view-account" ) ?. setStyle ( { opacity : "1" } ) ;
10295 if ( error instanceof DB . SnapshotInitError ) {
10396 if ( error . responseCode === 429 ) {
10497 Notifications . add (
@@ -155,127 +148,95 @@ export async function onAuthStateChanged(
155148 void Sentry . clearUser ( ) ;
156149 }
157150
158- let keyframes = [
159- {
160- percentage : 90 ,
161- durationMs : 1000 ,
162- text : "Downloading user data..." ,
163- } ,
164- ] ;
165-
166- //undefined means navigate to whatever the current window.location.pathname is
167- await navigate ( undefined , {
168- force : true ,
169- loadingOptions : {
170- loadingMode : ( ) => {
171- if ( user !== null ) {
172- return "sync" ;
173- } else {
174- return "none" ;
175- }
176- } ,
177- loadingPromise : async ( ) => {
178- await userPromise ;
179- } ,
180- style : "bar" ,
181- keyframes : keyframes ,
182- } ,
183- } ) ;
184-
185151 AuthEvent . dispatch ( {
186152 type : "authStateChanged" ,
187- data : { isUserSignedIn : user !== null } ,
153+ data : { isUserSignedIn : user !== null , loadPromise : userPromise } ,
188154 } ) ;
189155}
190156
191- export async function signIn ( email : string , password : string ) : Promise < void > {
157+ export async function signIn (
158+ email : string ,
159+ password : string ,
160+ rememberMe : boolean ,
161+ ) : Promise <
162+ | {
163+ success : true ;
164+ }
165+ | {
166+ success : false ;
167+ message : string ;
168+ }
169+ > {
192170 if ( ! isAuthAvailable ( ) ) {
193- Notifications . add ( "Authentication uninitialized" , - 1 ) ;
194- return ;
195- }
196- if ( ! ConnectionState . get ( ) ) {
197- Notifications . add ( "You are offline" , 0 , {
198- duration : 2 ,
199- } ) ;
200- return ;
171+ return { success : false , message : "Authentication uninitialized" } ;
201172 }
202173
203- LoginPage . showPreloader ( ) ;
204- LoginPage . disableInputs ( ) ;
205- LoginPage . disableSignUpButton ( ) ;
206-
207- if ( email === "" || password === "" ) {
208- Notifications . add ( "Please fill in all fields" , 0 ) ;
209- LoginPage . hidePreloader ( ) ;
210- LoginPage . enableInputs ( ) ;
211- LoginPage . enableSignUpButton ( ) ;
212- return ;
213- }
214-
215- const rememberMe =
216- qs < HTMLInputElement > ( ".pageLogin .login #rememberMe input" ) ?. isChecked ( ) ??
217- false ;
218-
219174 const { error } = await tryCatch (
220175 signInWithEmailAndPassword ( email , password , rememberMe ) ,
221176 ) ;
222177
223178 if ( error !== null ) {
224- Notifications . add ( error . message , - 1 ) ;
225- LoginPage . hidePreloader ( ) ;
226- LoginPage . enableInputs ( ) ;
227- LoginPage . updateSignupButton ( ) ;
228- return ;
179+ return { success : false , message : error . message } ;
229180 }
181+ return { success : true } ;
230182}
231183
232- async function signInWithProvider ( provider : AuthProvider ) : Promise < void > {
184+ async function signInWithProvider (
185+ provider : AuthProvider ,
186+ rememberMe : boolean ,
187+ ) : Promise <
188+ | {
189+ success : true ;
190+ }
191+ | {
192+ success : false ;
193+ message : string ;
194+ }
195+ > {
233196 if ( ! isAuthAvailable ( ) ) {
234- Notifications . add ( "Authentication uninitialized" , - 1 , {
235- duration : 3 ,
236- } ) ;
237- return ;
238- }
239- if ( ! ConnectionState . get ( ) ) {
240- Notifications . add ( "You are offline" , 0 , {
241- duration : 2 ,
242- } ) ;
243- return ;
197+ return { success : false , message : "Authentication uninitialized" } ;
244198 }
245199
246- LoginPage . showPreloader ( ) ;
247- LoginPage . disableInputs ( ) ;
248- LoginPage . disableSignUpButton ( ) ;
249- const rememberMe =
250- qs < HTMLInputElement > ( ".pageLogin .login #rememberMe input" ) ?. isChecked ( ) ??
251- false ;
252-
253200 const { error } = await tryCatch ( signInWithPopup ( provider , rememberMe ) ) ;
254201
255202 if ( error !== null ) {
256203 if ( error . message !== "" ) {
257204 Notifications . add ( error . message , - 1 ) ;
258205 }
259- LoginPage . hidePreloader ( ) ;
260- LoginPage . enableInputs ( ) ;
261- LoginPage . updateSignupButton ( ) ;
262- return ;
206+ return { success : false , message : error . message } ;
263207 }
208+ return { success : true } ;
264209}
265210
266- async function signInWithGoogle ( ) : Promise < void > {
267- return signInWithProvider ( gmailProvider ) ;
211+ export async function signInWithGoogle ( rememberMe : boolean ) : Promise <
212+ | {
213+ success : true ;
214+ }
215+ | {
216+ success : false ;
217+ message : string ;
218+ }
219+ > {
220+ return signInWithProvider ( gmailProvider , rememberMe ) ;
268221}
269222
270- async function signInWithGitHub ( ) : Promise < void > {
271- return signInWithProvider ( githubProvider ) ;
223+ export async function signInWithGitHub ( rememberMe : boolean ) : Promise <
224+ | {
225+ success : true ;
226+ }
227+ | {
228+ success : false ;
229+ message : string ;
230+ }
231+ > {
232+ return signInWithProvider ( githubProvider , rememberMe ) ;
272233}
273234
274- async function addGoogleAuth ( ) : Promise < void > {
235+ export async function addGoogleAuth ( ) : Promise < void > {
275236 return addAuthProvider ( "Google" , gmailProvider ) ;
276237}
277238
278- async function addGithubAuth ( ) : Promise < void > {
239+ export async function addGithubAuth ( ) : Promise < void > {
279240 return addAuthProvider ( "GitHub" , githubProvider ) ;
280241}
281242
@@ -324,38 +285,27 @@ export function signOut(): void {
324285 void authSignOut ( ) ;
325286}
326287
327- async function signUp ( ) : Promise < void > {
288+ export async function signUp (
289+ name : string ,
290+ email : string ,
291+ password : string ,
292+ ) : Promise <
293+ | {
294+ success : true ;
295+ }
296+ | {
297+ success : false ;
298+ message : string ;
299+ }
300+ > {
328301 if ( ! isAuthAvailable ( ) ) {
329- Notifications . add ( "Authentication uninitialized" , - 1 , {
330- duration : 3 ,
331- } ) ;
332- return ;
333- }
334- if ( ! ConnectionState . get ( ) ) {
335- Notifications . add ( "You are offline" , 0 , {
336- duration : 2 ,
337- } ) ;
338- return ;
302+ return { success : false , message : "Authentication uninitialized" } ;
339303 }
340304 await RegisterCaptchaModal . show ( ) ;
341305 const captchaToken = await RegisterCaptchaModal . promise ;
342306 if ( captchaToken === undefined || captchaToken === "" ) {
343- Notifications . add ( "Please complete the captcha" , - 1 ) ;
344- return ;
307+ return { success : false , message : "Please complete the captcha" } ;
345308 }
346- LoginPage . disableInputs ( ) ;
347- LoginPage . disableSignUpButton ( ) ;
348- LoginPage . showPreloader ( ) ;
349-
350- const signupData = LoginPage . getSignupData ( ) ;
351- if ( signupData === false ) {
352- LoginPage . hidePreloader ( ) ;
353- LoginPage . enableInputs ( ) ;
354- LoginPage . updateSignupButton ( ) ;
355- Notifications . add ( "Please fill in all fields" , 0 ) ;
356- return ;
357- }
358- const { name : nname , email, password } = signupData ;
359309
360310 try {
361311 const createdAuthUser = await createUserWithEmailAndPassword (
@@ -365,7 +315,7 @@ async function signUp(): Promise<void> {
365315
366316 const signInResponse = await Ape . users . create ( {
367317 body : {
368- name : nname ,
318+ name : name ,
369319 captcha : captchaToken ,
370320 email,
371321 uid : createdAuthUser . user . uid ,
@@ -375,13 +325,13 @@ async function signUp(): Promise<void> {
375325 throw new Error ( `Failed to sign in: ${ signInResponse . body . message } ` ) ;
376326 }
377327
378- await updateProfile ( createdAuthUser . user , { displayName : nname } ) ;
328+ await updateProfile ( createdAuthUser . user , { displayName : name } ) ;
379329 await sendVerificationEmail ( ) ;
380- LoginPage . hidePreloader ( ) ;
381330 await onAuthStateChanged ( true , createdAuthUser . user ) ;
382331 resetIgnoreAuthCallback ( ) ;
383332
384333 Notifications . add ( "Account created" , 1 ) ;
334+ return { success : true } ;
385335 } catch ( e ) {
386336 let message = Misc . createErrorMessage ( e , "Failed to create account" ) ;
387337
@@ -395,60 +345,7 @@ async function signUp(): Promise<void> {
395345 }
396346
397347 Notifications . add ( message , - 1 ) ;
398- LoginPage . hidePreloader ( ) ;
399- LoginPage . enableInputs ( ) ;
400- LoginPage . updateSignupButton ( ) ;
401348 signOut ( ) ;
402- return ;
349+ return { success : false , message } ;
403350 }
404351}
405-
406- qs ( ".pageLogin .login form" ) ?. on ( "submit" , ( e ) => {
407- e . preventDefault ( ) ;
408- const email =
409- qsa < HTMLInputElement > ( ".pageLogin .login input" ) ?. [ 0 ] ?. getValue ( ) ?? "" ;
410- const password =
411- qsa < HTMLInputElement > ( ".pageLogin .login input" ) ?. [ 1 ] ?. getValue ( ) ?? "" ;
412- void signIn ( email , password ) ;
413- } ) ;
414-
415- qs ( ".pageLogin .login button.signInWithGoogle" ) ?. on ( "click" , ( ) => {
416- void signInWithGoogle ( ) ;
417- } ) ;
418-
419- qs ( ".pageLogin .login button.signInWithGitHub" ) ?. on ( "click" , ( ) => {
420- void signInWithGitHub ( ) ;
421- } ) ;
422-
423- qs ( "nav .accountButtonAndMenu .menu button.signOut" ) ?. on ( "click" , ( ) => {
424- if ( ! isAuthAvailable ( ) ) {
425- Notifications . add ( "Authentication uninitialized" , - 1 , {
426- duration : 3 ,
427- } ) ;
428- return ;
429- }
430- signOut ( ) ;
431- } ) ;
432-
433- qs ( ".pageLogin .register form" ) ?. on ( "submit" , ( e ) => {
434- e . preventDefault ( ) ;
435- void signUp ( ) ;
436- } ) ;
437-
438- qs ( ".pageAccountSettings" ) ?. onChild ( "click" , "#addGoogleAuth" , ( ) => {
439- void addGoogleAuth ( ) ;
440- } ) ;
441-
442- qs ( ".pageAccountSettings" ) ?. onChild ( "click" , "#addGithubAuth" , ( ) => {
443- void addGithubAuth ( ) ;
444- } ) ;
445-
446- qs ( ".pageAccount" ) ?. onChild ( "click" , ".sendVerificationEmail" , ( ) => {
447- if ( ! ConnectionState . get ( ) ) {
448- Notifications . add ( "You are offline" , 0 , {
449- duration : 2 ,
450- } ) ;
451- return ;
452- }
453- void sendVerificationEmail ( ) ;
454- } ) ;
0 commit comments