Files
remark42/frontend/app/store/provider/actions.ts
T
Misha VyrtsevandUmputun 3b4628d0bd Auth login design (#390)
* break auth panel render into submethods

* move var definition

* break renderUnathorized into submethods

* hide login providers behind dropdown if they are exceed length of 3

* amend dropdown to behave nicely being placed in another dropdown

* add style to providers enclosed in dropdown

* add provider reducer and actions

* add provider save/restore to app flow

* place last login provider first in providers list

* infer StoreState from combineReducers return type

* move collapsed threads retoration to action

* fix: provider lost in other

* add dynamic threshold depending on window width

* fix & add tests
2019-07-25 22:54:59 -05:00

32 lines
993 B
TypeScript

import { PROVIDER_UPDATE_ACTION, PROVIDER_UPDATE } from './types';
import { StoreAction } from '..';
import { setItem, getItem } from '@app/common/local-storage';
const PROVIDER_LOCALSTORAGE_KEY = '__remarkProvider';
/** saves last login provider from localstorage and put to store */
export function updateProvider(payload: PROVIDER_UPDATE_ACTION['payload']): StoreAction<void, PROVIDER_UPDATE_ACTION> {
return dispatch => {
setItem(PROVIDER_LOCALSTORAGE_KEY, JSON.stringify(payload));
dispatch({
type: PROVIDER_UPDATE,
payload,
});
};
}
/** restores last login provider from localstorage and put to store */
export function restoreProvider(): StoreAction<void, PROVIDER_UPDATE_ACTION> {
return dispatch => {
const payloadString = getItem(PROVIDER_LOCALSTORAGE_KEY);
if (!payloadString) return;
try {
const payload = JSON.parse(payloadString);
dispatch({
type: PROVIDER_UPDATE,
payload,
});
} catch {}
};
}