diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index c8749e3..ea122c6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,4 +1,5 @@
apply plugin: 'com.android.application'
+apply plugin: 'realm-android'
android {
compileSdkVersion 24
@@ -40,5 +41,6 @@ dependencies {
compile 'io.reactivex:rxjava:1.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'
compile 'com.squareup.picasso:picasso:2.5.2'
+ compile 'com.android.support:support-v4:24.2.1'
testCompile 'junit:junit:4.12'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 522444a..14b6eae 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,7 +2,14 @@
-
+
+
+
+
+
+ android:windowSoftInputMode="adjustPan"/>
+
+
+
+
+
+
+
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/smarthomies/realtimetalk/RTTApp.java b/app/src/main/java/com/smarthomies/realtimetalk/RTTApp.java
index 5cebd71..f17270c 100644
--- a/app/src/main/java/com/smarthomies/realtimetalk/RTTApp.java
+++ b/app/src/main/java/com/smarthomies/realtimetalk/RTTApp.java
@@ -4,6 +4,8 @@ import android.app.Application;
import com.smarthomies.realtimetalk.utils.RTTAppHelper;
+import io.realm.Realm;
+
/**
* Created by ensar on 31/10/16.
*/
@@ -15,5 +17,7 @@ public class RTTApp extends Application {
super.onCreate();
RTTAppHelper.getInstance().initWithContext(getApplicationContext());
+
+ Realm.init(this);
}
}
diff --git a/app/src/main/java/com/smarthomies/realtimetalk/database/RealmDAO.java b/app/src/main/java/com/smarthomies/realtimetalk/database/RealmDAO.java
new file mode 100644
index 0000000..c575e0a
--- /dev/null
+++ b/app/src/main/java/com/smarthomies/realtimetalk/database/RealmDAO.java
@@ -0,0 +1,79 @@
+package com.smarthomies.realtimetalk.database;
+
+import java.util.List;
+
+import io.realm.Realm;
+import io.realm.RealmObject;
+import io.realm.RealmResults;
+
+/**
+ * Created by ensar on 12/12/16.
+ */
+public class RealmDAO {
+ public static final String TAG = RealmDAO.class.getSimpleName();
+
+ protected Class entityClass;
+
+ public RealmDAO(Class entityClass) {
+ this.entityClass = entityClass;
+ }
+
+ public List load(Realm realm) {
+ RealmResults result = realm.where(entityClass).findAll();
+ return realm.copyFromRealm(result);
+ }
+
+ public void cleanSave(Realm realm, List objects) {
+ deleteAll(realm);
+
+ realm.beginTransaction();
+ for (Object realmObject : objects) {
+ realm.copyToRealm((RealmObject) realmObject);
+ }
+
+ realm.commitTransaction();
+ }
+
+ public void save(Realm realm, List objects) {
+
+ realm.beginTransaction();
+
+ for (Object realmObject : objects) {
+ realm.copyToRealm((RealmObject) realmObject);
+ }
+
+ realm.commitTransaction();
+ }
+
+ public void updateOrCreate(Realm realm, T object) {
+ realm.beginTransaction();
+ realm.copyToRealmOrUpdate(object);
+ realm.commitTransaction();
+ }
+
+ public void updateOrCreate(Realm realm, List extends RealmObject> objects, boolean deleteIfMissing) {
+ if(objects.isEmpty()) {
+ return;
+ }
+ Class clazz = objects.get(0).getClass();
+ realm.beginTransaction();
+ List liveObjects = realm.copyToRealmOrUpdate(objects);
+
+ // If true, all objects in DB which are not updated or added will be deleted
+ if(deleteIfMissing) {
+ RealmResults allDbObjects = realm.where(entityClass).findAll();
+ for(int i=0; i {
+ public static final String TAG = UserDAO.class.getSimpleName();
+
+ public UserDAO() {
+ super(User.class);
+ }
+
+ public User findUserById(Realm realm, int id) {
+ return realm.where(entityClass).equalTo(User.PRIMARY_KEY, id).findFirst();
+ }
+
+ public void deleteById(Realm realm, int id) {
+ realm.beginTransaction();
+ realm.where(entityClass).equalTo(User.PRIMARY_KEY, id).findFirst().deleteFromRealm();
+ realm.commitTransaction();
+ }
+}
diff --git a/app/src/main/java/com/smarthomies/realtimetalk/managers/AccountManager.java b/app/src/main/java/com/smarthomies/realtimetalk/managers/AccountManager.java
new file mode 100644
index 0000000..26cf834
--- /dev/null
+++ b/app/src/main/java/com/smarthomies/realtimetalk/managers/AccountManager.java
@@ -0,0 +1,103 @@
+package com.smarthomies.realtimetalk.managers;
+
+import com.smarthomies.realtimetalk.database.UserDAO;
+import com.smarthomies.realtimetalk.models.db.User;
+import com.smarthomies.realtimetalk.models.network.PasswordChangeRequest;
+import com.smarthomies.realtimetalk.models.network.RegistrationRequest;
+import com.smarthomies.realtimetalk.models.network.UserResponse;
+import com.smarthomies.realtimetalk.models.network.UsersResponse;
+import com.smarthomies.realtimetalk.services.AccountAPIService;
+import com.smarthomies.realtimetalk.utils.RTTAppHelper;
+
+import io.realm.Realm;
+import rx.Observable;
+import rx.functions.Action1;
+
+/**
+ * Created by ensar on 01/11/16.
+ */
+public class AccountManager {
+ public static final String TAG = AccountManager.class.getSimpleName();
+
+ public Observable getProfile() {
+ return Observable.just(getUserFromDb()).concatWith(AccountAPIService.getInstance().getProfile()
+ .doOnNext(saveProfile));
+ }
+
+ public Observable