30 lines
		
	
	
		
			1022 B
		
	
	
	
		
			Mathematica
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
		
			1022 B
		
	
	
	
		
			Mathematica
		
	
	
	
	
	
| 
								 | 
							
								#import <Foundation/Foundation.h>
							 | 
						||
| 
								 | 
							
								#import <React/RCTUtils.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#import "RCTDocumentPicker.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@implementation RCTDocumentPicker
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								RCT_EXPORT_MODULE();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								RCT_EXPORT_METHOD(PickAndRead:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  RCTExecuteOnMainQueue(^{
							 | 
						||
| 
								 | 
							
								    NSOpenPanel *panel = [NSOpenPanel openPanel];
							 | 
						||
| 
								 | 
							
								    [panel setCanChooseDirectories:NO];
							 | 
						||
| 
								 | 
							
								    [panel setAllowsMultipleSelection:NO];
							 | 
						||
| 
								 | 
							
								    [panel setMessage:@"Select a spreadsheet to read"];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [panel beginWithCompletionHandler:^(NSInteger result){
							 | 
						||
| 
								 | 
							
								      if (result == NSModalResponseOK) {
							 | 
						||
| 
								 | 
							
								        NSURL *selected = [[panel URLs] objectAtIndex:0];
							 | 
						||
| 
								 | 
							
								        NSFileHandle *hFile = [NSFileHandle fileHandleForReadingFromURL:selected error:nil];
							 | 
						||
| 
								 | 
							
								        if(hFile) {
							 | 
						||
| 
								 | 
							
								          NSData *data = [hFile readDataToEndOfFile];
							 | 
						||
| 
								 | 
							
								          resolve([data base64EncodedStringWithOptions:0]);
							 | 
						||
| 
								 | 
							
								        } else reject(@"read_failure", @"Could not read selected file!", nil);
							 | 
						||
| 
								 | 
							
								      } else reject(@"select_failure", @"No file selected!", nil);
							 | 
						||
| 
								 | 
							
								    }];
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								@end
							 |