NewsBlur/clients/ios/Other Sources/Overshare Kit/OSKActivity.m
2014-05-19 13:33:42 -07:00

164 lines
5.8 KiB
Objective-C
Executable file

//
// OSKActivity.m
// Overshare
//
//
// Copyright (c) 2013 Overshare Kit. All rights reserved.
//
#import "OSKActivity.h"
#import "OSKActivitiesManager.h"
#import "OSKApplicationCredential.h"
// ACTIVITY OPTIONS
NSString * const OSKActivityOption_ExcludedTypes = @"OSKActivityOption_ExcludedTypes";
NSString * const OSKActivityOption_BespokeActivities = @"OSKActivityOption_BespokeActivities";
NSString * const OSKActivityOption_RequireOperations = @"OSKActivityOption_RequireOperations";
// ACTIVITY TYPES
NSString * const OSKActivityType_iOS_Twitter = @"OSKActivityType_iOS_Twitter";
NSString * const OSKActivityType_iOS_Facebook = @"OSKActivityType_iOS_Facebook";
NSString * const OSKActivityType_iOS_Safari = @"OSKActivityType_iOS_Safari";
NSString * const OSKActivityType_iOS_SMS = @"OSKActivityType_iOS_SMS";
NSString * const OSKActivityType_iOS_Email = @"OSKActivityType_iOS_Email";
NSString * const OSKActivityType_iOS_CopyToPasteboard = @"OSKActivityType_iOS_CopyToPasteboard";
NSString * const OSKActivityType_iOS_AirDrop = @"OSKActivityType_iOS_AirDrop";
NSString * const OSKActivityType_iOS_ReadingList = @"OSKActivityType_iOS_ReadingList";
NSString * const OSKActivityType_iOS_SaveToCameraRoll = @"OSKActivityType_iOS_SaveToCameraRoll";
NSString * const OSKActivityType_API_AppDotNet = @"OSKActivityType_API_AppDotNet";
NSString * const OSKActivityType_API_500Pixels = @"OSKActivityType_API_500Pixels";
NSString * const OSKActivityType_API_Instapaper = @"OSKActivityType_API_Instapaper";
NSString * const OSKActivityType_API_Readability = @"OSKActivityType_API_Readability";
NSString * const OSKActivityType_API_Pocket = @"OSKActivityType_API_Pocket";
NSString * const OSKActivityType_API_Pinboard = @"OSKActivityType_API_Pinboard";
NSString * const OSKActivityType_API_GooglePlus = @"OSKActivityType_API_GooglePlus";
NSString * const OSKActivityType_URLScheme_Instagram = @"OSKActivityType_URLScheme_Instagram";
NSString * const OSKActivityType_URLScheme_Riposte = @"OSKActivityType_URLScheme_Riposte";
NSString * const OSKActivityType_URLScheme_Tweetbot = @"OSKActivityType_URLScheme_Tweetbot";
NSString * const OSKActivityType_URLScheme_1Password_Search = @"OSKActivityType_URLScheme_1Password_Search";
NSString * const OSKActivityType_URLScheme_1Password_Browser = @"OSKActivityType_URLScheme_1Password_Browser";
NSString * const OSKActivityType_URLScheme_Chrome = @"OSKActivityType_URLScheme_Chrome";
NSString * const OSKActivityType_URLScheme_Omnifocus = @"OSKActivityType_URLScheme_Omnifocus";
NSString * const OSKActivityType_URLScheme_Things = @"OSKActivityType_URLScheme_Things";
NSString * const OSKActivityType_URLScheme_Drafts = @"OSKActivityType_URLScheme_Drafts";
NSString * const OSKActivityType_SDK_Pocket = @"OSKActivityType_SDK_Pocket";
@interface OSKActivity ()
@property (strong, nonatomic, readonly) OSKActivitiesManager *manager;
@property (strong, nonatomic, readwrite) OSKShareableContentItem *contentItem;
@end
@implementation OSKActivity
@synthesize manager = _manager;
#pragma mark - Initialization
- (instancetype)initWithContentItem:(OSKShareableContentItem *)item {
self = [super init];
if (self) {
_contentItem = item;
}
return self;
}
#pragma mark - Do Not Override
+ (OSKApplicationCredential *)applicationCredential {
return [[OSKActivitiesManager sharedInstance] applicationCredentialForActivityType:[self activityType]];
}
- (OSKActivitiesManager *)manager {
if (_manager == nil) {
_manager = [OSKActivitiesManager sharedInstance];
}
return _manager;
}
- (BOOL)requiresPurchase {
return [self.manager activityTypeRequiresPurchase:[self.class activityType]];
}
- (BOOL)isAlreadyPurchased {
return [self.manager activityTypeIsPurchased:[self.class activityType]];
}
#pragma mark - Methods for Subclasses
+ (NSString *)supportedContentItemType {
NSAssert(NO, @"OSKActivity subclasses must override `supportedContentItemType` without calling super.");
return nil;
}
+ (BOOL)isAvailable {
NSAssert(NO, @"OSKActivity subclasses must override `isAvailable` without calling super.");
return NO;
}
+ (NSString *)activityType {
NSAssert(NO, @"OSKActivity subclasses must override `activityType` without calling super.");
return nil;
}
+ (NSString *)activityName {
NSAssert(NO, @"OSKActivity subclasses must override `activityName` without calling super.");
return nil;
}
+ (UIImage *)iconForIdiom:(UIUserInterfaceIdiom)idiom {
NSAssert(NO, @"OSKActivity subclasses must override `iconForIdiom:` without calling super.");
return nil;
}
+ (UIImage *)settingsIcon {
// Optional
return nil;
}
+ (OSKAuthenticationMethod)authenticationMethod {
NSAssert(NO, @"OSKActivity subclasses must override `authenticationMethod` without calling super.");
return OSKAuthenticationMethod_None;
}
+ (BOOL)requiresApplicationCredential {
NSAssert(NO, @"OSKActivity subclasses must override `requiresApplicationCredential` without calling super.");
return NO;
}
+ (OSKPublishingMethod)publishingMethod {
NSAssert(NO, @"OSKActivity subclasses must override `usesPublishingViewController` without calling super.");
return OSKPublishingMethod_None;
}
- (BOOL)isReadyToPerform {
NSAssert(NO, @"OSKActivity subclasses must override `isReadyToPerform` without calling super.");
return NO;
}
- (void)performActivity:(OSKActivityCompletionHandler)completion {
NSAssert(NO, @"OSKActivity subclasses must override `performActivity:` without calling super.");
}
+ (BOOL)canPerformViaOperation {
NSAssert(NO, @"OSKActivity subclasses must override `canPerformViaOperation` without calling super.");
return NO;
}
- (OSKActivityOperation *)operationForActivityWithCompletion:(OSKActivityCompletionHandler)completion {
NSAssert(NO, @"OSKActivity subclasses must override `operationForActivityWithCompletion:` without calling super.");
return nil;
}
@end