diff options
Diffstat (limited to 'lib/data')
-rw-r--r-- | lib/data/database_helper.dart | 54 | ||||
-rw-r--r-- | lib/data/rest_ds.dart | 22 |
2 files changed, 76 insertions, 0 deletions
diff --git a/lib/data/database_helper.dart b/lib/data/database_helper.dart new file mode 100644 index 0000000..da65dcc --- /dev/null +++ b/lib/data/database_helper.dart @@ -0,0 +1,54 @@ +import 'dart:async'; +import 'dart:io' as io; + +import 'package:path/path.dart'; +import 'package:beam_messenger/models/user.dart'; +import 'package:sqflite/sqflite.dart'; +import 'package:path_provider/path_provider.dart'; + +class DatabaseHelper { + static final DatabaseHelper _instance = new DatabaseHelper.internal(); + factory DatabaseHelper() => _instance; + + static Database _db; + + Future<Database> get db async { + if (_db != null) return _db; + _db = await initDb(); + return _db; + } + + DatabaseHelper.internal(); + + initDb() async { + io.Directory documentsDirectory = await getApplicationDocumentsDirectory(); + String path = join(documentsDirectory.path, "main.db"); + var theDb = await openDatabase(path, version: 1, onCreate: _onCreate); + return theDb; + } + + void _onCreate(Database db, int version) async { + // When creating the db, create the table + await db.execute( + "CREATE TABLE User(id INTEGER PRIMARY KEY, email TEXT, password TEXT)"); + print("Created tables"); + } + + Future<int> saveUser(User user) async { + var dbClient = await db; + int res = await dbClient.insert("User", user.toMap()); + return res; + } + + Future<int> deleteUsers() async { + var dbClient = await db; + int res = await dbClient.delete("User"); + return res; + } + + Future<bool> isLoggedIn() async { + var dbClient = await db; + var res = await dbClient.query("User"); + return res.length > 0 ? true : false; + } +} diff --git a/lib/data/rest_ds.dart b/lib/data/rest_ds.dart new file mode 100644 index 0000000..7d66d4a --- /dev/null +++ b/lib/data/rest_ds.dart @@ -0,0 +1,22 @@ +import 'dart:async'; +import 'dart:convert'; // not needed for later use + +import 'package:beam_messenger/utils/network_util.dart'; +import 'package:beam_messenger/models/user.dart'; + +class RestDatasource { + NetworkUtil _netUtil = new NetworkUtil(); + static final BASE_URL = "http://192.168.0.74:8000"; + static final LOGIN_URL = BASE_URL + "/login"; + + Future<User> login(String email, String password) { + return _netUtil.post(LOGIN_URL, + body: {"email": email, "password": password}).then((dynamic res) { + print(res.toString()); + if (res["status"]) throw new Exception(res["message"]); + return jsonDecode( + "{ error: false, user: { email: “marvin@borners.de”, password: “password” } }"); // later: access token + // return new User.map(res["user"]); + }); + } +} |