From 5971d985b9fa539c426e99e02bc7f473a7d3042e Mon Sep 17 00:00:00 2001 From: Doug Tabuchi Date: Wed, 19 Oct 2016 14:47:18 -0400 Subject: [PATCH 1/5] Add forceNewThread bool --- Classes/BITFeedbackManager.h | 5 +++++ Classes/BITFeedbackManager.m | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Classes/BITFeedbackManager.h b/Classes/BITFeedbackManager.h index afdf08b948..618852788b 100644 --- a/Classes/BITFeedbackManager.h +++ b/Classes/BITFeedbackManager.h @@ -225,6 +225,11 @@ typedef NS_ENUM(NSInteger, BITFeedbackObservationMode) { */ @property (nonatomic, readwrite) BITFeedbackObservationMode feedbackObservationMode; +/** +TODO Add docs + */ +@property (nonatomic, readwrite) BOOL forceNewThread; + /** Prefill feedback compose message user interface with the items given. diff --git a/Classes/BITFeedbackManager.m b/Classes/BITFeedbackManager.m index 4a0d105610..f43b457ab3 100644 --- a/Classes/BITFeedbackManager.m +++ b/Classes/BITFeedbackManager.m @@ -77,6 +77,7 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage BOOL _incomingMessagesAlertShowing; BOOL _didEnterBackgroundState; BOOL _networkRequestInProgress; + BOOL _forceNewThread; BITFeedbackObservationMode _observationMode; } @@ -93,6 +94,7 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage _requireUserEmail = BITFeedbackUserDataElementOptional; _showAlertOnIncomingMessages = YES; _showFirstRequiredPresentationModal = YES; + _forceNewThread = NO; _disableFeedbackManager = NO; _networkRequestInProgress = NO; @@ -450,7 +452,7 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage if ([unarchiver containsValueForKey:kBITFeedbackUserDataAsked]) _didAskUserData = YES; - + if ([unarchiver containsValueForKey:kBITFeedbackToken]) { self.token = [unarchiver decodeObjectForKey:kBITFeedbackToken]; [self addStringValueToKeychain:self.token forKey:kBITFeedbackToken]; @@ -467,7 +469,11 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage self.token = nil; } } - + + if (_forceNewThread) { + self.token = nil; + } + if ([unarchiver containsValueForKey:kBITFeedbackDateOfLastCheck]) self.lastCheck = [unarchiver decodeObjectForKey:kBITFeedbackDateOfLastCheck]; From 8a0bb664beccbcaae607c465cff046028ba0530c Mon Sep 17 00:00:00 2001 From: Doug Tabuchi Date: Wed, 19 Oct 2016 15:45:48 -0400 Subject: [PATCH 2/5] Add docs --- Classes/BITFeedbackManager.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Classes/BITFeedbackManager.h b/Classes/BITFeedbackManager.h index 618852788b..ed6841a9a1 100644 --- a/Classes/BITFeedbackManager.h +++ b/Classes/BITFeedbackManager.h @@ -226,7 +226,12 @@ typedef NS_ENUM(NSInteger, BITFeedbackObservationMode) { @property (nonatomic, readwrite) BITFeedbackObservationMode feedbackObservationMode; /** -TODO Add docs + Indicates if a new thread should be created for each new feedback message + + Setting thos to `YES` will force a new thread whenever a new message is sent as + opposed to the default resume thread behaviour. + + Default is `NO` */ @property (nonatomic, readwrite) BOOL forceNewThread; From e67bfb941dbcfd4f8dfde24f4fb4fc52400c9a7f Mon Sep 17 00:00:00 2001 From: Doug Tabuchi Date: Wed, 16 Nov 2016 11:07:36 -0500 Subject: [PATCH 3/5] Don't store token after first message --- Classes/BITFeedbackManager.m | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Classes/BITFeedbackManager.m b/Classes/BITFeedbackManager.m index f43b457ab3..a2cf81affd 100644 --- a/Classes/BITFeedbackManager.m +++ b/Classes/BITFeedbackManager.m @@ -735,9 +735,13 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage NSString *token = [jsonDictionary objectForKey:@"token"]; NSDictionary *feedbackObject = [jsonDictionary objectForKey:@"feedback"]; if (feedback && token && feedbackObject) { - // update the thread token, which is not available until the 1st message was successfully sent - self.token = token; - + if (self.forceNewThread) { + self.token = nil; + } else { + // update the thread token, which is not available until the 1st message was successfully sent + self.token = token; + } + self.lastCheck = [NSDate date]; // add all new messages From 15607295eb547d8d9a13b57622c8101bd61c3fed Mon Sep 17 00:00:00 2001 From: "Benjamin Scholtysik (Reimold)" Date: Tue, 29 Nov 2016 17:16:19 -0800 Subject: [PATCH 4/5] Use FeedbackManagerDelegate to add forse a new feedback thread. --- Classes/BITFeedbackManager.h | 11 ----------- Classes/BITFeedbackManager.m | 17 ++++++++++++----- Classes/BITFeedbackManagerDelegate.h | 10 ++++++++++ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Classes/BITFeedbackManager.h b/Classes/BITFeedbackManager.h index ed6841a9a1..3ef85c4530 100644 --- a/Classes/BITFeedbackManager.h +++ b/Classes/BITFeedbackManager.h @@ -225,17 +225,6 @@ typedef NS_ENUM(NSInteger, BITFeedbackObservationMode) { */ @property (nonatomic, readwrite) BITFeedbackObservationMode feedbackObservationMode; -/** - Indicates if a new thread should be created for each new feedback message - - Setting thos to `YES` will force a new thread whenever a new message is sent as - opposed to the default resume thread behaviour. - - Default is `NO` - */ -@property (nonatomic, readwrite) BOOL forceNewThread; - - /** Prefill feedback compose message user interface with the items given. diff --git a/Classes/BITFeedbackManager.m b/Classes/BITFeedbackManager.m index a2cf81affd..23541bfc60 100644 --- a/Classes/BITFeedbackManager.m +++ b/Classes/BITFeedbackManager.m @@ -77,7 +77,6 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage BOOL _incomingMessagesAlertShowing; BOOL _didEnterBackgroundState; BOOL _networkRequestInProgress; - BOOL _forceNewThread; BITFeedbackObservationMode _observationMode; } @@ -94,7 +93,6 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage _requireUserEmail = BITFeedbackUserDataElementOptional; _showAlertOnIncomingMessages = YES; _showFirstRequiredPresentationModal = YES; - _forceNewThread = NO; _disableFeedbackManager = NO; _networkRequestInProgress = NO; @@ -470,7 +468,7 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage } } - if (_forceNewThread) { + if ([self shouldForceNewThread]) { self.token = nil; } @@ -663,6 +661,15 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage [self saveMessages]; } +- (BOOL)shouldForceNewThread { + if (self.delegate && [self.delegate respondsToSelector:@selector(forceNewFeedbackThreadForFeedbackManager:)]) { + return [self.delegate forceNewFeedbackThreadForFeedbackManager:self]; + } + else { + return NO; + } +} + #pragma mark - User @@ -735,8 +742,8 @@ typedef void (^BITLatestImageFetchCompletionBlock)(UIImage *_Nonnull latestImage NSString *token = [jsonDictionary objectForKey:@"token"]; NSDictionary *feedbackObject = [jsonDictionary objectForKey:@"feedback"]; if (feedback && token && feedbackObject) { - if (self.forceNewThread) { - self.token = nil; + if ([self shouldForceNewThread]) { + self.token = nil; } else { // update the thread token, which is not available until the 1st message was successfully sent self.token = token; diff --git a/Classes/BITFeedbackManagerDelegate.h b/Classes/BITFeedbackManagerDelegate.h index 644496947d..029732a507 100644 --- a/Classes/BITFeedbackManagerDelegate.h +++ b/Classes/BITFeedbackManagerDelegate.h @@ -82,6 +82,16 @@ NS_ASSUME_NONNULL_BEGIN */ - (nullable NSArray *)preparedItemsForFeedbackManager:(BITFeedbackManager *)feedbackManager; +/** + * Indicates if a new thread should be created for each new feedback message + * + * Setting it to `YES` will force a new thread whenever a new message is sent as + * opposed to the default resume thread behaviour. + * + * @return A BOOL indicating if each feedback message should be sent as a new thread. + */ +- (BOOL)forceNewFeedbackThreadForFeedbackManager:(BITFeedbackManager *)feedbackManager; + @end NS_ASSUME_NONNULL_END From b5cc5dc4e95e4c383bf3936064badcf2e0c07985 Mon Sep 17 00:00:00 2001 From: "Benjamin Scholtysik (Reimold)" Date: Tue, 29 Nov 2016 17:18:58 -0800 Subject: [PATCH 5/5] Fix copyright notice --- Classes/BITFeedbackManager.m | 2 +- Classes/BITFeedbackManagerDelegate.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/BITFeedbackManager.m b/Classes/BITFeedbackManager.m index 23541bfc60..7dde93471c 100644 --- a/Classes/BITFeedbackManager.m +++ b/Classes/BITFeedbackManager.m @@ -1,7 +1,7 @@ /* * Author: Andreas Linde * - * Copyright (c) 2012-2014 HockeyApp, Bit Stadium GmbH. + * Copyright (c) 2012-2016 HockeyApp, Bit Stadium GmbH. * All rights reserved. * * Permission is hereby granted, free of charge, to any person diff --git a/Classes/BITFeedbackManagerDelegate.h b/Classes/BITFeedbackManagerDelegate.h index 029732a507..9afb889462 100644 --- a/Classes/BITFeedbackManagerDelegate.h +++ b/Classes/BITFeedbackManagerDelegate.h @@ -1,7 +1,7 @@ /* - * Author: Stephan Diederich + * Authors: Stephan Diederich, Benjamin Scholtysik * - * Copyright (c) 2013-2014 HockeyApp, Bit Stadium GmbH. + * Copyright (c) 2013-2016 HockeyApp, Bit Stadium GmbH. * All rights reserved. * * Permission is hereby granted, free of charge, to any person