You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			66 lines
		
	
	
		
			986 B
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			66 lines
		
	
	
		
			986 B
		
	
	
	
		
			TypeScript
		
	
import { LocalizerType } from '../../types/Util';
 | 
						|
 | 
						|
// State
 | 
						|
 | 
						|
export type UserStateType = {
 | 
						|
  ourNumber: string;
 | 
						|
  i18n: LocalizerType;
 | 
						|
};
 | 
						|
 | 
						|
// Actions
 | 
						|
 | 
						|
type UserChangedActionType = {
 | 
						|
  type: 'USER_CHANGED';
 | 
						|
  payload: {
 | 
						|
    ourNumber: string;
 | 
						|
    ourPrimary: string;
 | 
						|
  };
 | 
						|
};
 | 
						|
 | 
						|
export type UserActionType = UserChangedActionType;
 | 
						|
 | 
						|
// Action Creators
 | 
						|
 | 
						|
export const actions = {
 | 
						|
  userChanged,
 | 
						|
};
 | 
						|
 | 
						|
function userChanged(attributes: {
 | 
						|
  ourNumber: string;
 | 
						|
  ourPrimary: string;
 | 
						|
}): UserChangedActionType {
 | 
						|
  return {
 | 
						|
    type: 'USER_CHANGED',
 | 
						|
    payload: attributes,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
// Reducer
 | 
						|
 | 
						|
function getEmptyState(): UserStateType {
 | 
						|
  return {
 | 
						|
    ourNumber: 'missing',
 | 
						|
    i18n: () => 'missing',
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function reducer(
 | 
						|
  state: UserStateType,
 | 
						|
  action: UserActionType
 | 
						|
): UserStateType {
 | 
						|
  if (!state) {
 | 
						|
    return getEmptyState();
 | 
						|
  }
 | 
						|
 | 
						|
  if (action.type === 'USER_CHANGED') {
 | 
						|
    const { payload } = action;
 | 
						|
 | 
						|
    return {
 | 
						|
      ...state,
 | 
						|
      ...payload,
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  return state;
 | 
						|
}
 |