From 9486c5bdf5ef6937782a6e426d7f60989e33b72f Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Thu, 20 Aug 2020 17:04:56 +0700 Subject: [PATCH] sending register request --- .../index.tsx | 4 +- .../styles.scss | 0 .../LoginSocialRegisterDialog/index.tsx | 2 +- src/redux/auth/api.ts | 2 + src/redux/auth/sagas.ts | 38 +++++++++++++++++++ 5 files changed, 43 insertions(+), 3 deletions(-) rename src/containers/dialogs/{LogianSocialRegisterButtons => LoginSocialRegisterButtons}/index.tsx (69%) rename src/containers/dialogs/{LogianSocialRegisterButtons => LoginSocialRegisterButtons}/styles.scss (100%) diff --git a/src/containers/dialogs/LogianSocialRegisterButtons/index.tsx b/src/containers/dialogs/LoginSocialRegisterButtons/index.tsx similarity index 69% rename from src/containers/dialogs/LogianSocialRegisterButtons/index.tsx rename to src/containers/dialogs/LoginSocialRegisterButtons/index.tsx index abd051d5..905cbd77 100644 --- a/src/containers/dialogs/LogianSocialRegisterButtons/index.tsx +++ b/src/containers/dialogs/LoginSocialRegisterButtons/index.tsx @@ -1,12 +1,12 @@ import React, { FC } from 'react'; import { Button } from '~/components/input/Button'; -import styles from './styles.module.scss'; +import styles from './styles.scss'; interface IProps {} const LoginSocialRegisterButtons: FC = () => (
- +
); diff --git a/src/containers/dialogs/LogianSocialRegisterButtons/styles.scss b/src/containers/dialogs/LoginSocialRegisterButtons/styles.scss similarity index 100% rename from src/containers/dialogs/LogianSocialRegisterButtons/styles.scss rename to src/containers/dialogs/LoginSocialRegisterButtons/styles.scss diff --git a/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx b/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx index 75b51114..0fdf7a36 100644 --- a/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx +++ b/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx @@ -10,7 +10,7 @@ import styles from './styles.scss'; import { selectAuthRegisterSocial } from '~/redux/auth/selectors'; import * as AUTH_ACTIONS from '~/redux/auth/actions'; import { useCloseOnEscape } from '~/utils/hooks'; -import { LoginSocialRegisterButtons } from '~/containers/dialogs/LogianSocialRegisterButtons'; +import { LoginSocialRegisterButtons } from '~/containers/dialogs/LoginSocialRegisterButtons'; const mapStateToProps = selectAuthRegisterSocial; const mapDispatchToProps = { diff --git a/src/redux/auth/api.ts b/src/redux/auth/api.ts index 3547239d..f56ba229 100644 --- a/src/redux/auth/api.ts +++ b/src/redux/auth/api.ts @@ -140,6 +140,8 @@ export const apiLoginWithSocial = ({ password?: string; }): Promise; needs_register: boolean; }>> => api diff --git a/src/redux/auth/sagas.ts b/src/redux/auth/sagas.ts index b0423318..d83d3d57 100644 --- a/src/redux/auth/sagas.ts +++ b/src/redux/auth/sagas.ts @@ -13,9 +13,11 @@ import { authRequestRestoreCode, authRestorePassword, authSendMessage, + authSendRegisterSocial, authSetLastSeenMessages, authSetProfile, authSetRegisterSocial, + authSetRegisterSocialErrors, authSetRestore, authSetSocials, authSetToken, @@ -46,6 +48,7 @@ import { modalSetShown, modalShowDialog } from '~/redux/modal/actions'; import { selectAuth, selectAuthProfile, + selectAuthRegisterSocial, selectAuthRestore, selectAuthUpdates, selectAuthUser, @@ -497,6 +500,40 @@ function* gotOauthLoginEvent({ event }: ReturnType) { + try { + yield put(authSetRegisterSocial({ error: '' })); + + const { token }: Unwrap> = yield select( + selectAuthRegisterSocial + ); + + const { + data, + error, + }: Unwrap> = yield call(apiLoginWithSocial, { + token, + username, + password, + }); + + if (data?.errors) { + yield put(authSetRegisterSocialErrors(data.errors)); + } else if (data?.error) { + throw new Error(error); + } + + if (data.token) { + yield put(authSetToken(data.token)); + yield call(refreshUser); + yield put(modalSetShown(false)); + return; + } + } catch (e) { + yield put(authSetRegisterSocial({ error: e.message })); + } +} + function* authSaga() { yield takeEvery(REHYDRATE, checkUserSaga); yield takeLatest([REHYDRATE, AUTH_USER_ACTIONS.LOGGED_IN], startPollingSaga); @@ -518,6 +555,7 @@ function* authSaga() { yield takeLatest(AUTH_USER_ACTIONS.ATTACH_SOCIAL, attachSocial); yield takeLatest(AUTH_USER_ACTIONS.LOGIN_WITH_SOCIAL, loginWithSocial); yield takeEvery(AUTH_USER_ACTIONS.GOT_OAUTH_LOGIN_EVENT, gotOauthLoginEvent); + yield takeEvery(AUTH_USER_ACTIONS.SEND_REGISTER_SOCIAL, authRegisterSocial); } export default authSaga;