* 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
32 lines
993 B
TypeScript
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 {}
|
|
};
|
|
}
|