Skip to content

Commit 8a525c5

Browse files
author
nishanth
committed
Added hooks for login, signup
1 parent 1e893b1 commit 8a525c5

File tree

9 files changed

+88
-14
lines changed

9 files changed

+88
-14
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@ npm-debug.log
1313
# Testing output
1414
.nyc_output
1515
coverage
16+
17+
#test files
18+
/example

auth/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
export { default as useAuthState, AuthStateHook } from './useAuthState';
2+
export { default as useLogin, loginHook } from './useLogin';
3+
export { default as useRegister, registerHook } from './useRegister';

auth/useAuthState.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ export default (auth: firebase.auth.Auth): AuthStateHook => {
1818
};
1919
}, [auth]);
2020

21-
const resArray:AuthStateHook = [value, loading, error]
22-
return useMemo<AuthStateHook>(
23-
() => resArray,
24-
resArray,
25-
);
21+
const resArray: AuthStateHook = [value, loading, error];
22+
return useMemo<AuthStateHook>(() => resArray, resArray);
2623
};

auth/useLogin.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { useState, useMemo } from 'react';
2+
import firebase from 'firebase/app';
3+
import { AuthHookType } from '../util';
4+
5+
export type loginHook = AuthHookType<firebase.auth.UserCredential>;
6+
7+
export default (
8+
auth: firebase.auth.Auth,
9+
email: string,
10+
password: string
11+
): loginHook => {
12+
const [error, setError] = useState<any>(null);
13+
const [
14+
loggedInUser,
15+
setLoggedInUser,
16+
] = useState<firebase.auth.UserCredential>();
17+
const [loading, setLoading] = useState<boolean>(false);
18+
19+
const login = () => {
20+
setLoading(true);
21+
auth
22+
.signInWithEmailAndPassword(email, password)
23+
.then((resUser) => {
24+
setLoggedInUser(resUser);
25+
setLoading(false);
26+
})
27+
.catch((err) => {
28+
setError(err);
29+
setLoading(false);
30+
});
31+
};
32+
33+
const resArray: loginHook = [loggedInUser, error, login, loading];
34+
return useMemo<loginHook>(() => resArray, resArray);
35+
};

auth/useRegister.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { useState, useMemo } from 'react';
2+
import firebase from 'firebase/app';
3+
import { AuthHookType } from '../util';
4+
5+
export type registerHook = AuthHookType<firebase.auth.UserCredential>;
6+
7+
export default (
8+
auth: firebase.auth.Auth,
9+
email: string,
10+
password: string
11+
): registerHook => {
12+
const [error, setError] = useState<any>(null);
13+
const [
14+
registeredUser,
15+
setRegisteredUser,
16+
] = useState<firebase.auth.UserCredential>();
17+
const [loading, setLoading] = useState<boolean>(false);
18+
19+
const register = () => {
20+
setLoading(true);
21+
auth
22+
.createUserWithEmailAndPassword(email, password)
23+
.then((resUser) => {
24+
setRegisteredUser(resUser);
25+
setLoading(false);
26+
})
27+
.catch((err) => {
28+
setError(err);
29+
setLoading(false);
30+
});
31+
};
32+
33+
const resArray: registerHook = [registeredUser, error, register, loading];
34+
return useMemo<registerHook>(() => resArray, resArray);
35+
};

package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@
4343
"build": "npm run clean && rollup -c",
4444
"clean": "rimraf ./dist ./auth/dist ./auth/*.d.ts ./database/dist ./database/*.d.ts ./firestore/dist ./firestore/*.d.ts ./storage/dist ./storage/*.d.ts ./util/*.d.ts",
4545
"dev": "npm run clean && rollup -c -w",
46-
"prepublish": "npm run build"
46+
"prepublish": "npm run build",
47+
"start": "rollup -c -w"
4748
},
4849
"main": "dist/index.cjs.js",
4950
"module": "dist/index.esm.js",

util/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export { default as useLoadingValue } from './useLoadingValue';
22
export * from './refHooks';
33

44
export type LoadingHook<T, E> = [T | undefined, boolean, E | undefined];
5+
export type AuthHookType<T> = [T | undefined, any, () => void, boolean];

util/useLoadingValue.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,7 @@ export default <T, E>(getDefaultValue?: () => T | null): LoadingValue<T, E> => {
8181
setError,
8282
setValue,
8383
value: state.value,
84-
}), [
85-
state.error,
86-
state.loading,
87-
reset,
88-
setError,
89-
setValue,
90-
state.value,
91-
]
84+
}),
85+
[state.error, state.loading, reset, setError, setValue, state.value]
9286
);
9387
};

0 commit comments

Comments
 (0)