status-react/modules/react-native-status/ios/RCTStatus/RCTStatus.m

192 lines
6.7 KiB
Mathematica
Raw Normal View History

#import "RCTStatus.h"
2016-10-11 14:24:52 +00:00
#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
#import <Statusgo/Statusgo.h>
static bool isStatusInitialized;
2016-10-11 14:24:52 +00:00
static RCTBridge *bridge;
2016-09-12 08:16:07 +00:00
@implementation Status{
}
2016-10-11 14:24:52 +00:00
-(RCTBridge *)bridge
{
return bridge;
}
-(void)setBridge:(RCTBridge *)newBridge
{
bridge = newBridge;
}
RCT_EXPORT_MODULE();
2016-09-12 08:16:07 +00:00
////////////////////////////////////////////////////////////////////
#pragma mark - Jails functions
//////////////////////////////////////////////////////////////////// initJail
RCT_EXPORT_METHOD(initJail: (NSString *) js
callback:(RCTResponseSenderBlock)callback) {
2016-09-12 08:16:07 +00:00
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"InitJail() method called");
2016-09-12 08:16:07 +00:00
#endif
2016-09-23 14:14:43 +00:00
InitJail((char *) [js UTF8String]);
callback(@[[NSNull null]]);
}
2016-09-12 08:16:07 +00:00
//////////////////////////////////////////////////////////////////// parseJail
RCT_EXPORT_METHOD(parseJail:(NSString *)chatId
js:(NSString *)js
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"ParseJail() method called");
#endif
2016-09-23 14:14:43 +00:00
char * result = Parse((char *) [chatId UTF8String], (char *) [js UTF8String]);
2016-09-12 08:16:07 +00:00
callback(@[[NSString stringWithUTF8String: result]]);
}
2016-09-12 08:16:07 +00:00
//////////////////////////////////////////////////////////////////// callJail
RCT_EXPORT_METHOD(callJail:(NSString *)chatId
path:(NSString *)path
params:(NSString *)params
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"CallJail() method called");
#endif
2016-10-11 14:24:52 +00:00
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
char * result = Call((char *) [chatId UTF8String], (char *) [path UTF8String], (char *) [params UTF8String]);
dispatch_async( dispatch_get_main_queue(), ^{
callback(@[[NSString stringWithUTF8String: result]]);
});
});
2016-09-12 08:16:07 +00:00
}
////////////////////////////////////////////////////////////////////
#pragma mark - startNode
//////////////////////////////////////////////////////////////////// startNode
RCT_EXPORT_METHOD(startNode:(RCTResponseSenderBlock)onResultCallback) {
2016-09-12 08:16:07 +00:00
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"StartNode() method called");
2016-09-12 08:16:07 +00:00
#endif
if (!isStatusInitialized){
isStatusInitialized = true;
NSError *error = nil;
NSURL *folderName =[[[[NSFileManager defaultManager]
URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]
lastObject]
URLByAppendingPathComponent:@"ethereum"];
if (![[NSFileManager defaultManager] fileExistsAtPath:folderName.path])
[[NSFileManager defaultManager] createDirectoryAtPath:folderName.path withIntermediateDirectories:NO attributes:nil error:&error];
if (error){
NSLog(@"error %@", error);
}else
NSLog(@"folderName: %@", folderName);
2016-10-11 14:24:52 +00:00
NSString *peer1 = @"enode://e15869ba08a25e49be7568b951e15af5d77a472c8e4104a14a4951f99936d65f91240d5b5f23674aee44f1ac09d8adfc6a9bff75cd8c2df73a26442f313f2da4@162.243.63.248:30303";
NSString *peer2 = @"enode://ad61a21f83f12b0ca494611650f5e4b6427784e7c62514dcb729a3d65106de6f12836813acf39bdc35c12ecfd0e230723678109fd4e7091ce389697bd7da39b4@139.59.212.114:30303";
2016-09-12 08:16:07 +00:00
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^(void) {
StartNode((char *) [folderName.path UTF8String]);
});
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)),
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^(void) {
2016-10-11 14:24:52 +00:00
AddPeer((char *) [peer1 UTF8String]);
AddPeer((char *) [peer2 UTF8String]);
2016-09-12 08:16:07 +00:00
});
onResultCallback(@[[NSNull null]]);
return;
}
}
RCT_EXPORT_METHOD(stopNode:(RCTResponseSenderBlock)callback) {
#if DEBUG
NSLog(@"stopNode() method called");
#endif
// TODO: stop node
callback(@[[NSNull null]]);
}
////////////////////////////////////////////////////////////////////
#pragma mark - Accounts method
//////////////////////////////////////////////////////////////////// createAccount
RCT_EXPORT_METHOD(createAccount:(NSString *)password
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"CreateAccount() method called");
2016-09-12 08:16:07 +00:00
#endif
char * result = CreateAccount((char *) [password UTF8String]);
callback(@[[NSString stringWithUTF8String: result]]);
}
//////////////////////////////////////////////////////////////////// recoverAccount
RCT_EXPORT_METHOD(recoverAccount:(NSString *)passphrase
password:(NSString *)password
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"RecoverAccount() method called");
2016-09-12 08:16:07 +00:00
#endif
char * result = RecoverAccount((char *) [password UTF8String], (char *) [passphrase UTF8String]);
callback(@[[NSString stringWithUTF8String: result]]);
}
//////////////////////////////////////////////////////////////////// login
RCT_EXPORT_METHOD(login:(NSString *)address
password:(NSString *)password
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"Login() method called");
2016-09-12 08:16:07 +00:00
#endif
char * result = Login((char *) [address UTF8String], (char *) [password UTF8String]);
callback(@[[NSString stringWithUTF8String: result]]);
}
////////////////////////////////////////////////////////////////////
#pragma mark - Transaction
//////////////////////////////////////////////////////////////////// completeTransaction
RCT_EXPORT_METHOD(completeTransaction:(NSString *)hash
password:(NSString *)password
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
2016-09-23 14:14:43 +00:00
NSLog(@"CompleteTransaction() method called");
2016-09-12 08:16:07 +00:00
#endif
char * result = CompleteTransaction((char *) [hash UTF8String], (char *) [password UTF8String]);
callback(@[[NSString stringWithUTF8String: result]]);
}
2016-09-12 08:16:07 +00:00
////////////////////////////////////////////////////////////////////
#pragma mark - only android methods
////////////////////////////////////////////////////////////////////
RCT_EXPORT_METHOD(setAdjustResize) {
#if DEBUG
NSLog(@"setAdjustResize() works only on Android");
#endif
}
RCT_EXPORT_METHOD(setAdjustPan) {
#if DEBUG
NSLog(@"setAdjustPan() works only on Android");
#endif
}
RCT_EXPORT_METHOD(setSoftInputMode: (NSInteger) i) {
#if DEBUG
NSLog(@"setSoftInputMode() works only on Android");
#endif
}
2016-10-11 14:24:52 +00:00
+ (void)signalEvent:(char *) signal
{
NSString *sig = [NSString stringWithUTF8String:signal];
#if DEBUG
NSLog(@"SignalEvent");
NSLog(sig);
#endif
[bridge.eventDispatcher sendAppEventWithName:@"gethEvent"
body:@{@"jsonEvent": sig}];
}
@end