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 auth to nnbd #4633

Merged
merged 29 commits into from
Jan 21, 2021
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b3ec000
Migrate firebase_auth_platform_interface
rrousselGit Jan 11, 2021
9a33d44
migrate firebase_auth
rrousselGit Jan 11, 2021
fe29377
migrate firebase_auth_web
rrousselGit Jan 12, 2021
63d1795
Enable extra lint rules for firebase_auth
rrousselGit Jan 12, 2021
0501c37
Merge branch 'master' of https://github.com/FirebaseExtended/flutterfire
rrousselGit Jan 12, 2021
42a1b2d
remove duplicate key in pubspecs
rrousselGit Jan 12, 2021
9039f78
self review
rrousselGit Jan 12, 2021
77f5d3c
Self review
rrousselGit Jan 12, 2021
2c6eca8
Add headers to lint files
rrousselGit Jan 12, 2021
d0bc2c5
Merge branch 'master' of https://github.com/FirebaseExtended/flutterf…
rrousselGit Jan 15, 2021
6da5b6e
Merge branch 'master' of https://github.com/FirebaseExtended/flutterf…
rrousselGit Jan 15, 2021
5078da9
remove dart=2.9 comments
rrousselGit Jan 15, 2021
7335b1c
Fix all tests
rrousselGit Jan 19, 2021
5d90dad
fix TODOs
rrousselGit Jan 19, 2021
4408af8
update packages to nnbd
rrousselGit Jan 19, 2021
d2f04ab
Merge branch 'master' of https://github.com/FirebaseExtended/flutterf…
rrousselGit Jan 19, 2021
5f7caf7
add http null-safe as git dependency
rrousselGit Jan 19, 2021
155cf62
(examples) override http_parser due to test -> shelf -> http_parser v…
Salakar Jan 19, 2021
2592352
override http_parser due to test -> shelf -> http_parser version not …
Salakar Jan 19, 2021
4d81ff2
update auth's core versions
rrousselGit Jan 20, 2021
1396464
Merge branch 'master' of https://github.com/FirebaseExtended/flutterf…
rrousselGit Jan 20, 2021
a7563cb
use dev melos
rrousselGit Jan 20, 2021
166eba2
fix compilation error
rrousselGit Jan 20, 2021
90f273b
add dependency_override for auth example
rrousselGit Jan 20, 2021
eba3d64
remove http git dependency on performance/storage
rrousselGit Jan 20, 2021
c223ec6
use non-null-safe http version in packages other than auth
rrousselGit Jan 20, 2021
c9ef678
use melos 0.4.0-dev.2
rrousselGit Jan 20, 2021
004da73
remove null tests
rrousselGit Jan 20, 2021
f148e86
fix auth web tests
rrousselGit Jan 21, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
180 changes: 180 additions & 0 deletions packages/firebase_auth/all_lint_rules.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
linter:
rules:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- always_specify_types
- always_use_package_imports
- annotate_overrides
- avoid_annotating_with_dynamic
- avoid_as
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
- avoid_catching_errors
- avoid_classes_with_only_static_members
- avoid_double_and_int_checks
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_function_literals_in_foreach_calls
- avoid_implementing_value_types
- avoid_init_to_null
- avoid_js_rounded_ints
- avoid_null_checks_in_equality_operators
- avoid_positional_boolean_parameters
- avoid_print
- avoid_private_typedef_functions
- avoid_redundant_argument_values
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
- avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
- avoid_type_to_string
- avoid_types_as_parameter_names
- avoid_types_on_closure_parameters
- avoid_unnecessary_containers
- avoid_unused_constructor_parameters
- avoid_void_async
- avoid_web_libraries_in_flutter
- await_only_futures
- camel_case_extensions
- camel_case_types
- cancel_subscriptions
- cascade_invocations
- cast_nullable_to_non_nullable
- close_sinks
- comment_references
- constant_identifier_names
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- diagnostic_describe_all_properties
- directives_ordering
- do_not_use_environment
- empty_catches
- empty_constructor_bodies
- empty_statements
- exhaustive_cases
- file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- invariant_booleans
- iterable_contains_unrelated_type
- join_return_with_assignment
- leading_newlines_in_multiline_strings
- library_names
- library_prefixes
- lines_longer_than_80_chars
- list_remove_unrelated_type
- literal_only_boolean_expressions
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_default_cases
- no_duplicate_case_values
- no_logic_in_create_state
- no_runtimeType_toString
- non_constant_identifier_names
- null_check_on_nullable_type_parameter
- null_closures
- omit_local_variable_types
- one_member_abstracts
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_asserts_with_message
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- prefer_constructors_over_static_methods
- prefer_contains
- prefer_double_quotes
- prefer_equal_for_default_values
- prefer_expression_function_bodies
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- prefer_for_elements_to_map_fromIterable
- prefer_foreach
- prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_if_elements_to_conditional_expressions
- prefer_if_null_operators
- prefer_initializing_formals
- prefer_inlined_adds
- prefer_int_literals
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
- prefer_mixin
- prefer_null_aware_operators
- prefer_relative_imports
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
- prefer_void_to_null
- provide_deprecation_message
- public_member_api_docs
- recursive_getters
- sized_box_for_whitespace
- slash_for_doc_comments
- sort_child_properties_last
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
- type_annotate_public_apis
- type_init_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_final
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_checks
- unnecessary_null_in_if_null_operators
- unnecessary_nullable_for_final_variable_declarations
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_raw_strings
- unnecessary_statements
- unnecessary_string_escapes
- unnecessary_string_interpolations
- unnecessary_this
- unrelated_type_equality_checks
- unsafe_html
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_is_even_rather_than_modulo
- use_key_in_widget_constructors
- use_late_for_private_fields_and_variables
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_string_buffers
- use_to_and_as_if_applicable
- valid_regexps
- void_checks
102 changes: 102 additions & 0 deletions packages/firebase_auth/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
include: all_lint_rules.yaml
analyzer:
# TODO(rrousselGit): disable implicit-cast/implicit-dynamic
errors:
import_of_legacy_library_into_null_safe: ignore
# Otherwise cause the import of all_lint_rules to warn because of some rules conflicts.
# We explicitly enabled even conflicting rules and are fixing the conflict
# in this file
included_file_warning: ignore

linter:
rules:
## Disabled rules because the repository doesn't respect them (yet)

directives_ordering: false
prefer_final_fields: false
comment_references: false
sort_constructors_first: false
sort_unnamed_constructors_first: false
always_put_control_body_on_new_line: false
omit_local_variable_types: false
prefer_constructors_over_static_methods: false
prefer_final_locals: false
only_throw_errors: false
prefer_relative_imports: false
non_constant_identifier_names: false
avoid_returning_this: false
avoid_catching_errors: false
constant_identifier_names: false
prefer_function_declarations_over_variables: false
avoid_classes_with_only_static_members: false
avoid_function_literals_in_foreach_calls: false
use_key_in_widget_constructors: false
prefer_mixin: false

#############

# Personal preference. I don't find it more readable
cascade_invocations: false

# Conflicts with `prefer_single_quotes`
# Single quotes are easier to type and don't compromise on readability.
prefer_double_quotes: false

# Conflicts with `omit_local_variable_types` and other rules.
# As per Dart guidelines, we want to avoid unnecessary types to make the code
# more readable.
# See https://dart.dev/guides/language/effective-dart/design#avoid-type-annotating-initialized-local-variables
always_specify_types: false

# Incompatible with `prefer_final_locals`
# Having immutable local variables makes larger functions more predictible
# so we will use `prefer_final_locals` instead.
unnecessary_final: false

# Not quite suitable for Flutter, which may have a `build` method with a single
# return, but that return is still complex enough that a "body" is worth it.
prefer_expression_function_bodies: false

# Conflicts with the convention used by flutter, which puts `Key key`
# and `@required Widget child` last.
always_put_required_named_parameters_first: false

# `as` is not that bad (especially with the upcoming non-nullable types).
# Explicit exceptions is better than implicit exceptions.
avoid_as: false

# This project doesn't use Flutter-style todos
flutter_style_todos: false

# There are situations where we voluntarily want to catch everything,
# especially as a library.
avoid_catches_without_on_clauses: false

# Boring as it sometimes force a line of 81 characters to be split in two.
# As long as we try to respect that 80 characters limit, going slightly
# above is fine.
lines_longer_than_80_chars: false

# Conflicts with disabling `implicit-dynamic`
avoid_annotating_with_dynamic: false

# conflicts with `prefer_relative_imports`
always_use_package_imports: false

# Disabled for now until we have NNBD as it otherwise conflicts with `missing_return`
no_default_cases: false

# False positive, null checks don't need a message
prefer_asserts_with_message: false

# Cumbersome with `context.select`
avoid_types_on_closure_parameters: false

# Too many false positive (builders)
diagnostic_describe_all_properties: false

# false positives (setter-like functions)
avoid_positional_boolean_parameters: false

# Does not apply to providers
prefer_const_constructors_in_immutables: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
include: ../../analysis_options.yaml

linter:
rules:
avoid_print: false
21 changes: 11 additions & 10 deletions packages/firebase_auth/firebase_auth/example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ class AuthExampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Firebase Example App',
theme: ThemeData.dark(),
home: Scaffold(
body: AuthTypeSelector(),
));
title: 'Firebase Example App',
theme: ThemeData.dark(),
home: Scaffold(
body: AuthTypeSelector(),
),
);
}
}

Expand All @@ -43,30 +44,30 @@ class AuthTypeSelector extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Firebase Example App"),
title: const Text('Firebase Example App'),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: const EdgeInsets.all(16),
alignment: Alignment.center,
child: SignInButtonBuilder(
icon: Icons.person_add,
backgroundColor: Colors.indigo,
text: 'Registration',
onPressed: () => _pushPage(context, RegisterPage()),
),
padding: const EdgeInsets.all(16),
alignment: Alignment.center,
),
Container(
padding: const EdgeInsets.all(16),
alignment: Alignment.center,
child: SignInButtonBuilder(
icon: Icons.verified_user,
backgroundColor: Colors.orange,
text: 'Sign In',
onPressed: () => _pushPage(context, SignInPage()),
),
padding: const EdgeInsets.all(16),
alignment: Alignment.center,
),
],
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class _RegisterPageState extends State<RegisterPage> {
key: _formKey,
child: Card(
child: Padding(
padding: EdgeInsets.all(16),
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expand All @@ -61,14 +61,14 @@ class _RegisterPageState extends State<RegisterPage> {
obscureText: true,
),
Container(
padding: const EdgeInsets.symmetric(vertical: 16.0),
padding: const EdgeInsets.symmetric(vertical: 16),
alignment: Alignment.center,
child: SignInButtonBuilder(
icon: Icons.person_add,
backgroundColor: Colors.blueGrey,
onPressed: () async {
if (_formKey.currentState.validate()) {
_register();
await _register();
}
},
text: 'Register',
Expand All @@ -79,7 +79,7 @@ class _RegisterPageState extends State<RegisterPage> {
child: Text(_success == null
? ''
: (_success
? 'Successfully registered ' + _userEmail
? 'Successfully registered $_userEmail'
: 'Registration failed')),
)
],
Expand All @@ -98,7 +98,7 @@ class _RegisterPageState extends State<RegisterPage> {
}

// Example code for registration.
void _register() async {
Future<void> _register() async {
final User user = (await _auth.createUserWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,
Expand Down
Loading