Skip to content

Commit

Permalink
react-native-sdk: add swarm connect to ipfs api (#159)
Browse files Browse the repository at this point in the history
* Update to android 2.0.9 and core 0.7.2 (swarm connect of #108)

Signed-off-by: Li Zheng <[email protected]>

* Update to ios 2.0.11 and core 0.7.2 (swarm connect of #108)

Signed-off-by: Li Zheng <[email protected]>

* Add connect method to ios IpfsBridge (swarm connect of #108)

Signed-off-by: Li Zheng <[email protected]>
  • Loading branch information
flyskywhy authored and asutula committed Oct 17, 2019
1 parent 715a94e commit 9584dc9
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 2 deletions.
2 changes: 1 addition & 1 deletion android/manifest.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ ext {
mavenGradleVersion = '2.1'

// Textile
textileVersion = '2.0.8'
textileVersion = '2.0.9'
}
19 changes: 19 additions & 0 deletions android/src/main/java/io/textile/rnmobile/IpfsBridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,25 @@ public void run() {
});
}

@ReactMethod
public void connect(final String multiaddr, final Promise promise) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
if (Textile.instance().ipfs.swarmConnect(multiaddr)) {
promise.resolve(true);
} else {
promise.reject(new Exception("connect"));
}
}
catch (final Exception e) {
promise.reject("connect", e);
}
}
});
}

@ReactMethod
public void dataAtPath(final String path, final Promise promise) {
executor.execute(new Runnable() {
Expand Down
14 changes: 14 additions & 0 deletions ios/IpfsBridge.m
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,20 @@ - (dispatch_queue_t)methodQueue {
fulfillWithResult([Textile.instance.ipfs peerId:&error], error, resolve, reject);
}

RCT_EXPORT_METHOD(connect:(NSString*)multiaddr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
NSError *error;
BOOL connected = [Textile.instance.ipfs swarmConnect:multiaddr error:&error];
if (!error) {
if (connected) {
resolve(true);
} else {
reject(@"EUNSPECIFIED", @"connect", nil);;
}
} else {
reject(@(error.code).stringValue, error.localizedDescription, error);
}
}

RCT_EXPORT_METHOD(dataAtPath:(NSString*)pth resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
[Textile.instance.ipfs dataAtPath:pth completion:^(NSData * _Nullable data, NSString * _Nullable mediaType, NSError * _Nonnull error) {
NSDictionary *result = @{
Expand Down
13 changes: 13 additions & 0 deletions src/ipfs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,19 @@ export async function peerId(): Promise<string> {
return result as string
}

/**
* Open a new direct connection to a peer using an IPFS multiaddr
* ```typescript
* Textile.ipfs.connect(multiaddr);
* ```
*/
export async function connect(
multiaddr: string
): Promise<boolean> {
const result = await IpfsBridge.connect(multiaddr)
return result
}

/**
* Get raw file data by IPFS path. See `cat` method in IPFS.
* ```typescript
Expand Down
2 changes: 1 addition & 1 deletion textile-react-native-sdk.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Pod::Spec.new do |s|
s.tvos.deployment_target = '9.0'

s.dependency 'React'
s.dependency 'Textile', '2.0.10'
s.dependency 'Textile', '2.0.11'

s.preserve_paths = 'README.md', 'LICENSE', 'package.json'
s.source_files = 'ios/**/*.{h,m}'
Expand Down

0 comments on commit 9584dc9

Please sign in to comment.