Skip to content

Commit da37005

Browse files
SUPERCILEXsamtstern
authored andcommitted
Handle on cancelled (#282)
1 parent e5a6db9 commit da37005

File tree

3 files changed

+45
-3
lines changed

3 files changed

+45
-3
lines changed

database/src/main/java/com/firebase/ui/database/FirebaseArray.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class FirebaseArray implements ChildEventListener {
2828
public interface OnChangedListener {
2929
enum EventType { Added, Changed, Removed, Moved }
3030
void onChanged(EventType type, int index, int oldIndex);
31+
void onCancelled(DatabaseError databaseError);
3132
}
3233

3334
private Query mQuery;
@@ -94,20 +95,28 @@ public void onChildMoved(DataSnapshot snapshot, String previousChildKey) {
9495
notifyChangedListeners(OnChangedListener.EventType.Moved, newIndex, oldIndex);
9596
}
9697

97-
public void onCancelled(DatabaseError firebaseError) {
98-
// TODO: what do we do with this?
98+
public void onCancelled(DatabaseError databaseError) {
99+
notifyCancelledListeners(databaseError);
99100
}
100101
// End of ChildEventListener methods
101102

102103
public void setOnChangedListener(OnChangedListener listener) {
103104
mListener = listener;
104105
}
106+
105107
protected void notifyChangedListeners(OnChangedListener.EventType type, int index) {
106108
notifyChangedListeners(type, index, -1);
107109
}
110+
108111
protected void notifyChangedListeners(OnChangedListener.EventType type, int index, int oldIndex) {
109112
if (mListener != null) {
110113
mListener.onChanged(type, index, oldIndex);
111114
}
112115
}
116+
117+
protected void notifyCancelledListeners(DatabaseError databaseError) {
118+
if (mListener != null) {
119+
mListener.onCancelled(databaseError);
120+
}
121+
}
113122
}

database/src/main/java/com/firebase/ui/database/FirebaseListAdapter.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
package com.firebase.ui.database;
1616

1717
import android.app.Activity;
18+
import android.util.Log;
1819
import android.view.View;
1920
import android.view.ViewGroup;
2021
import android.widget.BaseAdapter;
2122

2223
import com.google.firebase.database.DatabaseReference;
24+
import com.google.firebase.database.DatabaseError;
2325
import com.google.firebase.database.DataSnapshot;
2426
import com.google.firebase.database.Query;
2527

@@ -73,6 +75,11 @@ public FirebaseListAdapter(Activity activity, Class<T> modelClass, int modelLayo
7375
public void onChanged(EventType type, int index, int oldIndex) {
7476
notifyDataSetChanged();
7577
}
78+
79+
@Override
80+
public void onCancelled(DatabaseError databaseError) {
81+
FirebaseListAdapter.this.onCancelled(databaseError);
82+
}
7683
});
7784
}
7885
/**
@@ -133,6 +140,16 @@ public View getView(int position, View view, ViewGroup viewGroup) {
133140
populateView(view, model, position);
134141
return view;
135142
}
143+
144+
/**
145+
* This method will be triggered in the event that this listener either failed at the server,
146+
* or is removed as a result of the security and Firebase Database rules.
147+
*
148+
* @param databaseError A description of the error that occurred
149+
*/
150+
protected void onCancelled(DatabaseError databaseError) {
151+
Log.w("FirebaseRecyclerAdapter", databaseError.toException());
152+
}
136153

137154
/**
138155
* Each time the data at the given Firebase location changes, this method will be called for each item that needs
@@ -146,5 +163,4 @@ public View getView(int position, View view, ViewGroup viewGroup) {
146163
* @param position The position in the list of the view being populated
147164
*/
148165
abstract protected void populateView(View v, T model, int position);
149-
150166
}

database/src/main/java/com/firebase/ui/database/FirebaseRecyclerAdapter.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
package com.firebase.ui.database;
1616

1717
import android.support.v7.widget.RecyclerView;
18+
import android.util.Log;
1819
import android.view.LayoutInflater;
1920
import android.view.View;
2021
import android.view.ViewGroup;
2122

2223
import com.google.firebase.database.DataSnapshot;
24+
import com.google.firebase.database.DatabaseError;
2325
import com.google.firebase.database.DatabaseReference;
2426
import com.google.firebase.database.Query;
2527

@@ -108,6 +110,11 @@ public void onChanged(EventType type, int index, int oldIndex) {
108110
throw new IllegalStateException("Incomplete case statement");
109111
}
110112
}
113+
114+
@Override
115+
public void onCancelled(DatabaseError databaseError) {
116+
FirebaseRecyclerAdapter.this.onCancelled(databaseError);
117+
}
111118
});
112119
}
113120

@@ -181,6 +188,16 @@ public void onBindViewHolder(VH viewHolder, int position) {
181188
public int getItemViewType(int position) {
182189
return mModelLayout;
183190
}
191+
192+
/**
193+
* This method will be triggered in the event that this listener either failed at the server,
194+
* or is removed as a result of the security and Firebase Database rules.
195+
*
196+
* @param databaseError A description of the error that occurred
197+
*/
198+
protected void onCancelled(DatabaseError databaseError) {
199+
Log.w("FirebaseRecyclerAdapter", databaseError.toException());
200+
}
184201

185202
/**
186203
* Each time the data at the given Firebase location changes, this method will be called for each item that needs

0 commit comments

Comments
 (0)