forked from sheetjs/docs.sheetjs.com
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			1022 B
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1022 B
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| #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 |