import { Dispatch } from "redux" ; import { listServers , ListServersResponse } from "../api" ; import { toErrorString , toErrorStringWithHttpStatus } from "../utils" ; export const LIST_SERVERS_BEGIN = "LIST_SERVERS_BEGIN" ; export const LIST_SERVERS_SUCCESS = "LIST_SERVERS_SUCCESS" ; export const LIST_SERVERS_ERROR = "LIST_SERVERS_ERROR" ; interface ListServersBeginAction { type : typeof LIST_SERVERS_BEGIN ; } interface ListServersSuccessAction { type : typeof LIST_SERVERS_SUCCESS ; payload : ListServersResponse ; } interface ListServersErrorAction { type : typeof LIST_SERVERS_ERROR ; error : string ; } export type ServersActionTypes = ListServersBeginAction | ListServersSuccessAction | ListServersErrorAction ; export function listServersAsync ( ) { return async ( dispatch ) => { dispatch ( { type : LIST_SERVERS_BEGIN } ) ; try { const response = await listServers ( ) ; dispatch ( { type : LIST_SERVERS_SUCCESS , payload : response , } ) ; } catch ( error ) { console . error ( `listServersAsync: ${ toErrorStringWithHttpStatus ( error ) }` ) ; dispatch ( { type : LIST_SERVERS_ERROR , error : toErrorString ( error ) , } ) ; } } ; }