Skip to content

Instantly share code, notes, and snippets.

View Diolor's full-sized avatar

Dionysis Lorentzos Diolor

View GitHub Profile
@Diolor
Diolor / subject.kt
Last active December 30, 2018 17:49
Rx Puzzles
fun printCurrentThread(tag: String) = println("$tag: ${Thread.currentThread().name.substringBefore("-")}")
fun main(args: Array<String>) {
printCurrentThread("main thread name")
val subject = BehaviorSubject.create(Unit)
subject
.subscribeOn(Schedulers.computation())
.subscribe {
// build.gradle
apply plugin: EmailPlugin
// build src file
open class EmailPlugin : Plugin<Project> {
override fun apply(project: Project) {
// DO stuff
}
}
@Diolor
Diolor / FilterButtonActivity.java
Created March 18, 2017 02:36
FilterButtonActivity
class MyActivity extends Activity implements StateView<FilterButtonState> {
private Button button;
@Inject
FilterButtonPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// set some content views
Component.activity(this).inject(this); // dagger 2 injection
@Diolor
Diolor / FilterButtonPresenterTest.java
Created March 18, 2017 02:02
FilterButtonPresenterTest
@RunWith(MockitoJUnitRunner.class)
class FilterButtonPresenterTest {
@Mock
AccountInteractor accountInteractor;
@Mock
StateView<FilterButtonState> view;
@InjectMocks
FilterButtonPresenter testee;
@Diolor
Diolor / FilterButtonPresenter.java
Last active March 18, 2017 02:20
FilterButtonPresenter
@ViewScope // dagger 2 scope
class FilterButtonPresenter implements Presenter<FilterButtonState, StateView<FilterButtonState>> {
final AccountInteractor accountInteractor;
Subscription subscription;
@Inject // dagger 2 dependency injection
FilterButtonPresenter(AccountInteractor accountInteractor){
this.accountInteractor = accountInteractor;
}
@Diolor
Diolor / Presenter.java
Last active March 18, 2017 01:36
RxJava & MVP
public interface Presenter<S, V extends StateView<S>> {
void onStart(V view);
void onStop();
}
@Diolor
Diolor / MainActivity.java
Last active January 7, 2017 19:42
Uncontrollable observable with commit()
public class MainActivity extends AppCompatActivity {
private final Disposable disposable = Observable.timer(5, TimeUnit.SECONDS)
.subscribe(o ->
new MyDialogFragment()
.show(getSupportFragmentManager(), "DIALOG_TAG")
);
@Override
protected void onPause() {
@Diolor
Diolor / MainActivity.java
Last active January 7, 2017 19:40
Controllable observable with commit()
public class MainActivity extends AppCompatActivity {
private final PublishSubject<Object> dialogDisplaySubject = PublishSubject.create();
private final Disposable disposable = dialogDisplaySubject
.subscribe(o ->
new MyDialogFragment()
.show(getSupportFragmentManager(), "DIALOG_TAG")
);
@Override
@Diolor
Diolor / final.java
Last active June 18, 2016 05:53
Final example
private final PublishSubject<Void> viewClickedSubject = PublishSubject.create();
private final CompositeSubscription startStopCompositeSubscription = new CompositeSubscription();
@Override
protected void onStart() {
super.onStart();
view.setOnClickListener(v-> viewClickedSubject.onNext(null));
Subscription subscription = viewClickedSubject
PublishSubject<Void> viewClickedSubject = PublishSubject.create();
CompositeSubscription startStopCompositeSubscription = new CompositeSubscription();
protected void onStart() {
view.setOnClickListener(v-> viewClickedSubject.onNext(null));
Subscription subscription = viewClickedSubject
.flatMap(aVoid-> api.getAlert())
.subscribe(this::makeAlertToast, Throwable::printStackTrace);