-
Notifications
You must be signed in to change notification settings - Fork 490
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: Migrate Attendee checkin to ViewModel (#1318)
- Loading branch information
1 parent
89606ff
commit d57efc1
Showing
6 changed files
with
143 additions
and
127 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
77 changes: 0 additions & 77 deletions
77
app/src/main/java/com/eventyay/organizer/core/attendee/checkin/AttendeeCheckInPresenter.java
This file was deleted.
Oops, something went wrong.
85 changes: 85 additions & 0 deletions
85
app/src/main/java/com/eventyay/organizer/core/attendee/checkin/AttendeeCheckInViewModel.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
package com.eventyay.organizer.core.attendee.checkin; | ||
|
||
import android.annotation.SuppressLint; | ||
import android.arch.lifecycle.LiveData; | ||
import android.arch.lifecycle.ViewModel; | ||
import android.support.annotation.VisibleForTesting; | ||
|
||
import com.eventyay.organizer.common.livedata.SingleEventLiveData; | ||
import com.eventyay.organizer.data.db.DatabaseChangeListener; | ||
import com.eventyay.organizer.data.db.DbFlowDatabaseChangeListener; | ||
import com.eventyay.organizer.data.attendee.Attendee; | ||
import com.eventyay.organizer.data.attendee.AttendeeRepository; | ||
import com.eventyay.organizer.utils.ErrorUtils; | ||
|
||
import javax.inject.Inject; | ||
|
||
import io.reactivex.disposables.CompositeDisposable; | ||
|
||
import static com.eventyay.organizer.common.rx.ViewTransformers.dispose; | ||
|
||
public class AttendeeCheckInViewModel extends ViewModel { | ||
|
||
private final AttendeeRepository attendeeRepository; | ||
private final DatabaseChangeListener<Attendee> databaseChangeListener; | ||
private final CompositeDisposable compositeDisposable = new CompositeDisposable(); | ||
private final SingleEventLiveData<Attendee> attendeeliveData = new SingleEventLiveData<>(); | ||
private final SingleEventLiveData<String> error = new SingleEventLiveData<>(); | ||
|
||
@Inject | ||
public AttendeeCheckInViewModel(AttendeeRepository attendeeRepository, DatabaseChangeListener<Attendee> databaseChangeListener) { | ||
this.attendeeRepository = attendeeRepository; | ||
this.databaseChangeListener = databaseChangeListener; | ||
} | ||
|
||
@SuppressLint("CheckResult") | ||
public void start(long attendeeId) { | ||
databaseChangeListener.startListening(); | ||
|
||
compositeDisposable.add( | ||
databaseChangeListener.getNotifier() | ||
.compose(dispose(compositeDisposable)) | ||
.map(DbFlowDatabaseChangeListener.ModelChange::getModel) | ||
.filter(filterAttendee -> filterAttendee.getId() == attendeeliveData.getValue().getId()) | ||
.flatMap(filterAttendee -> attendeeRepository.getAttendee(attendeeliveData.getValue().getId(), false)) | ||
.subscribe(this.attendeeliveData::setValue, | ||
throwable -> error.setValue(ErrorUtils.getMessage(throwable).toString()))); | ||
|
||
compositeDisposable.add( | ||
attendeeRepository.getAttendee(attendeeId, false) | ||
.compose(dispose(compositeDisposable)) | ||
.subscribe(this.attendeeliveData::setValue, | ||
throwable -> error.setValue(ErrorUtils.getMessage(throwable).toString()))); | ||
} | ||
|
||
public LiveData<Attendee> getAttendee() { | ||
return attendeeliveData; | ||
} | ||
|
||
public LiveData<String> getError() { | ||
return error; | ||
} | ||
|
||
@Override | ||
protected void onCleared() { | ||
super.onCleared(); | ||
databaseChangeListener.stopListening(); | ||
} | ||
|
||
public void toggleCheckIn() { | ||
attendeeliveData.getValue().setChecking(true); | ||
attendeeliveData.getValue().isCheckedIn = !attendeeliveData.getValue().isCheckedIn; | ||
|
||
compositeDisposable.add( | ||
attendeeRepository.scheduleToggle(attendeeliveData.getValue()) | ||
.subscribe(() -> { | ||
// Nothing to do | ||
}, throwable -> error.setValue(ErrorUtils.getMessage(throwable).toString()))); | ||
} | ||
|
||
@VisibleForTesting | ||
public void setAttendee(Attendee attendee) { | ||
this.attendeeliveData.setValue(attendee); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.