AbstractModelObserver.java 1.15 KB
Newer Older
1 2 3
package chat.rocket.android.service.observer;

import android.content.Context;
Yusuke Iwaki's avatar
Yusuke Iwaki committed
4 5
import io.realm.RealmObject;

Tiago Cunha's avatar
Tiago Cunha committed
6 7
import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.RealmListObserver;
8
import chat.rocket.android.service.DDPClientRef;
9
import chat.rocket.android.service.Registrable;
10

11
abstract class AbstractModelObserver<T extends RealmObject>
12
    implements Registrable, RealmListObserver.Query<T>, RealmListObserver.OnUpdateListener<T> {
13

Yusuke Iwaki's avatar
Yusuke Iwaki committed
14
  protected final Context context;
15
  protected final String hostname;
16
  protected final RealmHelper realmHelper;
17
  protected final DDPClientRef ddpClientRef;
18
  private final RealmListObserver observer;
19

20
  protected AbstractModelObserver(Context context, String hostname,
21
                                  RealmHelper realmHelper, DDPClientRef ddpClientRef) {
Yusuke Iwaki's avatar
Yusuke Iwaki committed
22
    this.context = context;
23
    this.hostname = hostname;
24
    this.realmHelper = realmHelper;
25
    this.ddpClientRef = ddpClientRef;
26
    observer = realmHelper.createListObserver(this).setOnUpdateListener(this);
27
  }
28

Yusuke Iwaki's avatar
Yusuke Iwaki committed
29 30
  @Override
  public void register() {
31 32 33
    observer.sub();
  }

Yusuke Iwaki's avatar
Yusuke Iwaki committed
34 35
  @Override
  public void unregister() {
36
    observer.unsub();
37
  }
38
}