Exemplo n.º 1
0
    /// <summary>
    /// Initializes the EthereumTransactionManager by initializing all collections and adding the proper methods to the events needed.
    /// </summary>
    /// <param name="disposableComponentManager"> The active DisposableComponentManager. </param>
    /// <param name="periodicUpdateManager"> The PeriodicUpdateManager to use when periodically checking for new transactions. </param>
    /// <param name="updateManager"> The UpdateManager to use when getting the transactions for each asset. </param>
    /// <param name="userWalletManager"> The active UserWalletManager. </param>
    /// <param name="apiService"> The active EtherscanApiService. </param>
    /// <param name="tradableAssetManager"> The active TradableAssetManager. </param>
    public EthereumTransactionManager(
        DisposableComponentManager disposableComponentManager,
        PeriodicUpdateManager periodicUpdateManager,
        UpdateManager updateManager,
        TradableAssetManager tradableAssetManager,
        UserWalletManager userWalletManager,
        EtherscanApiService apiService)
    {
        tradableAssetManager.OnTradableAssetAdded            += AddAssetToScrape;
        OptimizedScrollview.OnOptimizedScrollviewInitialized += optimizedScrollview =>
        {
            if (optimizedScrollview.scrollviewKey.Equals("asset_scrollview"))
            {
                scrollview = optimizedScrollview;
                scrollview.OnVisibleItemsChanged += OnVisibleAssetsChanged;

                periodicUpdateManager.AddPeriodicUpdater(this);
            }
        };

        this.tradableAssetManager = tradableAssetManager;
        this.userWalletManager    = userWalletManager;
        this.apiService           = apiService;

        disposableComponentManager.AddDisposable(this);
        updateManager.AddUpdater(this);
    }
    /// <summary>
    /// Starts the EtherBalanceObserver.
    /// </summary>
    /// <param name="periodicUpdateManager"> The active PeriodicUpdateManager. </param>
    /// <param name="tradableAssetManager"> The active TradableAssetManager. </param>
    private void StartObserver(PeriodicUpdateManager periodicUpdateManager, TradableAssetManager tradableAssetManager)
    {
        etherAsset = tradableAssetManager.EtherAsset;
        etherAsset.OnAssetBalanceChanged += OnEtherBalanceChanged;

        periodicUpdateManager.AddPeriodicUpdater(this, true);
    }
        /// <summary>
        /// Initializes the <see cref="GasManager"/> by assigning all required references.
        /// </summary>
        /// <param name="tradableAssetManager"> The active <see cref="TradableAssetManager"/>. </param>
        /// <param name="tradableAssetPriceManager"> The active <see cref="TradableAssetPriceManager"/>. </param>
        /// <param name="currencyManager"> The active <see cref="CurrencyManager"/>. </param>
        /// <param name="gasPriceObserver"> The active <see cref="GasPriceObserver"/>. </param>
        /// <param name="periodicUpdateManager"> The active <see cref="PeriodicUpdateManager"/>. </param>
        /// <param name="advancedModeToggle"> The toggle for switching between advanced and simple mode. </param>
        /// <param name="slider"> The slider used to control transaction speed. </param>
        /// <param name="gasLimitField"> The input field for the gas limit when in advanced mode. </param>
        /// <param name="gasPriceField"> The input field for the gas price when in advanced mode. </param>
        /// <param name="transactionFeeText"> The text component to use to set the transaction fee. </param>
        public GasManager(
            TradableAssetManager tradableAssetManager,
            TradableAssetPriceManager tradableAssetPriceManager,
            CurrencyManager currencyManager,
            GasPriceObserver gasPriceObserver,
            PeriodicUpdateManager periodicUpdateManager,
            Toggle advancedModeToggle,
            Slider slider,
            HopeInputField gasLimitField,
            HopeInputField gasPriceField,
            TMP_Text transactionFeeText)
        {
            this.tradableAssetManager      = tradableAssetManager;
            this.tradableAssetPriceManager = tradableAssetPriceManager;
            this.currencyManager           = currencyManager;
            this.periodicUpdateManager     = periodicUpdateManager;
            this.advancedModeToggle        = advancedModeToggle;
            this.gasLimitField             = gasLimitField;
            this.gasPriceField             = gasPriceField;
            this.transactionFeeText        = transactionFeeText;

            transactionSpeedSlider = new TransactionSpeedSlider(gasPriceObserver, slider, UpdateGasPriceEstimate);

            OnGasChanged += UpdateTransactionFeeVisuals;

            AddListenersAndObservables();
            EstimateGasLimit();
            transactionSpeedSlider.Start();
        }
Exemplo n.º 4
0
    public void Construct(
        CurrencyManager currencyManager,
        UserWalletManager userWalletManager,
        TradableAssetManager tradableAssetManager,
        TradableAssetPriceManager tradableAssetPriceManager,
        EthereumTransactionButtonManager ethereumTransactionButtonManager,
        EtherBalanceObserver etherBalanceObserver,
        GasPriceObserver gasPriceObserver,
        UpdateManager updateManager,
        DynamicDataCache dynamicDataCache,
        PeriodicUpdateManager periodicUpdateManager,
        ContactsManager contactsManager,
        ButtonClickObserver buttonClickObserver,
        RestrictedAddressManager restrictedAddressManager)
    {
        this.ethereumTransactionButtonManager = ethereumTransactionButtonManager;
        this.userWalletManager   = userWalletManager;
        this.dynamicDataCache    = dynamicDataCache;
        this.buttonClickObserver = buttonClickObserver;

        Asset   = new AssetManager(tradableAssetManager, etherBalanceObserver, updateManager, assetSymbol, assetBalance, assetImage);
        Gas     = new GasManager(tradableAssetManager, tradableAssetPriceManager, currencyManager, gasPriceObserver, periodicUpdateManager, advancedModeToggle, transactionSpeedSlider, gasLimitField, gasPriceField, transactionFee);
        Address = new AddressManager(addressField, contactName, contactsManager, restrictedAddressManager);
        Amount  = new AmountManager(currencyManager, tradableAssetPriceManager, maxToggle, maxText, amountField, currencyText, oppositeCurrencyAmountText, currencyButton, assetSymbol.text);

        Gas.SetupDependencies(Amount);
        Amount.SetupDependencies(Gas, Asset);

        simpleModeSelectableFields.Add(addressField.InputFieldBase);
        simpleModeSelectableFields.Add(amountField.InputFieldBase);

        advancedModeSelectableFields.AddRange(simpleModeSelectableFields);
        advancedModeSelectableFields.Add(gasLimitField.InputFieldBase);
        advancedModeSelectableFields.Add(gasPriceField.InputFieldBase);
    }
Exemplo n.º 5
0
 private static void UpdateDependenciesRecord(Settings.InstalledKit installed)
 {
     installed.Meta.RemoveAll(tuple => tuple.Key.Equals(DependenciesKey, StringComparison.OrdinalIgnoreCase));
     installed.Meta.Add(new Settings.InstalledKit.MetaTuple {
         Key   = DependenciesKey,
         Value = SerializeDependenciesRecord(PeriodicUpdateManager.TransitiveDependencyChainFor(installed.Name))
     });
 }
Exemplo n.º 6
0
    /// <summary>
    /// Initializes the TradableAssetManager by adding required methods to events and adding this class to the PeriodicUpdateManager.
    /// </summary>
    /// <param name="tokenContractManager"> The active TokenContractManager. </param>
    /// <param name="periodicUpdateManager"> The PeriodicUpdateManager to use to run this class's periodic updates. </param>
    /// <param name="disposableComponentManager"> The active DisposableComponentManager. </param>
    public TradableAssetManager(TokenContractManager tokenContractManager, PeriodicUpdateManager periodicUpdateManager, DisposableComponentManager disposableComponentManager)
    {
        disposableComponentManager.AddDisposable(this);

        tokenContractManager.OnTokenAdded        += AddTradableAsset;
        tokenContractManager.OnTokenRemoved      += RemoveTradableAsset;
        UserWalletManager.OnWalletLoadSuccessful += () => periodicUpdateManager.AddPeriodicUpdater(this);
    }
Exemplo n.º 7
0
    /// <summary>
    /// Initializes the LockPRPSManager with all dependencies.
    /// </summary>
    /// <param name="userWalletManager"> The active UserWalletManager. </param>
    /// <param name="periodicUpdateManager"> The active PeriodicUpdateManager. </param>
    /// <param name="prpsContract"> The active PRPS smart contract. </param>
    /// <param name="dubiContract"> The active DUBI smart contract. </param>
    /// <param name="hodlerContract"> The active Hodler smart contract. </param>
    /// <param name="tradableAssetManager"> The active TradableAssetManager. </param>
    public LockPRPSManager(
        UserWalletManager userWalletManager,
        PeriodicUpdateManager periodicUpdateManager,
        PRPS prpsContract,
        DUBI dubiContract,
        Hodler hodlerContract,
        TradableAssetManager tradableAssetManager)
    {
        this.prpsContract          = prpsContract;
        this.dubiContract          = dubiContract;
        this.hodlerContract        = hodlerContract;
        this.userWalletManager     = userWalletManager;
        this.periodicUpdateManager = periodicUpdateManager;

        tradableAssetManager.OnTradableAssetAdded   += CheckIfPRPSAdded;
        tradableAssetManager.OnTradableAssetRemoved += CheckIfPRPSRemoved;
    }
    public TradableAssetPriceManager(
        CoinMarketCapDataManager coinMarketCapDataManager,
        DubiExDataManager dubiexDataManager,
        CurrencyManager currencyManager,
        TradableAssetManager tradableAssetManager,
        TradableAssetButtonManager tradableAssetButtonManager,
        PeriodicUpdateManager periodicUpdateManager)
    {
        this.coinMarketCapDataManager = coinMarketCapDataManager;
        this.dubiexDataManager        = dubiexDataManager;
        this.tradableAssetManager     = tradableAssetManager;

        tradableAssetButtonManager.OnActiveButtonChanged += activeButton => UpdatePrice(activeButton.ButtonInfo);
        currencyManager.OnCurrencyChanged += ClearPrices;

        UserWalletManager.OnWalletLoadSuccessful += () => periodicUpdateManager.AddPeriodicUpdater(this);
    }
Exemplo n.º 9
0
    public LockedPRPSManager(
        DisposableComponentManager disposableComponentManager,
        UserWalletManager userWalletManager,
        Hodler hodlerContract,
        PRPS prpsContract,
        PeriodicUpdateManager periodicUpdateManager,
        EtherscanApiService apiService,
        TradableAssetManager tradableAssetManager)
    {
        this.userWalletManager     = userWalletManager;
        this.periodicUpdateManager = periodicUpdateManager;
        this.hodlerContract        = hodlerContract;
        this.prpsContract          = prpsContract;
        this.apiService            = apiService;

        disposableComponentManager.AddDisposable(this);

        tradableAssetManager.OnTradableAssetAdded   += CheckIfPRPSAdded;
        tradableAssetManager.OnTradableAssetRemoved += CheckIfPRPSRemoved;
    }
Exemplo n.º 10
0
 /// <summary>
 /// Initializes the GasPriceObserver.
 /// </summary>
 /// <param name="periodicUpdateManager"> The active PeriodicUpdateManager. </param>
 public GasPriceObserver(PeriodicUpdateManager periodicUpdateManager)
 {
     ChooseWalletMenu.OnAppLoaded += () => periodicUpdateManager.AddPeriodicUpdater(this, true);
 }
 public void Construct(TWallet hardwareWallet, PeriodicUpdateManager periodicUpdateManager)
 {
     this.hardwareWallet        = hardwareWallet;
     this.periodicUpdateManager = periodicUpdateManager;
 }
Exemplo n.º 12
0
 /// <summary>
 /// Initializes the EtherBalanceObserver once all tokens have been loaded.
 /// </summary>
 /// <param name="tokenContractManager"> The active TokenContractManager. </param>
 /// <param name="periodicUpdateManager"> The active PeriodicUpdateManager. </param>
 /// <param name="tradableAssetManager"> The active TradableAssetManager. </param>
 public EtherBalanceObserver(TokenContractManager tokenContractManager, PeriodicUpdateManager periodicUpdateManager, TradableAssetManager tradableAssetManager)
 {
     tokenContractManager.OnTokensLoaded += () => StartObserver(periodicUpdateManager, tradableAssetManager);
 }