Some more dependency version updates and restores Cloudstore functionality

pull/505/head
Alvaro Almeida Freire Stivi 1 year ago
parent c929483fe8
commit 42359eef3d
No known key found for this signature in database

@ -1,5 +0,0 @@
{
"projects": {
"default": "pinball-dev"
}
}

@ -19,6 +19,17 @@ _Created using [Very Good CLI][very_good_cli_link] 🤖_
## Getting Started 🚀
### Firebase
First, please create a Firebase project for development.
After you create your project, remember to activate the following features:
- **Authentication** with the **anonymous** option
- **Firestore** with the rules in firestore.rules.
Next, use the instructions on [Firebase website](https://firebase.google.com/docs/flutter/setup?platform=web) to set up the **flutterfire_cli**.
Allow it to override the **lib/firebase_options.dart** file with your project settings.
### Running locally
To run the desired project either use the launch configuration in VSCode/Android Studio or use the following commands:
```sh

@ -1,33 +0,0 @@
{
"firestore": {
"rules": "firestore.rules"
},
"hosting": {
"public": "build/web",
"site": "",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"headers": [
{
"source": "**/*.@(jpg|jpeg|gif|png)",
"headers": [
{
"key": "Cache-Control",
"value": "max-age=3600"
}
]
},
{
"source": "**",
"headers": [
{
"key": "Cache-Control",
"value": "no-cache, no-store, must-revalidate"
}
]
}
]
},
"storage": {
"rules": "storage.rules"
}
}

@ -1,10 +1,6 @@
import 'dart:async';
import 'dart:developer';
import 'package:bloc/bloc.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/widgets.dart';
class AppBlocObserver extends BlocObserver {
@override
@ -19,8 +15,3 @@ class AppBlocObserver extends BlocObserver {
super.onError(bloc, error, stackTrace);
}
}
typedef BootstrapBuilder = Future<Widget> Function(
FirebaseFirestore firestore,
FirebaseAuth firebaseAuth,
);

@ -0,0 +1,64 @@
// File generated by FlutterFire CLI.
// ignore_for_file: type=lint
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
show defaultTargetPlatform, kIsWeb, TargetPlatform;
/// Default [FirebaseOptions] for use with your Firebase apps.
///
/// Example:
/// ```dart
/// import 'firebase_options.dart';
/// // ...
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
/// ```
class DefaultFirebaseOptions {
static FirebaseOptions get currentPlatform {
if (kIsWeb) {
return web;
}
switch (defaultTargetPlatform) {
case TargetPlatform.android:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for android - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.iOS:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for ios - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.macOS:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for macos - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.windows:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for windows - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.linux:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for linux - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
default:
throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.',
);
}
}
static const FirebaseOptions web = FirebaseOptions(
apiKey: '',
appId: '',
messagingSenderId: '',
projectId: '',
authDomain: '',
storageBucket: '',
);
}

@ -1,25 +1,31 @@
import 'dart:async';
import 'package:authentication_repository/authentication_repository.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:leaderboard_repository/leaderboard_repository.dart';
import 'package:pinball/app/app.dart';
import 'package:pinball/bootstrap.dart';
import 'package:pinball/firebase_options.dart';
import 'package:pinball_audio/pinball_audio.dart';
import 'package:platform_helper/platform_helper.dart';
import 'package:share_repository/share_repository.dart';
Future<App> bootstrap() async {
WidgetsFlutterBinding.ensureInitialized();
// await Firebase.initializeApp();
const leaderboardRepository = LeaderboardRepository();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
final leaderboardRepository =
LeaderboardRepository(FirebaseFirestore.instance);
const shareRepository =
ShareRepository(appUrl: ShareRepository.pinballGameUrl);
final authenticationRepository = AuthenticationRepository();
final authenticationRepository =
AuthenticationRepository(FirebaseAuth.instance);
final pinballAudioPlayer = PinballAudioPlayer();
final platformHelper = PlatformHelper();
// await authenticationRepository.authenticateAnonymously();
await authenticationRepository.authenticateAnonymously();
return App(
authenticationRepository: authenticationRepository,
leaderboardRepository: leaderboardRepository,

@ -19,18 +19,18 @@ class AuthenticationException implements Exception {
/// {@endtemplate}
class AuthenticationRepository {
/// {@macro authentication_repository}
AuthenticationRepository(/*this._firebaseAuth*/);
AuthenticationRepository(this._firebaseAuth);
// final FirebaseAuth _firebaseAuth;
final FirebaseAuth _firebaseAuth;
/// Sign in the existing user anonymously using [FirebaseAuth]. If the
/// authentication process can't be completed, it will throw an
/// [AuthenticationException].
Future<void> authenticateAnonymously() async {
// try {
// await _firebaseAuth.signInAnonymously();
// } on Exception catch (error, stackTrace) {
// throw AuthenticationException(error, stackTrace);
// }
try {
await _firebaseAuth.signInAnonymously();
} on Exception catch (error, stackTrace) {
throw AuthenticationException(error, stackTrace);
}
}
}

@ -4,11 +4,11 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
firebase_auth: ^4.20.0
firebase_core: ^2.32.0
firebase_auth: ^5.1.1
firebase_core: ^3.1.1
flutter:
sdk: flutter
intl: ^0.19.0
@ -16,5 +16,5 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
mocktail: ^0.2.0
very_good_analysis: ^2.4.0
mocktail: ^1.0.4
very_good_analysis: ^6.0.0

@ -16,7 +16,7 @@ void main() {
setUp(() {
firebaseAuth = _MockFirebaseAuth();
userCredential = _MockUserCredential();
authenticationRepository = AuthenticationRepository();
authenticationRepository = AuthenticationRepository(firebaseAuth);
});
group('authenticateAnonymously', () {

@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
vector_math: ^2.1.1

@ -1,3 +1,4 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:leaderboard_repository/leaderboard_repository.dart';
/// {@template leaderboard_repository}
@ -6,31 +7,30 @@ import 'package:leaderboard_repository/leaderboard_repository.dart';
class LeaderboardRepository {
/// {@macro leaderboard_repository}
const LeaderboardRepository(
//FirebaseFirestore firebaseFirestore,
); //: _firebaseFirestore = firebaseFirestore;
FirebaseFirestore firebaseFirestore,
) : _firebaseFirestore = firebaseFirestore;
//final FirebaseFirestore _firebaseFirestore;
final FirebaseFirestore _firebaseFirestore;
// static const _leaderboardLimit = 10;
// static const _leaderboardCollectionName = 'leaderboard';
// static const _scoreFieldName = 'score';
static const _leaderboardLimit = 10;
static const _leaderboardCollectionName = 'leaderboard';
static const _scoreFieldName = 'score';
/// Acquires top 10 [LeaderboardEntryData]s.
Future<List<LeaderboardEntryData>> fetchTop10Leaderboard() async {
// try {
// // final querySnapshot = await _firebaseFirestore
// // .collection(_leaderboardCollectionName)
// // .orderBy(_scoreFieldName, descending: true)
// // .limit(_leaderboardLimit)
// // .get();
// // final documents = querySnapshot.docs;
// // return documents.toLeaderboard();
// } on LeaderboardDeserializationException {
// rethrow;
// } on Exception catch (error, stackTrace) {
// throw FetchTop10LeaderboardException(error, stackTrace);
// }
return Future.value(List<LeaderboardEntryData>.empty());
try {
final querySnapshot = await _firebaseFirestore
.collection(_leaderboardCollectionName)
.orderBy(_scoreFieldName, descending: true)
.limit(_leaderboardLimit)
.get();
final documents = querySnapshot.docs;
return documents.toLeaderboard();
} on LeaderboardDeserializationException {
rethrow;
} on Exception catch (error, stackTrace) {
throw FetchTop10LeaderboardException(error, stackTrace);
}
}
/// Adds player's score entry to the leaderboard if it is within the top-10
@ -49,44 +49,42 @@ class LeaderboardRepository {
}
Future<List<LeaderboardEntryData>> _fetchLeaderboardSortedByScore() async {
// try {
// final querySnapshot = await _firebaseFirestore
// .collection(_leaderboardCollectionName)
// .orderBy(_scoreFieldName, descending: true)
// .get();
// final documents = querySnapshot.docs;
// return documents.toLeaderboard();
// } on Exception catch (error, stackTrace) {
// throw FetchLeaderboardException(error, stackTrace);
// }
return Future.value(List<LeaderboardEntryData>.empty());
try {
final querySnapshot = await _firebaseFirestore
.collection(_leaderboardCollectionName)
.orderBy(_scoreFieldName, descending: true)
.get();
final documents = querySnapshot.docs;
return documents.toLeaderboard();
} on Exception catch (error, stackTrace) {
throw FetchLeaderboardException(error, stackTrace);
}
}
Future<void> _saveScore(LeaderboardEntryData entry) {
// try {
// return _firebaseFirestore
// .collection(_leaderboardCollectionName)
// .add(entry.toJson());
// } on Exception catch (error, stackTrace) {
// throw AddLeaderboardEntryException(error, stackTrace);
// }
return Future.value();
try {
return _firebaseFirestore
.collection(_leaderboardCollectionName)
.add(entry.toJson());
} on Exception catch (error, stackTrace) {
throw AddLeaderboardEntryException(error, stackTrace);
}
}
}
// extension on List<QueryDocumentSnapshot> {
// List<LeaderboardEntryData> toLeaderboard() {
// final leaderboardEntries = <LeaderboardEntryData>[];
// for (final document in this) {
// final data = document.data() as Map<String, dynamic>?;
// if (data != null) {
// try {
// leaderboardEntries.add(LeaderboardEntryData.fromJson(data));
// } catch (error, stackTrace) {
// throw LeaderboardDeserializationException(error, stackTrace);
// }
// }
// }
// return leaderboardEntries;
// }
//}
extension on List<QueryDocumentSnapshot> {
List<LeaderboardEntryData> toLeaderboard() {
final leaderboardEntries = <LeaderboardEntryData>[];
for (final document in this) {
final data = document.data() as Map<String, dynamic>?;
if (data != null) {
try {
leaderboardEntries.add(LeaderboardEntryData.fromJson(data));
} catch (error, stackTrace) {
throw LeaderboardDeserializationException(error, stackTrace);
}
}
}
return leaderboardEntries;
}
}

@ -4,20 +4,20 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
cloud_firestore: ^4.17.5
cloud_firestore: ^5.0.2
equatable: ^2.0.3
flutter:
sdk: flutter
json_annotation: ^4.4.0
dev_dependencies:
build_runner: ^2.1.8
build_runner: ^2.4.11
flutter_test:
sdk: flutter
json_serializable: ^6.1.5
mocktail: ^1.0.3
test: ^1.19.2
very_good_analysis: ^5.1.0
mocktail: ^1.0.4
test: ^1.25.2
very_good_analysis: ^6.0.0

@ -30,7 +30,7 @@ void main() {
});
test('can be instantiated', () {
expect(LeaderboardRepository(), isNotNull);
expect(LeaderboardRepository(firestore), isNotNull);
});
group('fetchTop10Leaderboard', () {
@ -66,7 +66,7 @@ void main() {
.toList();
setUp(() {
leaderboardRepository = LeaderboardRepository();
leaderboardRepository = LeaderboardRepository(firestore);
collectionReference = _MockCollectionReference();
query = _MockQuery();
querySnapshot = _MockQuerySnapshot();
@ -152,7 +152,7 @@ void main() {
const entryDocumentId = 'id$entryScore';
setUp(() {
leaderboardRepository = LeaderboardRepository();
leaderboardRepository = LeaderboardRepository(firestore);
collectionReference = _MockCollectionReference();
documentReference = _MockDocumentReference();
query = _MockQuery();

@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
audioplayers: ^6.0.0
@ -18,7 +18,7 @@ dev_dependencies:
flutter_test:
sdk: flutter
mocktail: ^1.0.4
very_good_analysis: ^5.1.0
very_good_analysis: ^6.0.0
flutter_gen:
line_length: 80

@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
bloc: ^8.0.3
@ -28,8 +28,8 @@ dev_dependencies:
flame_test: ^1.3.0
flutter_test:
sdk: flutter
mocktail: ^1.0.3
very_good_analysis: ^5.1.0
mocktail: ^1.0.4
very_good_analysis: ^6.0.0
flutter:
uses-material-design: true

@ -768,5 +768,5 @@ packages:
source: hosted
version: "0.2.0+1"
sdks:
dart: ">=3.4.1 <4.0.0"
dart: ">=3.4.3 <4.0.0"
flutter: ">=3.22.0"

@ -11,7 +11,7 @@ class TestGame extends Forge2DGame {
@override
Future<void> onLoad() async {
if (_assets != null) {
await images.loadAll(_assets!);
await images.loadAll(_assets);
}
await super.onLoad();
}

@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
bloc: ^8.0.0
@ -20,5 +20,5 @@ dev_dependencies:
flame_test: ^1.3.0
flutter_test:
sdk: flutter
mocktail: ^0.3.0
very_good_analysis: ^2.4.0
mocktail: ^1.0.4
very_good_analysis: ^6.0.0

@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
equatable: ^2.0.3
@ -14,7 +14,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
very_good_analysis: ^5.1.0
very_good_analysis: ^6.0.0
flutter:
generate: true

@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
flutter:
@ -15,8 +15,8 @@ dev_dependencies:
flutter_test:
sdk: flutter
mocktail: ^1.0.4
test: ^1.19.2
very_good_analysis: ^5.1.0
test: ^1.25.2
very_good_analysis: ^6.0.0
flutter:
uses-material-design: true

@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
flutter:
@ -13,4 +13,4 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
very_good_analysis: ^5.1.0
very_good_analysis: ^6.0.0

@ -4,10 +4,10 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dev_dependencies:
coverage: ^1.1.0
mocktail: ^1.0.4
test: ^1.19.2
very_good_analysis: ^5.1.0
test: ^1.25.2
very_good_analysis: ^6.0.0

@ -13,10 +13,10 @@ packages:
dependency: transitive
description:
name: _flutterfire_internals
sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7"
sha256: a315d1c444402c3fa468de626d33a1c666041c87e9e195e8fb355b7084aefcc1
url: "https://pub.dev"
source: hosted
version: "1.3.35"
version: "1.3.38"
analyzer:
dependency: transitive
description:
@ -148,26 +148,26 @@ packages:
dependency: "direct main"
description:
name: cloud_firestore
sha256: a0f161b92610e078b4962d7e6ebeb66dc9cce0ada3514aeee442f68165d78185
sha256: "1232370ad04c21c699d0e73b2dc2e1c3b49258f89a16f0119036fd3c6e8aa2f5"
url: "https://pub.dev"
source: hosted
version: "4.17.5"
version: "5.0.2"
cloud_firestore_platform_interface:
dependency: transitive
description:
name: cloud_firestore_platform_interface
sha256: "6a55b319f8d33c307396b9104512e8130a61904528ab7bd8b5402678fca54b81"
sha256: cfc64ae4a48bbb0ff6730b04f2d4653043c7a9b9008a991b1f2012a534b79e26
url: "https://pub.dev"
source: hosted
version: "6.2.5"
version: "6.2.8"
cloud_firestore_web:
dependency: transitive
description:
name: cloud_firestore_web
sha256: "89dfa1304d3da48b3039abbb2865e3d30896ef858e569a16804a99f4362283a9"
sha256: "3db4e4c10feae18d80da86982781578c8e76cb6a43cf83110d8d6a62af9a952a"
url: "https://pub.dev"
source: hosted
version: "3.12.5"
version: "4.0.2"
collection:
dependency: transitive
description:
@ -244,34 +244,34 @@ packages:
dependency: "direct main"
description:
name: firebase_auth
sha256: cfc2d970829202eca09e2896f0a5aa7c87302817ecc0bdfa954f026046bf10ba
sha256: "087fdcb54b0af6f4c5c756e1db4f90e9b65871b9b3a75fabaa0e0ee578301669"
url: "https://pub.dev"
source: hosted
version: "4.20.0"
version: "5.1.1"
firebase_auth_platform_interface:
dependency: transitive
description:
name: firebase_auth_platform_interface
sha256: a0270e1db3b2098a14cb2a2342b3cd2e7e458e0c391b1f64f6f78b14296ec093
sha256: "8fac689f71ac3489a785579e99a4bad24a93ad3d78c313fb786ee517012d25f1"
url: "https://pub.dev"
source: hosted
version: "7.3.0"
version: "7.4.1"
firebase_auth_web:
dependency: transitive
description:
name: firebase_auth_web
sha256: "64e067e763c6378b7e774e872f0f59f6812885e43020e25cde08f42e9459837b"
sha256: "486b2527fcfcab01278378d8d4791f4f7bee8a9f15bf35e801ba08fbdd84c234"
url: "https://pub.dev"
source: hosted
version: "5.12.0"
version: "5.12.3"
firebase_core:
dependency: "direct main"
description:
name: firebase_core
sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c"
sha256: "1e06b0538ab3108a61d895ee16951670b491c4a94fce8f2d30e5de7a5eca4b28"
url: "https://pub.dev"
source: hosted
version: "2.32.0"
version: "3.1.1"
firebase_core_platform_interface:
dependency: transitive
description:
@ -932,10 +932,10 @@ packages:
dependency: "direct dev"
description:
name: very_good_analysis
sha256: "9ae7f3a3bd5764fb021b335ca28a34f040cd0ab6eec00a1b213b445dae58a4b8"
sha256: "1fb637c0022034b1f19ea2acb42a3603cbd8314a470646a59a2fb01f5f3a8629"
url: "https://pub.dev"
source: hosted
version: "5.1.0"
version: "6.0.0"
vm_service:
dependency: transitive
description:
@ -1001,5 +1001,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.4.1 <4.0.0"
dart: ">=3.4.3 <4.0.0"
flutter: ">=3.22.0"

@ -4,16 +4,16 @@ version: 1.0.0+1
publish_to: none
environment:
sdk: "^3.4.1"
sdk: "^3.4.3"
dependencies:
authentication_repository:
path: packages/authentication_repository
bloc: ^8.1.4
cloud_firestore: ^4.17.5
cloud_firestore: ^5.0.2
equatable: ^2.0.3
firebase_auth: ^4.20.0
firebase_core: ^2.32.0
firebase_auth: ^5.1.1
firebase_core: ^3.1.1
flame: ^1.18.0
flame_bloc: ^1.12.0
flame_forge2d: ^0.18.1
@ -48,8 +48,8 @@ dev_dependencies:
flame_test: ^1.3.0
flutter_test:
sdk: flutter
mocktail: ^1.0.3
very_good_analysis: ^5.1.0
mocktail: ^1.0.4
very_good_analysis: ^6.0.0
flutter:
uses-material-design: true

Loading…
Cancel
Save