mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
110 lines
5.1 KiB
Objective-C
110 lines
5.1 KiB
Objective-C
//
|
|
// UIActivitiesControl.m
|
|
// NewsBlur
|
|
//
|
|
// Created by Samuel Clay on 7/19/13.
|
|
// Copyright (c) 2013 NewsBlur. All rights reserved.
|
|
//
|
|
|
|
#import "NewsBlurAppDelegate.h"
|
|
#import "NBContainerViewController.h"
|
|
#import "UIActivitiesControl.h"
|
|
#import "TUSafariActivity.h"
|
|
#import "RWInstapaperActivity.h"
|
|
#import "ReadabilityActivity.h"
|
|
#import "PocketAPIActivity.h"
|
|
#import "VUPinboardActivity.h"
|
|
#import "ARChromeActivity.h"
|
|
|
|
@implementation UIActivitiesControl
|
|
|
|
+ (UIActivityViewController *)activityViewControllerForView:(UIViewController *)vc {
|
|
NewsBlurAppDelegate *appDelegate = [NewsBlurAppDelegate sharedAppDelegate];
|
|
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
|
|
objectForKey:@"story_permalink"]];
|
|
|
|
return [self activityViewControllerForView:vc withUrl:url];
|
|
}
|
|
|
|
+ (UIActivityViewController *)activityViewControllerForView:(UIViewController *)vc withUrl:(NSURL *)url {
|
|
NewsBlurAppDelegate *appDelegate = [NewsBlurAppDelegate sharedAppDelegate];
|
|
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
|
|
NSString *title = [appDelegate.activeStory
|
|
objectForKey:@"story_title"];
|
|
NSMutableArray* appActivities = [NSMutableArray array];
|
|
|
|
TUSafariActivity *openInSafari = [[TUSafariActivity alloc] init];
|
|
[appActivities addObject:openInSafari];
|
|
|
|
if ([[UIApplication sharedApplication]
|
|
canOpenURL:[NSURL URLWithString:@"googlechrome://"]]) {
|
|
ARChromeActivity *chromeActivity = [[ARChromeActivity alloc]
|
|
initWithCallbackURL:[NSURL URLWithString:@"newsblur://"]];
|
|
[appActivities addObject:chromeActivity];
|
|
}
|
|
if ([[preferences objectForKey:@"enable_instapaper"] boolValue]) {
|
|
RWInstapaperActivity *instapaper = [[RWInstapaperActivity alloc] init];
|
|
instapaper.username = [preferences objectForKey:@"instapaper_username"];
|
|
instapaper.password = [preferences objectForKey:@"instapaper_password"];
|
|
[appActivities addObject:instapaper];
|
|
}
|
|
if ([[preferences objectForKey:@"enable_readability"] boolValue] &&
|
|
[ReadabilityActivity canPerformActivity]) {
|
|
ReadabilityActivity *readabilityActivity = [[ReadabilityActivity alloc] init];
|
|
[appActivities addObject:readabilityActivity];
|
|
}
|
|
if ([[preferences objectForKey:@"enable_pocket"] boolValue]) {
|
|
PocketAPIActivity *pocket = [[PocketAPIActivity alloc] init];
|
|
[appActivities addObject:pocket];
|
|
}
|
|
if ([[preferences objectForKey:@"enable_pinboard"] boolValue]) {
|
|
VUPinboardActivity *pinboard = [[VUPinboardActivity alloc] init];
|
|
[appActivities addObject:pinboard];
|
|
}
|
|
|
|
UIActivityViewController *shareSheet = [[UIActivityViewController alloc]
|
|
initWithActivityItems:@[title, url]
|
|
applicationActivities:appActivities];
|
|
|
|
[shareSheet setValue:[appDelegate.activeStory objectForKey:@"story_title"] forKey:@"subject"];
|
|
[shareSheet setCompletionHandler:^(NSString *activityType, BOOL completed) {
|
|
if (completed) {
|
|
// [[NSNotificationCenter defaultCenter] addObserver:self
|
|
// selector:@selector(keyboardDidHide:)
|
|
// name:UIKeyboardDidHideNotification
|
|
// object:nil];
|
|
|
|
NSString *_completedString;
|
|
if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
|
|
_completedString = @"Posted";
|
|
} else if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
|
|
_completedString = @"Posted";
|
|
} else if ([activityType isEqualToString:UIActivityTypeMail]) {
|
|
_completedString = @"Sent";
|
|
} else if ([activityType isEqualToString:UIActivityTypeSaveToCameraRoll]) {
|
|
_completedString = @"Saved";
|
|
} else if ([activityType isEqualToString:@"instapaper"]) {
|
|
_completedString = @"Saved";
|
|
} else if ([activityType isEqualToString:@"UIActivityReadability"]) {
|
|
_completedString = @"Saved";
|
|
} else if ([activityType isEqualToString:@"Pocket"]) {
|
|
_completedString = @"Saved";
|
|
} else if ([activityType isEqualToString:@"pinboard"]) {
|
|
_completedString = @"Saved";
|
|
}
|
|
[MBProgressHUD hideHUDForView:vc.view animated:NO];
|
|
MBProgressHUD *storyHUD = [MBProgressHUD showHUDAddedTo:vc.view animated:YES];
|
|
storyHUD.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]];
|
|
storyHUD.mode = MBProgressHUDModeCustomView;
|
|
storyHUD.removeFromSuperViewOnHide = YES;
|
|
storyHUD.labelText = _completedString;
|
|
[storyHUD hide:YES afterDelay:1];
|
|
}
|
|
}];
|
|
|
|
shareSheet.excludedActivityTypes = @[UIActivityTypePostToWeibo,UIActivityTypeAssignToContact];
|
|
|
|
return shareSheet;
|
|
}
|
|
|
|
@end
|