diff --git a/.idea/misc.xml b/.idea/misc.xml index aa61ddb..9e3e273 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -60,7 +60,7 @@ - + diff --git a/app/src/main/java/com/smarthomies/realtimetalk/network/NetworkingConstants.java b/app/src/main/java/com/smarthomies/realtimetalk/network/NetworkingConstants.java index fbb64e6..444b181 100644 --- a/app/src/main/java/com/smarthomies/realtimetalk/network/NetworkingConstants.java +++ b/app/src/main/java/com/smarthomies/realtimetalk/network/NetworkingConstants.java @@ -12,6 +12,7 @@ public class NetworkingConstants { public static final String API_LOGOUT_ENDPOINT = "odjava"; public static final String API_REGISTRATION_ENDPOINT = "dodaj"; public static final String API_CONTACTS_ENDPOINT = "contacts"; + public static final String API_CONTACTS_DELETE_ENDPOINT = "contacts/{id}"; public static final String API_PROFILE_ENDPOINT = "profile"; public static final String API_PASSWORD_UPDATE_ENDPOINT = API_PROFILE_ENDPOINT + "/password"; public static final String API_SEARCH_ENDPOINT = "search"; diff --git a/app/src/main/java/com/smarthomies/realtimetalk/network/apis/ContactsAPI.java b/app/src/main/java/com/smarthomies/realtimetalk/network/apis/ContactsAPI.java index f4a13b7..c286ea8 100644 --- a/app/src/main/java/com/smarthomies/realtimetalk/network/apis/ContactsAPI.java +++ b/app/src/main/java/com/smarthomies/realtimetalk/network/apis/ContactsAPI.java @@ -9,6 +9,8 @@ import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.Path; +import retrofit2.http.Url; import rx.Observable; /** @@ -26,7 +28,7 @@ public interface ContactsAPI { @POST(NetworkingConstants.API_CONTACTS_ENDPOINT) Observable saveContact(@Body ContactRequest contactRequest); - @DELETE(NetworkingConstants.API_CONTACTS_ENDPOINT) - Observable deleteContact(@Body ContactRequest contactRequest); + @DELETE(NetworkingConstants.API_CONTACTS_DELETE_ENDPOINT) + Observable deleteContact(@Path("id") String id); } diff --git a/app/src/main/java/com/smarthomies/realtimetalk/services/ContactsAPIService.java b/app/src/main/java/com/smarthomies/realtimetalk/services/ContactsAPIService.java index 94e2b77..1384878 100644 --- a/app/src/main/java/com/smarthomies/realtimetalk/services/ContactsAPIService.java +++ b/app/src/main/java/com/smarthomies/realtimetalk/services/ContactsAPIService.java @@ -44,7 +44,7 @@ public class ContactsAPIService { } public Observable deleteContact(ContactRequest request) { - return RestClient.getInstance().getContactsAPI().deleteContact(request) + return RestClient.getInstance().getContactsAPI().deleteContact(request.getUsername()) .doOnError(handleApiErrors); } diff --git a/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/MainViewModel.java b/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/MainViewModel.java index 4e4efed..89ac04c 100644 --- a/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/MainViewModel.java +++ b/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/MainViewModel.java @@ -8,6 +8,7 @@ import android.util.Pair; import android.view.View; import com.smarthomies.realtimetalk.RTTActivity; +import com.smarthomies.realtimetalk.database.UserDAO; import com.smarthomies.realtimetalk.managers.AccountManager; import com.smarthomies.realtimetalk.managers.AuthenticationManager; import com.smarthomies.realtimetalk.managers.ContactsManager; @@ -23,6 +24,7 @@ import com.smarthomies.realtimetalk.views.activities.SearchActivity; import java.util.List; +import io.realm.Realm; import rx.Observable; import rx.Subscriber; import rx.Subscription; @@ -140,6 +142,15 @@ public class MainViewModel extends BaseObservable { } public void onLogoutDone() { + Realm realm = null; + try { + realm = Realm.getDefaultInstance(); + new UserDAO().deleteAll(realm); + } finally { + if(realm != null) { + realm.close(); + } + } NavigationSubject.getInstance().onNext(new Pair, Bundle>(LoginActivity.class, null)); } diff --git a/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/UserViewModel.java b/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/UserViewModel.java index 1c4882d..1713db4 100644 --- a/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/UserViewModel.java +++ b/app/src/main/java/com/smarthomies/realtimetalk/viewmodels/UserViewModel.java @@ -11,6 +11,7 @@ import android.view.View; import android.widget.ImageView; import com.smarthomies.realtimetalk.R; +import com.smarthomies.realtimetalk.database.UserDAO; import com.smarthomies.realtimetalk.managers.ContactsManager; import com.smarthomies.realtimetalk.models.db.User; import com.smarthomies.realtimetalk.views.activities.CallActivity; @@ -18,6 +19,8 @@ import com.squareup.picasso.Picasso; import java.util.concurrent.TimeUnit; +import io.realm.Realm; +import rx.Observable; import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; @@ -37,7 +40,7 @@ public class UserViewModel extends BaseObservable { } public UserViewModel(User model) { - this.model = model; + setModel(model); } public void setModel(User model) { @@ -45,6 +48,21 @@ public class UserViewModel extends BaseObservable { if (model == null) { this.model = new User(); } + + Realm realm = null; + try { + realm = Realm.getDefaultInstance(); + if (new UserDAO().findUserById(realm, this.model.getId()) != null) { + state.set(true); + } else { + state.set(false); + } + } finally { + if(realm != null) { + realm.close(); + } + } + notifyChange(); } @@ -71,8 +89,11 @@ public class UserViewModel extends BaseObservable { return new View.OnClickListener() { @Override public void onClick(View v) { - final Subscription subscription = new ContactsManager() - .saveContact(model) + Observable objectObservable = state.get() + ? new ContactsManager().deleteContact(model) + : new ContactsManager().saveContact(model); + + final Subscription subscription = objectObservable .delaySubscription(3000, TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -93,7 +114,8 @@ public class UserViewModel extends BaseObservable { }); Log.d(TAG, "onClick: "); state.set(!state.get()); - Snackbar.make(v, model.getFirstName() + " " + model.getLastName() + " added to conctacts.", Snackbar.LENGTH_LONG) + String action = state.get() ? "added" : "removed"; + Snackbar.make(v, model.getFirstName() + " " + model.getLastName() + " " + action + " to contacts.", Snackbar.LENGTH_LONG) .setDuration(3000) .setAction("Undo", new View.OnClickListener() { @Override