From b0d75eb10a9b9992d309db6f9014b2de147f7d39 Mon Sep 17 00:00:00 2001 From: Louison PARANT Date: Fri, 3 Mar 2023 11:50:47 +0100 Subject: [PATCH] Push LocalStorage (UserManager+SaveToStorage) --- .idea/Bowl_in.iml | 2 + .../lib/model/LocalManager/AuthManager.dart | 17 +++++ .../lib/model/LocalManager/GameManager.dart | 49 +++++++++++++ .../lib/model/LocalManager/LocalData.dart | 38 ++++++++++ .../lib/model/LocalManager/UserManager.dart | 38 ++++++++++ .../lib/model/StubManager/StubData.dart | 30 ++++++-- .../lib/model/StubManager/UserManager.dart | 9 ++- Sources/bowlin_project/lib/model/User.dart | 17 ++++- Sources/bowlin_project/pubspec.lock | 72 +++++++++++++++++++ Sources/bowlin_project/pubspec.yaml | 8 ++- 10 files changed, 269 insertions(+), 11 deletions(-) create mode 100644 Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart create mode 100644 Sources/bowlin_project/lib/model/LocalManager/GameManager.dart create mode 100644 Sources/bowlin_project/lib/model/LocalManager/LocalData.dart create mode 100644 Sources/bowlin_project/lib/model/LocalManager/UserManager.dart diff --git a/.idea/Bowl_in.iml b/.idea/Bowl_in.iml index eed4b67..f1b2d07 100644 --- a/.idea/Bowl_in.iml +++ b/.idea/Bowl_in.iml @@ -9,5 +9,7 @@ + + \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart b/Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart new file mode 100644 index 0000000..97fbc45 --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart @@ -0,0 +1,17 @@ +library LocalLib; + +import '../IAuthManager.dart'; +import 'LocalData.dart'; + +class AuthManager extends IAuthManager { + final LocalData parent; + + // Constructor + AuthManager(this.parent); + + // Methods + @override + bool verifiedUser(String name, String password) { + return false; + } +} diff --git a/Sources/bowlin_project/lib/model/LocalManager/GameManager.dart b/Sources/bowlin_project/lib/model/LocalManager/GameManager.dart new file mode 100644 index 0000000..5517ed5 --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/GameManager.dart @@ -0,0 +1,49 @@ +library LocalLib; + +import '../IGameManager.dart'; +import '../GameDetail.dart'; +import '../Player.dart'; +import '../User.dart'; +import '../Guest.dart'; +import 'LocalData.dart'; +import 'package:uuid/uuid.dart'; + +class GameManager extends IGameManager { + List games = []; + final LocalData parent; + + // Constructor + GameManager(this.parent); + + // Methods + @override + GameDetail getGameById(Uuid id) { + return GameDetail(Uuid(), DateTime.now(), Uuid(), 290, true, null, + Guest(Uuid(), "", ""), [], []); + } + + @override + List getGamesByPlayerId(Uuid id) { + return []; + } + + @override + List getGamesByPlayer(Player user) { + return []; + } + + @override + List getGamesByPlayers(List users) { + return []; + } + + @override + List getPlayersByIdGame(Uuid id) { + return []; + } + + @override + Map getRankByIdGame(Uuid id) { + return {}; + } +} diff --git a/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart b/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart new file mode 100644 index 0000000..f20430e --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart @@ -0,0 +1,38 @@ +library LocalLib; + +import '../IManager.dart'; +import '../IUserManager.dart'; +import '../IGameManager.dart'; +import '../User.dart'; +import 'UserManager.dart'; +import 'GameManager.dart'; +import 'package:localstorage/localstorage.dart'; + +class LocalData extends IManager { + late IUserManager _userMgr; + late IGameManager _gameMgr; + + final LocalStorage storage = LocalStorage('local_key'); + + List users = []; + + LocalData() { + _userMgr = UserManager(this); + _gameMgr = GameManager(this); + users = storage.getItem('users'); + } + + _saveToStorage() { + storage.setItem('users', toJSONEncodable()); + } + + _clearStorage() async { + await storage.clear(); + } + + toJSONEncodable() { + return users.map((user) { + return user.toJSONEncodable(); + }).toList(); + } +} diff --git a/Sources/bowlin_project/lib/model/LocalManager/UserManager.dart b/Sources/bowlin_project/lib/model/LocalManager/UserManager.dart new file mode 100644 index 0000000..46ed4ca --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/UserManager.dart @@ -0,0 +1,38 @@ +library LocalLib; + +import '../IUserManager.dart'; +import '../IAuthManager.dart'; +import 'AuthManager.dart'; +import 'LocalData.dart'; +import '../User.dart'; +import 'package:uuid/uuid.dart'; + +class UserManager extends IUserManager { + final LocalData parent; + + // Constructor + UserManager(this.parent) : super(AuthManager(parent)); + + // Methods + @override + List getUsersByName(String name) { + List returnList = []; + parent.users.forEach((element) { + if (element.name == name) { + returnList.add(element); + } + }); + return returnList; + } + + @override + User getUserById(Uuid id) { + var returnUser; + parent.users.forEach((element) { + if (element.id == id) { + returnUser = element; + } + }); + return returnUser; + } +} diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 08b9dc4..d93815b 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -1,4 +1,5 @@ library StubLib; + import '../IManager.dart'; import '../IUserManager.dart'; import '../IGameManager.dart'; @@ -19,8 +20,29 @@ class StubData extends IManager { } List users = [ - User(Uuid(),"Emre","https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4","emre.kartal@etu.uca.fr", [Achievement("5 games"), Achievement("2 strikes in a row"), Achievement("Win a game")], [], Stat(10,2,12,130,7,6,700,58.33,30.2)), - User(Uuid(),"Dave","https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4","david.d_almeida@etu.uca.fr", [Achievement("5 games"), Achievement("0 point"), Achievement("Win a game")], [], Stat(2,7,9,80,4,3,250,27.77,10.55)) + User( + Uuid(), + "Emre", + "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4", + "emre.kartal@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [], + Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2)), + User( + Uuid(), + "Dave", + "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4", + "david.d_almeida@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("0 point"), + Achievement("Win a game") + ], + [], + Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55)) ]; - -} \ No newline at end of file +} diff --git a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart index b69c6d8..634f7a5 100644 --- a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart @@ -1,4 +1,5 @@ library StubLib; + import '../IUserManager.dart'; import '../IAuthManager.dart'; import 'AuthManager.dart'; @@ -11,13 +12,15 @@ class UserManager extends IUserManager { final StubData parent; // Constructor - UserManager(this.parent):super(AuthManager(parent)); + UserManager(this.parent) : super(AuthManager(parent)); // Methods List getUsersByName(String name) { return []; } + User getUserById(Uuid id) { - return User(Uuid(),"","","",[],[], Stat(10,10,10,10,10,10,10,10,10)); + return User( + Uuid(), "", "", "", [], [], Stat(10, 10, 10, 10, 10, 10, 10, 10, 10)); } -} \ No newline at end of file +} diff --git a/Sources/bowlin_project/lib/model/User.dart b/Sources/bowlin_project/lib/model/User.dart index 0355054..39a9ccc 100644 --- a/Sources/bowlin_project/lib/model/User.dart +++ b/Sources/bowlin_project/lib/model/User.dart @@ -10,7 +10,8 @@ class User extends Player { Stat _stat; // Constructor - User(Uuid id, String name, String image, this._mail, this._achievements, this._friends, this._stat) + User(Uuid id, String name, String image, this._mail, this._achievements, + this._friends, this._stat) : super(id, name, image); // Getters and setters @@ -37,4 +38,18 @@ class User extends Player { set stats(Stat value) { _stat = value; } + + toJSONEncodable() { + Map m = new Map(); + + m['id'] = id; + m['Name'] = name; + m['Mail'] = _mail; + m['Image'] = image; + m['Achievement'] = achievements; + m['Friends'] = friends; + m['Stat'] = stat; + + return m; + } } diff --git a/Sources/bowlin_project/pubspec.lock b/Sources/bowlin_project/pubspec.lock index da2a4e6..9772bd7 100644 --- a/Sources/bowlin_project/pubspec.lock +++ b/Sources/bowlin_project/pubspec.lock @@ -33,6 +33,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + buffer: + dependency: transitive + description: + name: buffer + sha256: "8962c12174f53e2e848a6acd7ac7fd63d8a1a6a316c20c458a832d87eba5422a" + url: "https://pub.dev" + source: hosted + version: "1.2.0" characters: dependency: transitive description: @@ -41,6 +49,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.dev" + source: hosted + version: "1.3.1" checked_yaml: dependency: transitive description: @@ -216,6 +232,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + localstorage: + dependency: "direct main" + description: + name: localstorage + sha256: "93f103074c0661bc1bb90aa88e172ee2e9096ec0c4f9baf519e23372c39ca681" + url: "https://pub.dev" + source: hosted + version: "4.0.0+1" logging: dependency: transitive description: @@ -304,6 +328,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.3" + pedantic: + dependency: transitive + description: + name: pedantic + sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" + url: "https://pub.dev" + source: hosted + version: "1.11.1" petitparser: dependency: transitive description: @@ -336,6 +368,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.6.2" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + postgres: + dependency: "direct main" + description: + name: postgres + sha256: "8a94c672fbfd252228862a8e786497828f650b427e51b2e624606756c64224e3" + url: "https://pub.dev" + source: hosted + version: "2.6.1" process: dependency: transitive description: @@ -344,6 +392,22 @@ packages: url: "https://pub.dev" source: hosted version: "4.2.4" + sasl_scram: + dependency: transitive + description: + name: sasl_scram + sha256: a47207a436eb650f8fdcf54a2e2587b850dc3caef9973ce01f332b07a6fc9cb9 + url: "https://pub.dev" + source: hosted + version: "0.1.1" + saslprep: + dependency: transitive + description: + name: saslprep + sha256: "79c9e163a82f55da542feaf0f7a59031e74493299c92008b2b404cd88d639bb4" + url: "https://pub.dev" + source: hosted + version: "1.0.2" simple_gradient_text: dependency: "direct main" description: @@ -413,6 +477,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + unorm_dart: + dependency: transitive + description: + name: unorm_dart + sha256: "5b35bff83fce4d76467641438f9e867dc9bcfdb8c1694854f230579d68cd8f4b" + url: "https://pub.dev" + source: hosted + version: "0.2.0" uuid: dependency: "direct main" description: diff --git a/Sources/bowlin_project/pubspec.yaml b/Sources/bowlin_project/pubspec.yaml index 6b6031d..2d68424 100644 --- a/Sources/bowlin_project/pubspec.yaml +++ b/Sources/bowlin_project/pubspec.yaml @@ -40,6 +40,8 @@ dependencies: google_fonts: ^3.0.1 go_router: ^6.0.1 uuid: ^3.0.7 + postgres: ^2.6.1 + localstorage: ^4.0.0+1 dev_dependencies: flutter_test: @@ -88,8 +90,8 @@ flutter: # list giving the asset and other descriptors for the font. For # example: fonts: - - family: BowlInFont - fonts: - - asset: assets/fonts/BowlInFont.ttf + - family: BowlInFont + fonts: + - asset: assets/fonts/BowlInFont.ttf # For details regarding fonts from package dependencies, # see https://flutter.dev/custom-fonts/#from-packages