mirror of
https://github.com/samsonjs/samhuri.net-ios.git
synced 2026-03-31 10:25:49 +00:00
54 lines
2.4 KiB
Objective-C
54 lines
2.4 KiB
Objective-C
//
|
|
// Created by Sami Samhuri on 15-05-20.
|
|
// Copyright (c) 2015 Guru Logic Inc. All rights reserved.
|
|
//
|
|
#import <PromiseKit/Promise.h>
|
|
#import <MobileCoreServices/MobileCoreServices.h>
|
|
#import "ExtensionItemProcessor.h"
|
|
#import "SharedContent.h"
|
|
#import "NSString+marshmallows.h"
|
|
|
|
@implementation ExtensionItemProcessor
|
|
|
|
- (PMKPromise *)sharedContentForPListItem:(NSExtensionItem *)item {
|
|
return [PMKPromise new:^(PMKFulfiller fulfill, PMKRejecter reject) {
|
|
NSItemProvider *provider = [self providerForIdentifier:(NSString *)kUTTypePropertyList fromExtensionItem:item];
|
|
if (!provider) {
|
|
reject([NSError errorWithDomain:@"ShareViewControllerDomain" code:1 userInfo:@{NSLocalizedDescriptionKey: @"Cannot find PList provider"}]);
|
|
return;
|
|
}
|
|
[provider loadItemForTypeIdentifier:(NSString *)kUTTypePropertyList options:nil completionHandler:^(NSDictionary *stuff, NSError *error) {
|
|
NSDictionary *results = stuff[NSExtensionJavaScriptPreprocessingResultsKey];
|
|
NSURL *url = [NSURL URLWithString:results[@"url"]];
|
|
NSString *quotedText = [results[@"selectedText"] mm_stringByTrimmingWhitespace];
|
|
NSString *quote = quotedText.length ? @"> " : @"";
|
|
NSString *text = [NSString stringWithFormat:@"%@\n\n%@%@", results[@"title"], quote, quotedText];
|
|
fulfill([SharedContent contentWithURL:url text:text]);
|
|
}];
|
|
}];
|
|
}
|
|
|
|
- (PMKPromise *)sharedContentForURLItem:(NSExtensionItem *)item text:(NSString *)text {
|
|
return [PMKPromise new:^(PMKFulfiller fulfill, PMKRejecter reject) {
|
|
NSItemProvider *provider = [self providerForIdentifier:(NSString *)kUTTypeURL fromExtensionItem:item];
|
|
if (!provider) {
|
|
reject([NSError errorWithDomain:@"ShareViewControllerDomain" code:1 userInfo:@{NSLocalizedDescriptionKey: @"Cannot find URL provider"}]);
|
|
return;
|
|
}
|
|
[provider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) {
|
|
// TODO: fetch title?
|
|
fulfill([SharedContent contentWithURL:url text:text]);
|
|
}];
|
|
}];
|
|
}
|
|
|
|
- (NSItemProvider *)providerForIdentifier:(NSString *)identifier fromExtensionItem:(NSExtensionItem *)item {
|
|
for (NSItemProvider *provider in item.attachments) {
|
|
if ([provider hasItemConformingToTypeIdentifier:identifier]) {
|
|
return provider;
|
|
}
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
@end
|