UNPKG

react-native-camera-roll

Version:

Camera Roll for react native.

41 lines (37 loc) 1.48 kB
import Album from './album'; import AlbumQueryResultBase from './album-query-result-base'; import {collectionArrayObserverHandler} from './change-observer-handler'; import NativeApi from './index'; export default class AlbumQueryResult extends AlbumQueryResultBase { constructor(obj, fetchParams, eventEmitter) { super(); this.eventEmitter = eventEmitter; this._fetchParams = fetchParams || {}; Object.assign(this, obj); this._albumNativeObjs = this.albums; this.albums = this ._albumNativeObjs .map(albumObj => new Album(albumObj, this._fetchParams.assetFetchOptions, eventEmitter)); eventEmitter.addListener('onObjectChange', (changeDetails) => { if (this._cacheKey === changeDetails._cacheKey) { this.emit('onChange', changeDetails, (callback) => { this.applyChangeDetails(changeDetails, callback); }, this); } }); } stopTracking() { return NativeApi.stopTracking(this._cacheKey); } applyChangeDetails(changeDetails, callback) { return collectionArrayObserverHandler(changeDetails, this.albums, ( nativeObj) => { return new Album(nativeObj, this._fetchParams.fetchOptions, this.eventEmitter); }).then((albums) => { this.albums = albums; callback && callback(this); }); } }