public TradableAssetNotificationManager(
        EthereumNetworkManager.Settings networkSettings,
        DisposableComponentManager disposableComponentManager,
        UserWalletManager userWalletManager,
        TradableAssetManager tradableAssetManager,
        EthereumTransactionManager ethereumTransactionManager,
        LockedPRPSManager lockedPrpsManager,
        PRPS prpsContract)
    {
        this.networkSettings            = networkSettings;
        this.userWalletManager          = userWalletManager;
        this.ethereumTransactionManager = ethereumTransactionManager;
        this.lockedPrpsManager          = lockedPrpsManager;
        this.prpsContract = prpsContract;

        disposableComponentManager.AddDisposable(this);

        UserWalletManager.OnWalletLoadSuccessful += LoadNewNotificationList;

        tradableAssetManager.OnTradableAssetAdded   += AssetAdded;
        tradableAssetManager.OnTradableAssetRemoved += AssetRemoved;

        ethereumTransactionManager.OnTransactionsAdded += TransactionsUpdated;
        lockedPrpsManager.OnLockedPRPSUpdated          += TransactionsUpdated;
    }
예제 #2
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>
        /// 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();
        }
    /// <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);
    }
예제 #5
0
 public void Construct(
     EthereumTransactionManager ethereumTransactionManager,
     EthereumNetworkManager.Settings ethereumNetworkSettings,
     EthereumPendingTransactionManager ethereumPendingTransactionManager,
     TokenContractManager tokenContractManager,
     TradableAssetManager tradableAssetManager,
     TradableAssetPriceManager tradableAssetPriceManager,
     TradableAssetNotificationManager notificationManager,
     LockedPRPSManager lockedPrpsManager,
     PRPS prpsContract,
     CurrencyManager currencyManager,
     HopeWalletInfoManager hopeWalletInfoManager,
     UserWalletManager userWalletManager,
     LogoutHandler logoutHandler)
 {
     this.ethereumNetworkSettings           = ethereumNetworkSettings;
     this.ethereumTransactionManager        = ethereumTransactionManager;
     this.ethereumPendingTransactionManager = ethereumPendingTransactionManager;
     this.tokenContractManager      = tokenContractManager;
     this.tradableAssetManager      = tradableAssetManager;
     this.tradableAssetPriceManager = tradableAssetPriceManager;
     this.notificationManager       = notificationManager;
     this.lockedPrpsManager         = lockedPrpsManager;
     this.prpsContract          = prpsContract;
     this.currencyManager       = currencyManager;
     this.hopeWalletInfoManager = hopeWalletInfoManager;
     this.userWalletManager     = userWalletManager;
     this.logoutHandler         = logoutHandler;
 }
예제 #6
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);
    }
예제 #7
0
 public void Construct(TradableAssetManager tradableAssetManager,
                       TradableAssetImageManager tradableAssetImageManager,
                       UserWalletManager userWalletManager)
 {
     this.tradableAssetManager      = tradableAssetManager;
     this.tradableAssetImageManager = tradableAssetImageManager;
     this.userWalletManager         = userWalletManager;
 }
예제 #8
0
 public void Construct(
     TradableAssetManager tradableAssetManager,
     TokenContractManager tokenContractManager,
     TokenListManager tokenListManager,
     DUBI dubiContract)
 {
     this.tradableAssetManager = tradableAssetManager;
     this.tokenContractManager = tokenContractManager;
     this.tokenListManager     = tokenListManager;
     this.dubiContract         = dubiContract;
 }
 public void Construct(
     TradableAssetManager tradableAssetManager,
     TradableAssetImageManager tradableAssetImageManager,
     HopeWalletInfoManager userWalletInfoManager,
     DynamicDataCache dynamicDataCache,
     ContactsManager contactsManager)
 {
     this.tradableAssetManager      = tradableAssetManager;
     this.tradableAssetImageManager = tradableAssetImageManager;
     this.userWalletInfoManager     = userWalletInfoManager;
     this.dynamicDataCache          = dynamicDataCache;
     this.contactsManager           = contactsManager;
 }
 public void Construct(
     PopupManager popupManager,
     TradableAssetManager tradableAssetManager,
     TradableAssetImageManager tradableAssetImageManager,
     ContactsManager contactsManager,
     Hodler hodler)
 {
     this.popupManager              = popupManager;
     this.tradableAssetManager      = tradableAssetManager;
     this.tradableAssetImageManager = tradableAssetImageManager;
     this.contactsManager           = contactsManager;
     this.hodler = hodler;
 }
        public PriceManager(
            CurrencyManager currencyManager,
            TradableAssetPriceManager tradableAssetPriceManager,
            TradableAssetManager tradableAssetManager,
            TMP_Text priceText)
        {
            this.currencyManager           = currencyManager;
            this.tradableAssetPriceManager = tradableAssetPriceManager;
            this.tradableAssetManager      = tradableAssetManager;
            this.priceText = priceText;

            currencyManager.OnCurrencyChanged                += OnCurrencyChanged;
            tradableAssetManager.OnBalancesUpdated           += UpdateAssetValue;
            tradableAssetPriceManager.OnPriceUpdateSucceeded += UpdateAssetValue;
        }
    public void Construct(
        TradableAssetManager tradableAssetManager,
        TradableAssetImageManager tradableAssetImageManager,
        ContactsManager contactsManager,
        UserWalletManager userWalletManager,
        HopeWalletInfoManager userWalletInfoManager,
        Hodler hodler)
    {
        this.tradableAssetManager      = tradableAssetManager;
        this.tradableAssetImageManager = tradableAssetImageManager;
        this.contactsManager           = contactsManager;
        this.hodler = hodler;

        walletAddress = userWalletManager.GetWalletAddress();
        walletName    = userWalletManager.ActiveWalletType == UserWalletManager.WalletType.Hope ? userWalletInfoManager.GetWalletInfo(walletAddress).WalletName : userWalletManager.ActiveWalletType.ToString();
    }
예제 #13
0
    /// <summary>
    /// Initializes the TradableAssetButtonManager by injecting the settings and assigning all required methods to events.
    /// </summary>
    /// <param name="erc20TokenButtonFactory"> The factory which creates ERC20TokenAssetButtons. </param>
    /// <param name="etherAssetButtonFactory"> The factory which creates EtherAssetButtons. </param>
    /// <param name="disposableComponentManager"> The active DisposableComponentManager. </param>
    /// <param name="tokenContractManager"> The active TokenContractManager. </param>
    /// <param name="tradableAssetManager"> The active TradableAssetManager. </param>
    public TradableAssetButtonManager(
        ERC20TokenAssetButton.Factory erc20TokenButtonFactory,
        EtherAssetButton.Factory etherAssetButtonFactory,
        DisposableComponentManager disposableComponentManager,
        TokenContractManager tokenContractManager,
        TradableAssetManager tradableAssetManager)
    {
        this.erc20TokenButtonFactory = erc20TokenButtonFactory;
        this.etherAssetButtonFactory = etherAssetButtonFactory;
        this.tokenContractManager    = tokenContractManager;

        disposableComponentManager.AddDisposable(this);

        tradableAssetManager.OnTradableAssetAdded   += AddAssetButton;
        tradableAssetManager.OnTradableAssetRemoved += RemoveButton;
    }
예제 #14
0
    public void Construct(PopupManager popupManager,
                          TradableAssetManager tradableAssetManager,
                          TradableAssetButtonManager tradableAssetButtonManager,
                          TradableAssetImageManager tradableAssetImageManager,
                          EthereumTransactionButtonManager transactionButtonManager,
                          TradableAssetNotificationManager notificationManager)
    {
        this.popupManager               = popupManager;
        this.tradableAssetManager       = tradableAssetManager;
        this.tradableAssetButtonManager = tradableAssetButtonManager;
        this.tradableAssetImageManager  = tradableAssetImageManager;
        this.transactionButtonManager   = transactionButtonManager;
        this.notificationManager        = notificationManager;

        notificationManager.OnNotificationsUpdated += UpdateAssetNotifications;
    }
예제 #15
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);
    }
        /// <summary>
        /// Initializes the <see cref="AssetManager"/> by assigning all required references.
        /// </summary>
        /// <param name="tradableAssetManager"> The active <see cref="TradableAssetManager"/>. </param>
        /// <param name="etherBalanceObserver"> The active <see cref="EtherBalanceObserver"/>. </param>
        /// <param name="updateManager"> The active <see cref="UpdateManager"/>. </param>
        /// <param name="assetSymbol"> The asset symbol text component. </param>
        /// <param name="assetBalance"> The asset balance text component. </param>
        /// <param name="assetImage"> The image component used for assigning the asset image. </param>
        public AssetManager(
            TradableAssetManager tradableAssetManager,
            EtherBalanceObserver etherBalanceObserver,
            UpdateManager updateManager,
            TMP_Text assetSymbol,
            TMP_Text assetBalance,
            Image assetImage)
        {
            this.tradableAssetManager = tradableAssetManager;
            this.etherBalanceObserver = etherBalanceObserver;
            this.updateManager        = updateManager;
            this.assetSymbol          = assetSymbol;
            this.assetBalance         = assetBalance;
            this.assetImage           = assetImage;

            Start();
        }
예제 #18
0
    /// <summary>
    /// Initializes the EthereumTransactionButtonManager by assigning the settings.
    /// </summary>
    /// <param name="settings"> The settings of this manager. </param>
    /// <param name="disposableComponentManager"> The active DisposableComponentManager. </param>
    /// <param name="tradableAssetManager"> The TradableAssetManager to retrieve the current asset from. </param>
    /// <param name="transactionManager"> The EthereumTransactionManager to use to get the current transaction list. </param>
    /// <param name="buttonFactory"> The TransactionInfoButton factory. </param>
    public EthereumTransactionButtonManager(
        Settings settings,
        DisposableComponentManager disposableComponentManager,
        TradableAssetManager tradableAssetManager,
        EthereumTransactionManager transactionManager,
        TransactionInfoButton.Factory buttonFactory)
    {
        this.settings             = settings;
        this.tradableAssetManager = tradableAssetManager;
        this.transactionManager   = transactionManager;
        this.buttonFactory        = buttonFactory;

        disposableComponentManager.AddDisposable(this);

        transactionManager.OnTransactionsAdded += ProcessTransactions;

        OpenWalletMenu.TransactionTabManager.OnTabChanged   += OnTransactionTabChanged;
        OpenWalletMenu.TransactionPageManager.OnPageChanged += OnPageChanged;
    }
        public TransactionPageManager(
            TradableAssetManager tradableAssetManager,
            EthereumTransactionManager ethereumTransactionManager,
            GameObject pagesSection)
        {
            this.tradableAssetManager       = tradableAssetManager;
            this.ethereumTransactionManager = ethereumTransactionManager;
            this.pagesSection = pagesSection;
            leftButton        = pagesSection.GetComponentsInChildren <Button>()[0];
            rightButton       = pagesSection.GetComponentsInChildren <Button>()[1];
            pageNumText       = pagesSection.GetComponentInChildren <TMP_Text>();

            TransactionTabManager.OnTabChanged             += TabChanged;
            tradableAssetManager.OnBalancesUpdated         += TransactionListOrAssetUpdated;
            ethereumTransactionManager.OnTransactionsAdded += TransactionListOrAssetUpdated;

            leftButton.onClick.AddListener(() => PageChanged(true));
            rightButton.onClick.AddListener(() => PageChanged(false));
        }
        public TransactionTabManager(
            TradableAssetManager tradableAssetManager,
            EthereumTransactionManager ethereumTransactionManager,
            IconButtons transactionTabs)
        {
            this.tradableAssetManager       = tradableAssetManager;
            this.ethereumTransactionManager = ethereumTransactionManager;
            this.transactionTabs            = transactionTabs;

            allTabText      = transactionTabs.gameObject.GetComponentsInChildren <TMP_Text>()[0];
            sentTabText     = transactionTabs.gameObject.GetComponentsInChildren <TMP_Text>()[1];
            receivedTabText = transactionTabs.gameObject.GetComponentsInChildren <TMP_Text>()[2];

            tradableAssetManager.OnBalancesUpdated         += ChangeText;
            ethereumTransactionManager.OnTransactionsAdded += ChangeText;
            transactionTabs.OnButtonChanged += TabChanged;

            AccountsPopup.OnAccountChanged += _ => ChangeText();
        }
예제 #21
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;
    }
예제 #22
0
    public void Construct(
        UserWalletManager userWalletManager,
        EthereumTransactionManager ethereumTransactionManager,
        EthereumTransactionButtonManager ethereumTransactionButtonManager,
        TradableAssetManager tradableAssetManager,
        TradableAssetButtonManager tradableAssetButtonManager,
        TradableAssetNotificationManager tradableAssetNotificationManager,
        LockedPRPSManager lockedPRPSManager,
        LockPRPSManager lockPRPSManager)
    {
        this.userWalletManager                = userWalletManager;
        this.ethereumTransactionManager       = ethereumTransactionManager;
        this.ethereumTransactionButtonManager = ethereumTransactionButtonManager;
        this.tradableAssetManager             = tradableAssetManager;
        this.tradableAssetButtonManager       = tradableAssetButtonManager;
        this.tradableAssetNotificationManager = tradableAssetNotificationManager;
        this.lockedPRPSManager                = lockedPRPSManager;
        this.lockPRPSManager = lockPRPSManager;

        bool showTooltips = SecurePlayerPrefs.GetBool(PlayerPrefConstants.SETTING_SHOW_TOOLTIPS);

        foreach (TooltipItem tooltip in tooltipItems)
        {
            if (showTooltips)
            {
                tooltip.PopupManager = popupManager;
            }
            else if (tooltip.infoIcon)
            {
                tooltip.gameObject.SetActive(false);
            }
            else
            {
                tooltip.enabled = false;
            }
        }
    }
 /// <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);
 }
예제 #24
0
 /// <summary>
 /// Initializes the DubiExDataManager.
 /// </summary>
 /// <param name="dubiExApiService"> The active DubiExApiService. </param>
 /// <param name="tradableAssetManager"> The active TradableAssetManager. </param>
 public DubiExDataManager(DubiExApiService dubiExApiService, TradableAssetManager tradableAssetManager)
 {
     this.dubiExApiService     = dubiExApiService;
     this.tradableAssetManager = tradableAssetManager;
 }