iOS: Fix CameraRoll to support custom user groups

Summary:
on iOS, if you pull photo from one of user's custom album, the app crashes on the assertion `RCTAssert(resolvedPromise == NO, @"Resolved the promise before we finished processing the results.");` . assertion that was assumed to never been reached.

According to iOS doc, the enumerateGroupsWithTypes `usingBlock` block is called with `group=nil` when the iteration is over, but in current react-native implementation, it is stopping in other circumstance (because the `else` case) which is probably a mistake.

You have probably never seen the bug because you didn't tried to use getPhotos with something else than the pre-defined groups, but it should be possible to do so *(and it seems to work fine as soon as I included my fix. Later I should provide a PR that includes a way to list user groups :) but at least I need this to gets in, otherwise it crashes)*.

For instance, User have a Photo Folder (or "album", whatever you call it) called "Instagram", when I call `CameraRoll.getPhotos({ groupName: "Instagram",
Closes https://github.com/facebook/react-native/pull/10272

Differential Revision: D4009342

Pulled By: javache

fbshipit-source-id: a73ca828133b4f0d880c229f9b675538854020de
This commit is contained in:
Gaëtan Renaudeau 2016-10-12 11:18:58 -07:00 committed by Facebook Github Bot
parent 59a53de005
commit 9cb39b75c0
1 changed files with 3 additions and 1 deletions

View File

@ -209,7 +209,9 @@ RCT_EXPORT_METHOD(getPhotos:(NSDictionary *)params
}]; }];
} }
}]; }];
} else { }
if (!group) {
// Sometimes the enumeration continues even if we set stop above, so we guard against resolving the promise // Sometimes the enumeration continues even if we set stop above, so we guard against resolving the promise
// multiple times here. // multiple times here.
if (!resolvedPromise) { if (!resolvedPromise) {