github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/web/src/store/modules/user/index.ts (about)

     1  import { Module } from 'vuex';
     2  import {
     3    fetchUser,
     4    fetchSCM,
     5    fetchTokens
     6  } from './actions';
     7  import {
     8    UpdateUser,
     9    updateTokens,
    10    ClearError,
    11    SetError,
    12    updateSCM,
    13    startLoading,
    14    stopLoading
    15  } from './mutations';
    16  import { RootState } from '@/store';
    17  
    18  export enum Actions {
    19    FETCH_USER = 'FETCH_USER',
    20    FETCH_USER_SCM = 'FETCH_USER_SCM',
    21    FETCH_USER_TOKENS = 'FETCH_USER_TOKENS'
    22  }
    23  
    24  export enum Mutations {
    25    UPDATE_USER = 'UPDATE_USER',
    26    UPDATE_USER_SCM = 'UPDATE_USER_SCM',
    27    UPDATE_USER_TOKENS = 'UPDATE_USER_TOKENS',
    28    SET_USER_ERROR = 'SET_USER_ERROR',
    29    CLEAR_USER_ERROR = 'CLEAR_USER_ERROR',
    30    START_USER_LOADING = 'START_USER_LOADING',
    31    STOP_USER_LOADING = 'STOP_USER_LOADING'
    32  }
    33  
    34  export type UserState = {
    35    current?: User;
    36    tokens: Token[];
    37    error?: Error;
    38    scm?: Record<string, boolean>;
    39    loading: boolean;
    40  };
    41  const module: Module<UserState, RootState> = {
    42    state: {
    43      current: undefined,
    44      tokens: [],
    45      error: undefined,
    46      scm: undefined,
    47      loading: false
    48    },
    49    actions: {
    50      [Actions.FETCH_USER]: fetchUser,
    51      [Actions.FETCH_USER_SCM]: fetchSCM,
    52      [Actions.FETCH_USER_TOKENS]: fetchTokens
    53    },
    54    mutations: {
    55      [Mutations.UPDATE_USER]: UpdateUser,
    56      [Mutations.UPDATE_USER_TOKENS]: updateTokens,
    57      [Mutations.SET_USER_ERROR]: SetError,
    58      [Mutations.CLEAR_USER_ERROR]: ClearError,
    59      [Mutations.START_USER_LOADING]: startLoading,
    60      [Mutations.STOP_USER_LOADING]: stopLoading,
    61      [Mutations.UPDATE_USER_SCM]: updateSCM
    62    }
    63  };
    64  
    65  declare module '@/store' {
    66    interface State {
    67      user: UserState;
    68    }
    69  }
    70  
    71  export default module;