Skip to content

Commit 8cb2006

Browse files
authored
Merge pull request #170 from react-native-ar/improve-mount-on-props
improve propsOnMount and propsOnUnmount behaviour
2 parents 40b2e8f + cec26c6 commit 8cb2006

File tree

2 files changed

+30
-21
lines changed

2 files changed

+30
-21
lines changed

components/lib/createArComponent.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => {
9292

9393
const mount = (id, props, parentId) => {
9494
if (DEBUG) console.log(`[${id}] [${new Date().getTime()}] mount`, props);
95-
mountFunc(
95+
return mountFunc(
9696
getNonNodeProps(props),
9797
{
9898
id,
@@ -128,19 +128,17 @@ export default (mountConfig, propTypes = {}, nonUpdateablePropKeys = []) => {
128128
} = fullPropsOnMount;
129129

130130
this.doPendingTimers();
131-
this.mountWithProps(fullPropsOnMount);
132-
133-
this.delayed(() => {
131+
this.mountWithProps(fullPropsOnMount).then(() => {
134132
this.props = propsOnMount;
135133
this.componentWillUpdate({ ...props, transition: transitionOnMount });
136-
}, transitionOnMount.duration * 1000);
134+
});
137135
} else {
138136
this.mountWithProps(props);
139137
}
140138
}
141139

142-
mountWithProps(props) {
143-
mount(this.identifier, props, this.context.arkitParentId);
140+
async mountWithProps(props) {
141+
return mount(this.identifier, props, this.context.arkitParentId);
144142
}
145143

146144
componentWillUpdate(props) {

ios/components/ARGeosManager.m

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,65 +13,76 @@ @implementation ARGeosManager
1313

1414
RCT_EXPORT_MODULE()
1515

16-
RCT_EXPORT_METHOD(addBox:(SCNBox *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
16+
17+
RCT_EXPORT_METHOD(addBox:(SCNBox *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject ) {
1718
node.geometry = geometry;
1819
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
20+
resolve(nil);
1921
}
2022

21-
RCT_EXPORT_METHOD(addGroup:(id)bla node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
22-
23+
RCT_EXPORT_METHOD(addGroup:(id)bla node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
2324
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
25+
resolve(nil);
2426
}
2527

26-
27-
RCT_EXPORT_METHOD(addSphere:(SCNSphere *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
28+
RCT_EXPORT_METHOD(addSphere:(SCNSphere *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
2829
node.geometry = geometry;
2930
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
31+
resolve(nil);
3032
}
3133

32-
RCT_EXPORT_METHOD(addCylinder:(SCNCylinder *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
34+
RCT_EXPORT_METHOD(addCylinder:(SCNCylinder *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
3335
node.geometry = geometry;
3436
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
37+
resolve(nil);
3538
}
3639

37-
RCT_EXPORT_METHOD(addCone:(SCNCone *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
40+
RCT_EXPORT_METHOD(addCone:(SCNCone *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
3841
node.geometry = geometry;
3942
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
43+
resolve(nil);
4044
}
4145

42-
RCT_EXPORT_METHOD(addPyramid:(SCNPyramid *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
46+
RCT_EXPORT_METHOD(addPyramid:(SCNPyramid *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
4347
node.geometry = geometry;
4448
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
49+
resolve(nil);
4550
}
4651

47-
RCT_EXPORT_METHOD(addTube:(SCNTube *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
52+
RCT_EXPORT_METHOD(addTube:(SCNTube *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
4853
node.geometry = geometry;
4954
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
55+
resolve(nil);
5056
}
5157

52-
RCT_EXPORT_METHOD(addTorus:(SCNTorus *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
58+
RCT_EXPORT_METHOD(addTorus:(SCNTorus *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
5359
node.geometry = geometry;
5460
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
61+
resolve(nil);
5562
}
5663

57-
RCT_EXPORT_METHOD(addCapsule:(SCNCapsule *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
64+
RCT_EXPORT_METHOD(addCapsule:(SCNCapsule *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
5865
node.geometry = geometry;
5966
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
67+
resolve(nil);
6068
}
6169

62-
RCT_EXPORT_METHOD(addPlane:(SCNPlane *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
70+
RCT_EXPORT_METHOD(addPlane:(SCNPlane *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
6371
node.geometry = geometry;
6472
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
73+
resolve(nil);
6574
}
6675

67-
RCT_EXPORT_METHOD(addShape:(SCNShape *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
76+
RCT_EXPORT_METHOD(addShape:(SCNShape *)geometry node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
6877
node.geometry = geometry;
6978
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
79+
resolve(nil);
7080
}
7181

72-
RCT_EXPORT_METHOD(addLight:(SCNLight *)light node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId) {
82+
RCT_EXPORT_METHOD(addLight:(SCNLight *)light node:(SCNNode *)node frame:(NSString *)frame parentId:(NSString *)parentId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
7383
node.light = light;
7484
[[RCTARKitNodes sharedInstance] addNodeToScene:node inReferenceFrame:frame withParentId:parentId];
85+
resolve(nil);
7586
}
7687

7788

0 commit comments

Comments
 (0)