Make request types generic.

master
Tom Hacohen 7 years ago
parent 37aaebbbd8
commit fb660fc54c

@ -127,7 +127,7 @@ export class EteSyncContextInner extends React.Component {
render() { render() {
if (((this.props.credentials.status === store.FetchStatus.Initial) && if (((this.props.credentials.status === store.FetchStatus.Initial) &&
(this.props.credentials.credentials === null)) || (this.props.credentials.value === null)) ||
(this.props.credentials.status === store.FetchStatus.Failure)) { (this.props.credentials.status === store.FetchStatus.Failure)) {
let advancedSettings = null; let advancedSettings = null;
@ -222,7 +222,7 @@ export class EteSyncContextInner extends React.Component {
return (<div>Loading</div>); return (<div>Loading</div>);
} }
let context = this.props.credentials.credentials as store.CredentialsData; let context = this.props.credentials.value as store.CredentialsData;
return ( return (
<div> <div>

@ -19,17 +19,19 @@ export enum FetchStatus {
Success = 'SUCCESS', Success = 'SUCCESS',
} }
export interface FetchType<T> {
status: FetchStatus;
value: T | null;
error?: Error;
}
export interface CredentialsData { export interface CredentialsData {
serviceApiUrl: string; serviceApiUrl: string;
credentials: EteSync.Credentials; credentials: EteSync.Credentials;
encryptionKey: string; encryptionKey: string;
} }
export interface CredentialsType { export type CredentialsType = FetchType<CredentialsData>;
status: FetchStatus;
credentials: CredentialsData | null;
error?: Error;
}
export interface StoreState { export interface StoreState {
fetchCount: number; fetchCount: number;
@ -66,7 +68,7 @@ export function logout() {
}; };
} }
function credentials(state: CredentialsType = {status: FetchStatus.Initial, credentials: null}, function credentials(state: CredentialsType = {status: FetchStatus.Initial, value: null},
action: any): CredentialsType { action: any): CredentialsType {
switch (action.type) { switch (action.type) {
case Actions.FETCH_CREDENTIALS: case Actions.FETCH_CREDENTIALS:
@ -74,18 +76,18 @@ function credentials(state: CredentialsType = {status: FetchStatus.Initial, cred
case FetchStatus.Success: case FetchStatus.Success:
return { return {
status: action.status, status: action.status,
credentials: action.credentials, value: action.credentials,
}; };
case FetchStatus.Failure: case FetchStatus.Failure:
return { return {
status: action.status, status: action.status,
credentials: null, value: null,
error: action.error, error: action.error,
}; };
default: default:
return { return {
status: action.status, status: action.status,
credentials: null, value: null,
}; };
} }
default: default:
@ -114,7 +116,7 @@ function fetchCount(state: number = 0, action: any) {
const credentialsPersistConfig = { const credentialsPersistConfig = {
key: 'credentials', key: 'credentials',
storage: session, storage: session,
whitelist: ['credentials'], whitelist: ['value'],
}; };
const reducers = combineReducers({ const reducers = combineReducers({

Loading…
Cancel
Save