From 27919a28ae8b45ee298c1b1032a2d49912c4e9c3 Mon Sep 17 00:00:00 2001 From: Stephan Diederich Date: Tue, 16 Jul 2013 13:43:49 +0200 Subject: [PATCH] provide a result in feedbackComposeViewController's delegate fixes #31 --- Classes/BITFeedbackComposeViewController.m | 26 ++++++++++++------- ...BITFeedbackComposeViewControllerDelegate.h | 12 ++++++++- Classes/BITFeedbackListViewController.m | 3 ++- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/Classes/BITFeedbackComposeViewController.m b/Classes/BITFeedbackComposeViewController.m index a381db0e2f..8b81965ff8 100644 --- a/Classes/BITFeedbackComposeViewController.m +++ b/Classes/BITFeedbackComposeViewController.m @@ -218,14 +218,6 @@ #pragma mark - Private methods -- (void)dismiss { - if (self.delegate && [self.delegate respondsToSelector:@selector(feedbackComposeViewControllerDidFinish:)]) { - [self.delegate feedbackComposeViewControllerDidFinish:self]; - } else { - [self dismissViewControllerAnimated:YES completion:nil]; - } -} - - (void)setUserDataAction { BITFeedbackUserDataViewController *userController = [[BITFeedbackUserDataViewController alloc] initWithStyle:UITableViewStyleGrouped]; userController.delegate = self; @@ -238,8 +230,10 @@ [self presentViewController:navController animated:YES completion:nil]; } +#pragma mark - Actions + - (void)dismissAction:(id)sender { - [self dismiss]; + [self dismissWithResult:BITFeedbackComposeResultCancelled]; } - (void)sendAction:(id)sender { @@ -250,9 +244,21 @@ [self.manager submitMessageWithText:text]; - [self dismiss]; + [self dismissWithResult:BITFeedbackComposeResultSubmitted]; } +- (void)dismissWithResult:(BITFeedbackComposeResult) result { + if(self.delegate && [self.delegate respondsToSelector:@selector(feedbackComposeViewController:didFinishWithResult:)]) { + [self.delegate feedbackComposeViewController:self didFinishWithResult:result]; + } else if (self.delegate && [self.delegate respondsToSelector:@selector(feedbackComposeViewControllerDidFinish:)]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated" + [self.delegate feedbackComposeViewControllerDidFinish:self]; +#pragma clang diagnostic pop + } else { + [self dismissViewControllerAnimated:YES completion:nil]; + } +} #pragma mark - BITFeedbackUserDataDelegate diff --git a/Classes/BITFeedbackComposeViewControllerDelegate.h b/Classes/BITFeedbackComposeViewControllerDelegate.h index aa0c7c9061..0512925205 100644 --- a/Classes/BITFeedbackComposeViewControllerDelegate.h +++ b/Classes/BITFeedbackComposeViewControllerDelegate.h @@ -8,6 +8,11 @@ #import +typedef NS_ENUM(NSUInteger, BITFeedbackComposeResult) { + BITFeedbackComposeResultCancelled, //user hit cancel + BITFeedbackComposeResultSubmitted, //user hit submit +}; + @class BITFeedbackComposeViewController; /** @@ -31,6 +36,11 @@ @param composeViewController The `BITFeedbackComposeViewController` instance invoking this delegate */ -- (void)feedbackComposeViewControllerDidFinish:(BITFeedbackComposeViewController *)composeViewController; +- (void)feedbackComposeViewController:(BITFeedbackComposeViewController *)composeViewController + didFinishWithResult:(BITFeedbackComposeResult) composeResult; +#pragma mark - Deprecated methods + +/** this method is deprecated. If feedbackComposeViewController:didFinishWithResult: is implemented, this will not be called */ +- (void)feedbackComposeViewControllerDidFinish:(BITFeedbackComposeViewController *)composeViewController __attribute__((deprecated("Use feedbackComposeViewController:didFinishWithResult: instead"))); @end diff --git a/Classes/BITFeedbackListViewController.m b/Classes/BITFeedbackListViewController.m index bcda008e63..f12e2fc21e 100644 --- a/Classes/BITFeedbackListViewController.m +++ b/Classes/BITFeedbackListViewController.m @@ -341,7 +341,8 @@ #pragma mark - BITFeedbackComposeViewControllerDelegate -- (void)feedbackComposeViewControllerDidFinish:(BITFeedbackComposeViewController *)composeViewController { +- (void)feedbackComposeViewController:(BITFeedbackComposeViewController *)composeViewController + didFinishWithResult:(BITFeedbackComposeResult)composeResult { if (self.userDataComposeFlow) { if ([self.manager showFirstRequiredPresentationModal]) { __weak typeof(self) weakSelf = self;