Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Migrate Firebase Storage to nnbd #4753

Merged
merged 29 commits into from
Feb 18, 2021
Merged

Conversation

Salakar
Copy link
Member

@Salakar Salakar commented Jan 21, 2021

Description

NNBD migration work for Firebase Storage.

Related Issues

Replace this paragraph with a list of issues related to this PR from the issue database. Indicate, which of these issues are resolved or fixed by this PR. Note that you'll have to prefix the issue numbers with flutter/flutter#.

Checklist

Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]).
This will ensure a smooth and quick review process. Updating the pubspec.yaml and changelogs is not required.

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
  • All existing and new tests are passing.
  • I updated/added relevant documentation (doc comments with ///).
  • The analyzer (flutter analyze) does not report any problems on my PR.
  • I read and followed the Flutter Style Guide.
  • I signed the CLA.
  • I am willing to follow-up on review comments in a timely manner.

Breaking Change

Does your PR require plugin users to manually update their apps to accommodate your change?

  • Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
  • No, this is not a breaking change.

@google-cla
Copy link

google-cla bot commented Jan 21, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

@google-cla google-cla bot added the cla: no label Jan 21, 2021
@Salakar Salakar changed the title refactor: Migrate Firebase Storage to nnbd refactor: Migrate Firebase Storage to nnbd Jan 21, 2021
@google-cla
Copy link

google-cla bot commented Jan 21, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

@google-cla
Copy link

google-cla bot commented Jan 21, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

@google-cla
Copy link

google-cla bot commented Feb 4, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

: super(appInstance: app, bucket: bucket);

/// The js-interop layer for Firebase Storage
final storage_interop.Storage? webStorage;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is nullable. This is the same as auth web. although it violate that principle you mentioned yesterday, @Salakar. It's only nullable to satisfy registerWith. I wonder if it is necessary.

@@ -17,7 +15,7 @@ class TaskSnapshotWeb extends TaskSnapshotPlatform {
ReferencePlatform ref, storage_interop.UploadTaskSnapshot snapshot)
: _reference = ref,
_snapshot = snapshot,
super(fbTaskStateToTaskState(snapshot.state), null);
super(fbTaskStateToTaskState(snapshot.state), {});
Copy link
Member

@russellwheatley russellwheatley Feb 4, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

passed in empty Map literal otherwise it's an error. not sure if this is ideal.

} else {
return {};
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated all this logic because this: dartify(jsObject.customMetadata) as Map can easily be null which didn't cause a static analysis error when casting, but if I ran it this code in dartpad, it did:

var map = null;
  
  var thing = (map as Map).cast<String, String>();
  
  thing['stuff'] = "foo";

I also returned empty Map literal. If make the getter type nullable (Map<String, String>? get customMetadata), we also have to make the setter param nullable ( set customMetadata(Map<String, String>? m)). Didn't seem right, happy to change though.

@google-cla
Copy link

google-cla bot commented Feb 4, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

// A bucket must exist at this point
// TODO(ehesp): Check whether `app.options.storageBucket` can be nullable post migration
if (bucket == null) {
if (bucket == null && app.options.storageBucket == null) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated this code to be a bit more clear about what is happening. bucket and app.options.storageBucket are nullable. If both are null, throw an error.

_bucket initialization occurs here

@google-cla
Copy link

google-cla bot commented Feb 5, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

@google-cla
Copy link

google-cla bot commented Feb 8, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

@russellwheatley
Copy link
Member

@googlebot I consent.

@google-cla
Copy link

google-cla bot commented Feb 8, 2021

All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter.

We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only @googlebot I consent. in this pull request.

Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the cla label to yes (if enabled on your project).

ℹ️ Googlers: Go here for more info.

@Ehesp
Copy link
Member

Ehesp commented Feb 8, 2021

@googlebot I consent.

@google-cla google-cla bot added cla: yes and removed cla: no labels Feb 8, 2021
@russellwheatley
Copy link
Member

russellwheatley commented Feb 10, 2021

I had to remove customMetadata as a param on SettableMetadata due to it causing this error on web e2e tests:

Expected a value of type 'Map<String, String>?', but got one of type 'IdentityMap<String, dynamic>'

This is the relevant commit.

Not really sure why it is casting to a different type, apparently no documentation on IdentityMap either. Either way, I couldn't figure it out within the time constraints, and I thought it more important to get this over the line. I've raised a ticket internally for this.

I also commented out a test, it is supposed to error but it doesn't. This just needs confirmation on expected behaviour, and is included as part of the ticket.

Internal ticket: INVERTASE/FF-29

Copy link
Member Author

@Salakar Salakar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some unused dependencies

@russellwheatley
Copy link
Member

This PR: #5014 ought to be merged into this PR first to fix a number of issues described in the description.

@russellwheatley russellwheatley merged commit dc609a7 into master Feb 18, 2021
@russellwheatley russellwheatley deleted the @ehesp/storage-nndb branch February 18, 2021 11:45
@firebase firebase locked and limited conversation to collaborators Mar 21, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants