UNPKG

@react-native-firebase/storage

Version:

React Native Firebase - React Native Firebase provides native integration with Cloud Storage, providing support to upload and download files directly from your device and from your Firebase Cloud Storage bucket.

62 lines (51 loc) 2.08 kB
/* * Copyright (c) 2016-present Invertase Limited & Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this library except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import type { StorageReference } from './types/storage'; import type { ListResultInternal, StorageInternal } from './types/internal'; // To avoid React Native require cycle warnings let Reference: (new (storage: StorageInternal, path: string) => StorageReference) | null = null; export function provideStorageReferenceClass( storageReference: new (storage: StorageInternal, path: string) => StorageReference, ): void { Reference = storageReference; } export default class StorageListResult { private _nextPageToken: string | null; private _items: StorageReference[]; private _prefixes: StorageReference[]; constructor(storage: StorageInternal, nativeData: ListResultInternal) { this._nextPageToken = nativeData.nextPageToken || null; if (!Reference) { throw new Error( 'Reference class has not been provided. This is likely a module initialization issue.', ); } // TypeScript doesn't narrow the type after the null check, so we assign to a const const StorageReferenceClass = Reference; this._items = nativeData.items.map(path => new StorageReferenceClass(storage, path)); this._prefixes = nativeData.prefixes.map(path => new StorageReferenceClass(storage, path)); } get items(): StorageReference[] { return this._items; } get nextPageToken(): string | null { return this._nextPageToken; } get prefixes(): StorageReference[] { return this._prefixes; } }