diff --git a/.idea/Bowl_in.iml b/.idea/Bowl_in.iml
index f1b2d07..01dd66f 100644
--- a/.idea/Bowl_in.iml
+++ b/.idea/Bowl_in.iml
@@ -10,6 +10,5 @@
-
\ No newline at end of file
diff --git a/Sources/bowlin_project/lib/model/IManager.dart b/Sources/bowlin_project/lib/model/IManager.dart
index 00ecb8c..3b1932f 100644
--- a/Sources/bowlin_project/lib/model/IManager.dart
+++ b/Sources/bowlin_project/lib/model/IManager.dart
@@ -2,10 +2,8 @@ import 'package:bowl_in/model/GameDetail.dart';
import 'package:bowl_in/model/GamePlayer.dart';
import 'User.dart';
-import 'Game.dart';
import 'IUserManager.dart';
import 'IGameManager.dart';
-import 'Game.dart';
abstract class IManager {
late User _userCurrent;
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..e97923f
--- /dev/null
+++ b/Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart
@@ -0,0 +1,16 @@
+import 'package:bowl_in/model/IAuthManager.dart';
+import 'package:bowl_in/model/LocalManager/LocalData.dart';
+
+class AuthManager extends IAuthManager {
+ final LocalData parent;
+
+ // Constructor
+ AuthManager(this.parent);
+
+ @override
+ bool verifiedUser(String mail, String password) {
+ // TODO: implement verifiedUser
+ throw UnimplementedError();
+ }
+
+}
\ No newline at end of file
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..b93f3a0
--- /dev/null
+++ b/Sources/bowlin_project/lib/model/LocalManager/GameManager.dart
@@ -0,0 +1,59 @@
+import 'package:bowl_in/model/GameDetail.dart';
+import 'package:bowl_in/model/IGameManager.dart';
+import 'package:bowl_in/model/LocalManager/LocalData.dart';
+import 'package:bowl_in/model/Player.dart';
+
+class GameManager extends IGameManager {
+ final LocalData parent;
+
+ // Constructor
+ GameManager(this.parent);
+
+ @override
+ addGame(GameDetail gd) {
+ // TODO: implement addGame
+ throw UnimplementedError();
+ }
+
+ @override
+ GameDetail getGameById(int id) {
+ // TODO: implement getGameById
+ throw UnimplementedError();
+ }
+
+ @override
+ List getGamesByPlayer(Player user) {
+ // TODO: implement getGamesByPlayer
+ throw UnimplementedError();
+ }
+
+ @override
+ List getGamesByPlayerId(int id) {
+ // TODO: implement getGamesByPlayerId
+ throw UnimplementedError();
+ }
+
+ @override
+ List getGamesByPlayers(List users) {
+ // TODO: implement getGamesByPlayers
+ throw UnimplementedError();
+ }
+
+ @override
+ int getNextId() {
+ // TODO: implement getNextId
+ throw UnimplementedError();
+ }
+
+ @override
+ List getPlayersByIdGame(int id) {
+ // TODO: implement getPlayersByIdGame
+ throw UnimplementedError();
+ }
+
+ @override
+ Map getRankByIdGame(int id) {
+ // TODO: implement getRankByIdGame
+ throw UnimplementedError();
+ }
+}
\ No newline at end of file
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..ebef5aa
--- /dev/null
+++ b/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart
@@ -0,0 +1,19 @@
+import 'package:bowl_in/model/IManager.dart';
+import 'package:localstorage/localstorage.dart';
+
+import '../IGameManager.dart';
+import '../IUserManager.dart';
+import 'GameManager.dart';
+import 'UserManager.dart';
+
+class LocalData extends IManager{
+ late IUserManager _userMgr;
+ late IGameManager _gameMgr;
+
+ final LocalStorage storage = LocalStorage('local_key');
+
+ LocalData() {
+ _userMgr = UserManager(this);
+ _gameMgr = GameManager(this);
+ }
+}
\ No newline at end of file
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..b025fc7
--- /dev/null
+++ b/Sources/bowlin_project/lib/model/LocalManager/UserManager.dart
@@ -0,0 +1,78 @@
+import 'dart:convert';
+
+import 'package:bowl_in/model/IUserManager.dart';
+import 'package:bowl_in/model/LocalManager/LocalData.dart';
+import 'package:bowl_in/model/Player.dart';
+import 'package:bowl_in/model/User.dart';
+
+import '../Stat.dart';
+import 'AuthManager.dart';
+
+class UserManager extends IUserManager {
+ final LocalData parent;
+
+ // Constructor
+ UserManager(this.parent) : super(AuthManager(parent)) {
+ _initUser();
+ }
+
+ _initUser() {
+ String userJson = parent.storage.getItem('user');
+
+ if (userJson != null) {
+ Map userMap = json.decode(userJson);
+ User user = User(
+ userMap['_id'],
+ userMap['name'],
+ userMap['image'],
+ userMap['_mail'],
+ [],
+ [],
+ new Stat(0, 0, 0, 0, 0, 0, 2.0, 3.0),
+ );
+ parent.userCurrent = user;
+ } else {
+ parent.userCurrent = new User(
+ 1,
+ "Unknown",
+ "./assets/images/image_user_cyan.png",
+ "david.d_almeida@etu.uca.fr",
+ [],
+ [],
+ Stat(0, 0, 0, 0, 0, 0, 0, 0));
+ }
+ }
+
+ saveUser(User user) {
+ String userJson = json.encode(userToMap(user));
+
+ parent.storage.setItem('user', userJson);
+ }
+
+ Map userToMap(User user) {
+ return {
+ '_id': user.id,
+ 'name': user.name,
+ 'image': user.image,
+ '_mail': user.mail,
+ };
+ }
+
+ @override
+ List getRankingWithFriends() {
+ // TODO: implement getRankingWithFriends
+ throw UnimplementedError();
+ }
+
+ @override
+ Player getUserById(int id) {
+ // TODO: implement getUserById
+ throw UnimplementedError();
+ }
+
+ @override
+ List getUsersByName(String name) {
+ // TODO: implement getUsersByName
+ throw UnimplementedError();
+ }
+}
diff --git a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart
index fc93912..bb63f3f 100644
--- a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart
+++ b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart
@@ -1,4 +1,5 @@
library StubLib;
+
import '../IAuthManager.dart';
import '../User.dart';
import 'StubData.dart';
@@ -8,6 +9,7 @@ class AuthManager extends IAuthManager {
// Constructor
AuthManager(this.parent);
+
// Methods
bool verifiedUser(String mail, String password) {
for (var user in parent.players) {
@@ -18,4 +20,4 @@ class AuthManager extends IAuthManager {
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart
index 001b928..81afb95 100644
--- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart
+++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart
@@ -51,15 +51,7 @@ class StubData extends IManager {
Achievement("Win a game")
],
[],
- Stat(
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0)),
+ Stat(0, 0, 0, 0, 0, 0, 0, 0)),
User(
9,
"Dave",
@@ -82,15 +74,7 @@ class StubData extends IManager {
Achievement("Win a game")
],
[],
- Stat(
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0)),
+ Stat(0, 0, 0, 0, 0, 0, 0, 0)),
User(
22,
"Louison",
@@ -102,15 +86,7 @@ class StubData extends IManager {
Achievement("Win a game")
],
[],
- Stat(
- 10,
- 12,
- 150,
- 7,
- 6,
- 700,
- 58.33,
- 30.2)),
+ Stat(10, 12, 150, 7, 6, 700, 58.33, 30.2)),
User(
23,
"Owen",
@@ -122,15 +98,7 @@ class StubData extends IManager {
Achievement("Win a game")
],
[],
- Stat(
- 10,
- 12,
- 10,
- 7,
- 6,
- 700,
- 58.33,
- 30.2)),
+ Stat(10, 12, 10, 7, 6, 700, 58.33, 30.2)),
User(
24,
"LULU",
@@ -142,15 +110,7 @@ class StubData extends IManager {
Achievement("Win a game")
],
[],
- Stat(
- 10,
- 12,
- 40,
- 7,
- 6,
- 700,
- 58.33,
- 30.2)),
+ Stat(10, 12, 40, 7, 6, 700, 58.33, 30.2)),
User(
25,
"Raphael",
@@ -162,25 +122,9 @@ class StubData extends IManager {
Achievement("Win a game")
],
[],
- Stat(
- 10,
- 12,
- 76,
- 7,
- 6,
- 700,
- 58.33,
- 30.2)),
+ Stat(10, 12, 76, 7, 6, 700, 58.33, 30.2)),
],
- Stat(
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0))
+ Stat(0, 0, 0, 0, 0, 0, 0, 0))
];
List _gameDetails = [];
diff --git a/Sources/bowlin_project/pubspec.lock b/Sources/bowlin_project/pubspec.lock
index ee6d354..27cb5bf 100644
--- a/Sources/bowlin_project/pubspec.lock
+++ b/Sources/bowlin_project/pubspec.lock
@@ -224,6 +224,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.1"
+ localstorage:
+ dependency: "direct main"
+ description:
+ name: localstorage
+ sha256: "1b5304491c85250b90807e0e2b3a6217d2739caea4871b820d42782572f880f4"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.1+2"
logging:
dependency: transitive
description:
diff --git a/Sources/bowlin_project/pubspec.yaml b/Sources/bowlin_project/pubspec.yaml
index d4df740..45ba99c 100644
--- a/Sources/bowlin_project/pubspec.yaml
+++ b/Sources/bowlin_project/pubspec.yaml
@@ -40,6 +40,7 @@ dependencies:
google_fonts: ^3.0.1
go_router: ^6.0.1
uuid: ^3.0.7
+ localstorage: ^4.0.0+1
intl: ^0.18.0