| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
- //
- // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
- // copy, modify, and distribute this software in source code or binary form for use
- // in connection with the web services and APIs provided by Facebook.
- //
- // As with any software that integrates with the Facebook platform, your use of
- // this software is subject to the Facebook Developer Principles and Policies
- // [http://developers.facebook.com/policy/]. This copyright notice shall be
- // included in all copies or substantial portions of the software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #import <Foundation/Foundation.h>
- #import "FBSDKConstants.h"
- @class FBSDKGraphErrorRecoveryProcessor;
- @class FBSDKGraphRequest;
- /**
- Defines a delegate for `FBSDKGraphErrorRecoveryProcessor`.
- */
- @protocol FBSDKGraphErrorRecoveryProcessorDelegate<NSObject>
- /**
- Indicates the error recovery has been attempted.
- @param processor the processor instance.
- @param didRecover YES if the recovery was successful.
- @param error the error that that was attempted to be recovered from.
- */
- - (void)processorDidAttemptRecovery:(FBSDKGraphErrorRecoveryProcessor *)processor didRecover:(BOOL)didRecover error:(NSError *)error;
- @optional
- /**
- Indicates the processor is about to process the error.
- @param processor the processor instance.
- @param error the error is about to be processed.
- return NO if the processor should not process the error. For example,
- if you want to prevent alerts of localized messages but otherwise perform retries and recoveries,
- you could return NO for errors where userInfo[FBSDKGraphRequestErrorKey] equal to FBSDKGraphRequestErrorOther
- */
- - (BOOL)processorWillProcessError:(FBSDKGraphErrorRecoveryProcessor *)processor error:(NSError *)error;
- @end
- /**
- Defines a type that can process Facebook NSErrors with best practices.
- Facebook NSErrors can contain FBSDKErrorRecoveryAttempting instances to recover from errors, or
- localized messages to present to the user. This class will process the instances as follows:
- 1. If the error is temporary as indicated by FBSDKGraphRequestErrorKey, assume the recovery succeeded and
- notify the delegate.
- 2. If a FBSDKErrorRecoveryAttempting instance is available, display an alert (dispatched to main thread)
- with the recovery options and call the instance's [ attemptRecoveryFromError:optionIndex:...].
- 3. If a FBSDKErrorRecoveryAttempting is not available, check the userInfo for FBSDKLocalizedErrorDescriptionKey
- and present that in an alert (dispatched to main thread).
- By default, FBSDKGraphRequests use this type to process errors and retry the request upon a successful
- recovery.
- Note that Facebook recovery attempters can present UI or even cause app switches (such as to login). Any such
- work is dispatched to the main thread (therefore your request handlers may then run on the main thread).
- Login recovery requires FBSDKLoginKit. Login will use FBSDKLoginBehaviorNative and will prompt the user
- for all permissions last granted. If any are declined on the new request, the recovery is not successful but
- the `[FBSDKAccessToken currentAccessToken]` might still have been updated.
- .
- */
- @interface FBSDKGraphErrorRecoveryProcessor : NSObject
- /**
- Gets the delegate. Note this is a strong reference, and is nil'ed out after recovery is complete.
- */
- @property (nonatomic, strong, readonly) id<FBSDKGraphErrorRecoveryProcessorDelegate>delegate;
- /**
- Attempts to process the error, return YES if the error can be processed.
- @param error the error to process.
- @param request the related request that may be reissued.
- @param delegate the delegate that will be retained until recovery is complete.
- */
- - (BOOL)processError:(NSError *)error request:(FBSDKGraphRequest *)request delegate:(id<FBSDKGraphErrorRecoveryProcessorDelegate>) delegate;
- /**
- The callback for FBSDKErrorRecoveryAttempting
- @param didRecover if the recovery succeeded
- @param contextInfo unused
- */
- - (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo;
- @end
|