chore: init reducer/app migration to ts

This commit is contained in:
GleidsonDaniel 2022-01-07 15:12:59 -03:00
parent bc92a4f29d
commit 16e04c7232
8 changed files with 82 additions and 48 deletions

View File

@ -2,8 +2,8 @@ const REQUEST = 'REQUEST';
const SUCCESS = 'SUCCESS';
const FAILURE = 'FAILURE';
const defaultTypes = [REQUEST, SUCCESS, FAILURE];
function createRequestTypes(base = {}, types = defaultTypes): Record<any, any> {
const res: Record<any, any> = {};
function createRequestTypes(base = {}, types = defaultTypes): Record<string, string> {
const res: Record<string, string> = {};
types.forEach(type => (res[type] = `${base}_${type}`));
return res;
}

View File

@ -3,7 +3,7 @@ import { Action } from 'redux';
import { IActiveUsers } from '../reducers/activeUsers';
import { SET_ACTIVE_USERS } from './actionsTypes';
export interface ISetActiveUsers extends Action {
interface ISetActiveUsers extends Action {
activeUsers: IActiveUsers;
}

View File

@ -1,39 +0,0 @@
import { APP } from './actionsTypes';
export const ROOT_OUTSIDE = 'outside';
export const ROOT_INSIDE = 'inside';
export const ROOT_LOADING = 'loading';
export const ROOT_SET_USERNAME = 'setUsername';
export function appStart({ root, ...args }) {
return {
type: APP.START,
root,
...args
};
}
export function appReady() {
return {
type: APP.READY
};
}
export function appInit() {
return {
type: APP.INIT
};
}
export function appInitLocalSettings() {
return {
type: APP.INIT_LOCAL_SETTINGS
};
}
export function setMasterDetail(isMasterDetail) {
return {
type: APP.SET_MASTER_DETAIL,
isMasterDetail
};
}

53
app/actions/app.ts Normal file
View File

@ -0,0 +1,53 @@
import { Action } from 'redux';
import { TRootEnum } from '../definitions';
import { APP } from './actionsTypes';
export const ROOT_OUTSIDE = 'outside';
export const ROOT_INSIDE = 'inside';
export const ROOT_LOADING = 'loading';
export const ROOT_SET_USERNAME = 'setUsername';
interface IAppStart extends Action {
root: TRootEnum;
text?: string;
}
interface ISetMasterDetail extends Action {
isMasterDetail: boolean;
}
export type TActionApp = IAppStart & ISetMasterDetail;
export function appStart({ root, ...args }: { root: TRootEnum }): IAppStart {
return {
type: APP.START,
root,
...args
};
}
export function appReady(): Action {
return {
type: APP.READY
};
}
export function appInit(): Action {
return {
type: APP.INIT
};
}
export function appInitLocalSettings(): Action {
return {
type: APP.INIT_LOCAL_SETTINGS
};
}
export function setMasterDetail(isMasterDetail: boolean): ISetMasterDetail {
return {
type: APP.SET_MASTER_DETAIL,
isMasterDetail
};
}

View File

@ -10,3 +10,4 @@ export interface IBaseScreen<T extends Record<string, object | undefined>, S ext
}
export * from './redux';
export * from './redux/TRootEnum';

View File

@ -0,0 +1,6 @@
export type TRootEnum = {
ROOT_OUTSIDE: 'outside';
ROOT_INSIDE: 'inside';
ROOT_LOADING: 'loading';
ROOT_SET_USERNAME: 'setUsername';
};

View File

@ -1,8 +1,10 @@
import { TActionSelectedUsers } from '../../actions/selectedUsers';
import { TActionActiveUsers } from '../../actions/activeUsers';
import { TActionApp } from '../../actions/app';
// REDUCERS
import { IActiveUsers } from '../../reducers/activeUsers';
import { ISelectedUsers } from '../../reducers/selectedUsers';
import { IApp } from '../../reducers/app';
export interface IApplicationState {
settings: any;
@ -11,7 +13,7 @@ export interface IApplicationState {
server: any;
selectedUsers: ISelectedUsers;
createChannel: any;
app: any;
app: IApp;
room: any;
rooms: any;
sortPreferences: any;
@ -28,4 +30,4 @@ export interface IApplicationState {
roles: any;
}
export type TApplicationActions = TActionActiveUsers & TActionSelectedUsers;
export type TApplicationActions = TActionActiveUsers & TActionSelectedUsers & TActionApp;

View File

@ -1,15 +1,26 @@
import { TActionApp } from '../actions/app';
import { TRootEnum } from '../definitions';
import { APP, APP_STATE } from '../actions/actionsTypes';
const initialState = {
root: null,
export interface IApp {
root?: TRootEnum;
isMasterDetail: boolean;
text?: string;
ready: boolean;
foreground: boolean;
background: boolean;
}
const initialState: IApp = {
root: undefined,
isMasterDetail: false,
text: null,
text: undefined,
ready: false,
foreground: true,
background: false
};
export default function app(state = initialState, action) {
export default function app(state = initialState, action: TActionApp): IApp {
switch (action.type) {
case APP_STATE.FOREGROUND:
return {