aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/data
diff options
context:
space:
mode:
Diffstat (limited to 'lib/data')
-rw-r--r--lib/data/database_helper.dart54
-rw-r--r--lib/data/rest_ds.dart22
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"]);
+ });
+ }
+}