1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 21:06:42 +07:00

receiving window messages

This commit is contained in:
Fedor Katurov 2019-11-02 18:45:58 +07:00
parent f7b8b56b53
commit 49bccb96c1
8 changed files with 68 additions and 37 deletions

View file

@ -2,17 +2,29 @@ import { AUTH_USER_ACTIONS } from '~/redux/auth/constants';
import { IAuthState, IUser } from '~/redux/auth/types';
export const userSendLoginRequest = ({
username, password
username,
password,
}: {
username: string; password: string;
username: string;
password: string;
}) => ({ type: AUTH_USER_ACTIONS.SEND_LOGIN_REQUEST, username, password });
export const userSetLoginError = (error: IAuthState['login']['error']) => ({
type: AUTH_USER_ACTIONS.SET_LOGIN_ERROR, error
type: AUTH_USER_ACTIONS.SET_LOGIN_ERROR,
error,
});
export const authSetToken = (token: IAuthState['token']) => ({
type: AUTH_USER_ACTIONS.SET_TOKEN, token,
type: AUTH_USER_ACTIONS.SET_TOKEN,
token,
});
export const authSetUser = (profile: Partial<IUser>) => ({ type: AUTH_USER_ACTIONS.SET_USER, profile });
export const gotPostMessage = (message: MessageEvent) => ({
type: AUTH_USER_ACTIONS.GOT_POST_MESSAGE,
message,
});
export const authSetUser = (profile: Partial<IUser>) => ({
type: AUTH_USER_ACTIONS.SET_USER,
profile,
});

View file

@ -5,6 +5,8 @@ export const AUTH_USER_ACTIONS = {
SET_LOGIN_ERROR: 'SET_LOGIN_ERROR',
SET_USER: 'SET_USER',
SET_TOKEN: 'SET_TOKEN',
GOT_POST_MESSAGE: 'GOT_POST_MESSAGE',
};
export const USER_ERRORS = {

View file

@ -5,6 +5,7 @@ import {
userSetLoginError,
authSetUser,
userSendLoginRequest,
gotPostMessage,
} from '~/redux/auth/actions';
import { apiUserLogin, apiAuthGetUser } from '~/redux/auth/api';
import { modalSetShown } from '~/redux/modal/actions';
@ -12,6 +13,7 @@ import { selectToken } from './selectors';
import { IResultWithStatus } from '../types';
import { IUser } from './types';
import { REHYDRATE, RehydrateAction } from 'redux-persist';
import path from 'ramda/es/path';
export function* reqWrapper(requestAction, props = {}): ReturnType<typeof requestAction> {
const access = yield select(selectToken);
@ -68,9 +70,16 @@ function* checkUserSaga({ key }: RehydrateAction) {
yield put(authSetUser({ ...user, is_user: true }));
}
function* gotPostMessageSaga({ message }: ReturnType<typeof gotPostMessage>) {
if (path(['data', 'type'], message) !== 'oauth_login') return;
console.log({ message });
}
function* authSaga() {
yield takeLatest(REHYDRATE, checkUserSaga);
yield takeLatest(AUTH_USER_ACTIONS.SEND_LOGIN_REQUEST, sendLoginRequestSaga);
yield takeLatest(AUTH_USER_ACTIONS.GOT_POST_MESSAGE, gotPostMessageSaga);
}
export default authSaga;

View file

@ -87,13 +87,12 @@ export const NODE_INLINES: INodeComponents = {
export const EMPTY_COMMENT: IComment = {
id: null,
text: '',
// files: [],
// temp_ids: [],
// is_private: false,
// user: null,
files: [],
temp_ids: [],
is_private: false,
user: null,
// id: null,
// text: '',
/*
files: [
{
name: 'screenshot_2019-09-29_21-13-38_502253296-1572589001092.png',
@ -179,9 +178,7 @@ export const EMPTY_COMMENT: IComment = {
id: 8713,
},
],
temp_ids: [],
is_private: false,
user: null,
*/
};
export const NODE_EDITORS = {

View file

@ -25,6 +25,7 @@ import playerSaga from '~/redux/player/sagas';
import { IAuthState } from '~/redux/auth/types';
import modalReducer, { IModalState } from '~/redux/modal/reducer';
import { gotPostMessage } from './auth/actions';
const authPersistConfig: PersistConfig = {
key: 'auth',
@ -70,6 +71,8 @@ export function configureStore(): { store: Store<IState>; persistor: Persistor }
sagaMiddleware.run(flowSaga);
sagaMiddleware.run(playerSaga);
window.addEventListener('message', message => store.dispatch(gotPostMessage(message)));
const persistor = persistStore(store);
return { store, persistor };