public SetupOtpDeviceLink(Controller controller, ApiClient apiClient, 
            ServerAccount serverAccount, CryptoKey cryptoKey)
        {
            InitializeComponent();

            Controller = controller;
            _apiClient = apiClient;
            _serverAccount = serverAccount;
            _cryptoKey = cryptoKey;

            _loadingAnimationRunning = true;
            ImageAnimator.Animate(lblQrCode.Image, AnimateLoader);
            
            txtOtpDeviceLinkCode.Visible = Program.AppEnvDebug;
        }
        /// <summary>
        /// Helper function to retrieve the ApiClient from the API clients dictionary.
        /// </summary>
        /// <returns></returns>
        private ApiClient GetApiClient()
        {
            var accountSettings = _model.ServerAccountSettings.Query().First();

            var cryptoKey = _model.CryptoKeys.Query().First(r => r.Id == accountSettings.ApiCryptoKeyId);

            var apiClient = new ApiClient(
                accountSettings.HttpsEnabled, accountSettings.Host, accountSettings.Port, accountSettings.ApiVersion,
                accountSettings.ApiKey, cryptoKey.PrivateKeyPem);
            
            return apiClient;
        }