Modify TDCAlert to expose underlying alert for non-blocking

This commit is contained in:
Michael
2024-07-03 18:05:54 -04:00
parent 18a8fecf3f
commit 7fc694e459
2 changed files with 88 additions and 69 deletions
+25 -11
View File
@@ -257,11 +257,13 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
#pragma mark -
#pragma mark Non-blocking Alerts (Panel)
+ (void)alertWithMessage:(NSString *)bodyText
+ (TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
{
/* Will never return nil because no suppression. */
return (TVCAlert * _Nonnull)
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -273,12 +275,13 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:nil];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
{
return (TVCAlert * _Nonnull)
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -290,13 +293,14 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:nil];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
{
return
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -308,12 +312,13 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:nil];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock
{
return
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -325,13 +330,14 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:completionBlock];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock
{
return
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -343,7 +349,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:completionBlock];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
@@ -351,6 +357,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
suppressionText:(nullable NSString *)suppressText
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock
{
return
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -362,7 +369,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:completionBlock];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
@@ -371,6 +378,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
suppressionText:(nullable NSString *)suppressText
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock
{
return
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -382,7 +390,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:completionBlock];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
@@ -391,6 +399,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
accessoryView:(nullable NSView *)accessoryView
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock
{
return
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -402,7 +411,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:completionBlock];
}
+ (void)alertWithMessage:(NSString *)bodyText
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
@@ -418,7 +427,10 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
/* Require main thread */
if ([NSThread isMainThread] == NO) {
__block TVCAlert *alert = nil;
XRPerformBlockSynchronouslyOnQueue(dispatch_get_main_queue(), ^{
alert =
[self alertWithMessage:bodyText
title:titleText
defaultButton:buttonDefault
@@ -429,7 +441,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock:completionBlock];
});
return;
return alert;
}
/* Prepare suppression */
@@ -442,7 +454,7 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
completionBlock(TDCAlertResponseDefault, YES, nil);
}
return;
return nil;
}
}
@@ -485,6 +497,8 @@ NSString * const TDCAlertSuppressionPrefix = @"Text Input Prompt Suppression ->
suppressionKey:suppressKey
suppressionResponse:NULL];
}];
return alert;
}
#pragma mark -
+63 -58
View File
@@ -114,72 +114,77 @@ typedef void (^TDCAlertCompletionBlock)(TDCAlertResponse buttonClicked, BOOL sup
#pragma mark -
#pragma mark Non-blocking Alerts (Panel)
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate;
/* The underlying TVCAlert object returned by the non-blocking
methods does NOT need to be retained. Simply ignore the return
value if you have no use in accessing the object. */
/* Return value is only nil if completion block is immediately
returned for suppression. */
+ (TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther;
+ (TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText;
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
accessoryView:(nullable NSView *)accessoryView
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
accessoryView:(nullable NSView *)accessoryView
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (void)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
accessoryView:(nullable NSView *)accessoryView
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
+ (nullable TVCAlert *)alertWithMessage:(NSString *)bodyText
title:(NSString *)titleText
defaultButton:(NSString *)buttonDefault
alternateButton:(nullable NSString *)buttonAlternate
otherButton:(nullable NSString *)buttonOther
suppressionKey:(nullable NSString *)suppressKey
suppressionText:(nullable NSString *)suppressText
accessoryView:(nullable NSView *)accessoryView
completionBlock:(nullable TDCAlertCompletionBlock)completionBlock;
#pragma mark -
#pragma mark Non-blocking Alerts (Sheet)