public void ConfirmAction(Type action, object payload, ActionConfirmationCallback successCallback, ActionConfirmationCallback failureCallback = null)
        {
            List <IActionConfirmationFilter> list = new List <IActionConfirmationFilter>();

            foreach (IActionConfirmationFilter value in filterIdToFilter.Values)
            {
                if (!value.IsActionValid(action, payload))
                {
                    list.Add(value);
                }
            }
            confirmAction(action, isActionValid: true, list, successCallback, failureCallback);
        }
 private void confirmAction(Type action, bool isActionValid, List <IActionConfirmationFilter> filters, ActionConfirmationCallback successCallback, ActionConfirmationCallback failureCallback = null)
 {
     if (isActionValid && filters.Count > 0)
     {
         IActionConfirmationFilter actionConfirmationFilter = filters[0];
         filters.RemoveAt(0);
         actionConfirmationFilter.ShowConfirmation(action, delegate(bool result)
         {
             confirmAction(action, result, filters, successCallback, failureCallback);
         });
     }
     else if (isActionValid)
     {
         successCallback();
     }
     else if (failureCallback != null)
     {
         failureCallback();
     }
 }