Skip to content

Storage - new 'putFile' method implementation breaks old code #10353

Closed
@alexmomotiuk

Description

@alexmomotiuk

Description

The new implementation of 'putFile' method, breaks old code.
If I pass StorageMetadata object with set up 'contentType' to this method, I get crash with error

FirebaseStorage/StorageUploadTask.swift:68: Fatal error: Internal error enqueueing a Storage task

because 'path' and 'name' won't be set for metadata object from parameters.

  open func putFile(from fileURL: URL,
                    metadata: StorageMetadata? = nil,
                    completion: ((_: StorageMetadata?, _: Error?) -> Void)?) -> StorageUploadTask {
    var putMetadata: StorageMetadata
    if metadata == nil {
      putMetadata = StorageMetadata()
      if let path = path.object {
        putMetadata.path = path
        putMetadata.name = (path as NSString).lastPathComponent as String
      }
    } else {
      putMetadata = metadata!
    }

'putData' method has different implementation and works well.

open func putData(_ uploadData: Data,
                    metadata: StorageMetadata? = nil,
                    completion: ((_: StorageMetadata?, _: Error?) -> Void)?) -> StorageUploadTask {
    let putMetadata = metadata ?? StorageMetadata()
    if let path = path.object {
      putMetadata.path = path
      putMetadata.name = (path as NSString).lastPathComponent as String
    }

Reproducing the issue

No response

Firebase SDK Version

10

Xcode Version

14.0.1

Installation Method

CocoaPods

Firebase Product(s)

Storage

Targeted Platforms

iOS

Relevant Log Output

No response

If using Swift Package Manager, the project's Package.resolved

No response

If using CocoaPods, the project's Podfile.lock

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions