aboutsummaryrefslogblamecommitdiffstats
path: root/packages/website/ts/redux/dispatcher.ts
blob: e85afd3b1a54020752f5dd05819eceb2ff74ff33 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                      

                                         
        
                

                   
             
                
                 

                 
                     
          
                   
                  

                         
                                                
                                            
                                  

             
                               
                        
                                         

           
                                                         
                        
                              
                                                

           
                                                               
                        
                              
                                                

           
                                          
                        
                                              

           
                                                   
                        
                       
                                              

           
                                                                   
                        
                        
                                                           

           
                                                                               
                        
                               
                                                                    

           
                                                                        
                        



                      
                                                     

           
                                                                             
                        



                        
                                                            

           
                                                           
                        
                          
                                                      

           
                                                      
                        
                          
                                                

           
                                                                 
                        
                                   
                                                

           
                                                                  
                        


                                                       
     
                                                              
                        


                                                       
     
                                                         
                        


                                                       
     
                                                            
                        


                                                            
     


                                       
                                                
                                           
             

                        
                               
                          
                                    




                                            
                                                        
                        


                                                   
     
                                           
                        
                                                     

           
                                                     
                        

                                                   
           
     
                                                            
                        


                                                     
     
                                                     
                        


                                              
     
                                                           
                        
                         
                                                    


           






                                                                    
           
                                                            
                        
                          
                                                   

           
                                                                 
                        
                           
                                                             



             
                                                                  
                        
                      
                                               

           
                                     
                        
                                               

           
                                                                 
                        
                                                 


                               
                                                                           
                        
                                                         


                                       
                                                             




                                                     
 
import { BigNumber } from '@0x/utils';
import { Dispatch } from 'redux';
import { State } from 'ts/redux/reducer';
import {
    ActionTypes,
    AssetToken,
    BlockchainErrs,
    Language,
    PortalOrder,
    ProviderType,
    ScreenWidths,
    Side,
    SideToAssetToken,
    Token,
    TokenByAddress,
} from 'ts/types';

export class Dispatcher {
    private readonly _dispatch: Dispatch<State>;
    constructor(dispatch: Dispatch<State>) {
        this._dispatch = dispatch;
    }
    // Portal
    public resetState(): void {
        this._dispatch({
            type: ActionTypes.ResetState,
        });
    }
    public updateNodeVersion(nodeVersion: string): void {
        this._dispatch({
            data: nodeVersion,
            type: ActionTypes.UpdateNodeVersion,
        });
    }
    public updateScreenWidth(screenWidth: ScreenWidths): void {
        this._dispatch({
            data: screenWidth,
            type: ActionTypes.UpdateScreenWidth,
        });
    }
    public swapAssetTokenSymbols(): void {
        this._dispatch({
            type: ActionTypes.SwapAssetTokens,
        });
    }
    public updateOrderSalt(salt: BigNumber): void {
        this._dispatch({
            data: salt,
            type: ActionTypes.UpdateOrderSalt,
        });
    }
    public updateUserSuppliedOrderCache(order: PortalOrder): void {
        this._dispatch({
            data: order,
            type: ActionTypes.UpdateUserSuppliedOrderCache,
        });
    }
    public updateShouldBlockchainErrDialogBeOpen(shouldBeOpen: boolean): void {
        this._dispatch({
            data: shouldBeOpen,
            type: ActionTypes.UpdateShouldBlockchainErrDialogBeOpen,
        });
    }
    public updateChosenAssetToken(side: Side, token: AssetToken): void {
        this._dispatch({
            data: {
                side,
                token,
            },
            type: ActionTypes.UpdateChosenAssetToken,
        });
    }
    public updateChosenAssetTokenAddress(side: Side, address: string): void {
        this._dispatch({
            data: {
                address,
                side,
            },
            type: ActionTypes.UpdateChosenAssetTokenAddress,
        });
    }
    public updateOrderTakerAddress(address: string): void {
        this._dispatch({
            data: address,
            type: ActionTypes.UpdateOrderTakerAddress,
        });
    }
    public updateUserAddress(address?: string): void {
        this._dispatch({
            data: address,
            type: ActionTypes.UpdateUserAddress,
        });
    }
    public updateOrderExpiry(unixTimestampSec: BigNumber): void {
        this._dispatch({
            data: unixTimestampSec,
            type: ActionTypes.UpdateOrderExpiry,
        });
    }
    public encounteredBlockchainError(err: BlockchainErrs): void {
        this._dispatch({
            data: err,
            type: ActionTypes.BlockchainErrEncountered,
        });
    }
    public updateBlockchainIsLoaded(isLoaded: boolean): void {
        this._dispatch({
            data: isLoaded,
            type: ActionTypes.UpdateBlockchainIsLoaded,
        });
    }
    public addTokenToTokenByAddress(token: Token): void {
        this._dispatch({
            data: token,
            type: ActionTypes.AddTokenToTokenByAddress,
        });
    }
    public removeTokenToTokenByAddress(token: Token): void {
        this._dispatch({
            data: token,
            type: ActionTypes.RemoveTokenFromTokenByAddress,
        });
    }
    public batchDispatch(
        tokenByAddress: TokenByAddress,
        networkId: number,
        userAddressIfExists: string | undefined,
        sideToAssetToken: SideToAssetToken,
    ): void {
        this._dispatch({
            data: {
                tokenByAddress,
                networkId,
                userAddressIfExists,
                sideToAssetToken,
            },
            type: ActionTypes.BatchDispatch,
        });
    }
    public updateTokenByAddress(tokens: Token[]): void {
        this._dispatch({
            data: tokens,
            type: ActionTypes.UpdateTokenByAddress,
        });
    }
    public forceTokenStateRefetch(): void {
        this._dispatch({
            type: ActionTypes.ForceTokenStateRefetch,
        });
    }
    public updateSignature(signature: string): void {
        this._dispatch({
            data: signature,
            type: ActionTypes.UpdateOrderSignature,
        });
    }
    public updateUserWeiBalance(balance?: BigNumber): void {
        this._dispatch({
            data: balance,
            type: ActionTypes.UpdateUserEtherBalance,
        });
    }
    public updateNetworkId(networkId: number): void {
        this._dispatch({
            data: networkId,
            type: ActionTypes.UpdateNetworkId,
        });
    }
    public updateOrderFillAmount(amount: BigNumber): void {
        this._dispatch({
            data: amount,
            type: ActionTypes.UpdateOrderFillAmount,
        });
    }

    public updatePortalOnboardingShowing(isShowing: boolean): void {
        this._dispatch({
            data: isShowing,
            type: ActionTypes.UpdatePortalOnboardingShowing,
        });
    }

    // Docs
    public updateCurrentDocsVersion(version: string): void {
        this._dispatch({
            data: version,
            type: ActionTypes.UpdateLibraryVersion,
        });
    }
    public updateAvailableDocVersions(versions: string[]): void {
        this._dispatch({
            data: versions,
            type: ActionTypes.UpdateAvailableLibraryVersions,
        });
    }

    // Shared
    public showFlashMessage(msg: string | React.ReactNode): void {
        this._dispatch({
            data: msg,
            type: ActionTypes.ShowFlashMessage,
        });
    }
    public hideFlashMessage(): void {
        this._dispatch({
            type: ActionTypes.HideFlashMessage,
        });
    }
    public updateProviderType(providerType: ProviderType): void {
        this._dispatch({
            type: ActionTypes.UpdateProviderType,
            data: providerType,
        });
    }
    public updateInjectedProviderName(injectedProviderName: string): void {
        this._dispatch({
            type: ActionTypes.UpdateInjectedProviderName,
            data: injectedProviderName,
        });
    }
    public updateSelectedLanguage(language: Language): void {
        this._dispatch({
            type: ActionTypes.UpdateSelectedLanguage,
            data: language,
        });
    }
}