Fix: All statuses failed to load when status JSON was checked for boolean values, but received null and would throw a JSONException.

A change in the Mastodon server implementation seemed to be the cause. In the future, either default booleans to false or check for null first before getting them.
This commit is contained in:
Vavassor 2017-02-05 23:13:48 -05:00
parent e0ab25334b
commit c937d30713
3 changed files with 5 additions and 6 deletions

View File

@ -86,8 +86,6 @@ public class MainActivity extends AppCompatActivity {
notificationServiceEnabled = preferences.getBoolean("pullNotifications", true);
String minutesString = preferences.getString("pullNotificationCheckInterval", "15");
long notificationCheckInterval = 60 * 1000 * Integer.valueOf(minutesString);
Log.d(TAG, String.format("pull notifications: %b %dm", notificationServiceEnabled,
Integer.valueOf(minutesString)));
// Start up the PullNotificationsService.
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, PullNotificationService.class);

View File

@ -194,8 +194,8 @@ public class Status {
String id = object.getString("id");
String content = object.getString("content");
Date createdAt = parseDate(object.getString("created_at"));
boolean reblogged = object.getBoolean("reblogged");
boolean favourited = object.getBoolean("favourited");
boolean reblogged = object.optBoolean("reblogged");
boolean favourited = object.optBoolean("favourited");
String spoilerText = object.getString("spoiler_text");
boolean sensitive = object.optBoolean("sensitive");
String visibility = object.getString("visibility");

View File

@ -24,6 +24,7 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -42,6 +43,7 @@ import java.util.Map;
public class TimelineFragment extends SFragment implements
SwipeRefreshLayout.OnRefreshListener, StatusActionListener, FooterActionListener {
private static final String TAG = "Timeline"; // logging tag
public enum Kind {
HOME,
@ -176,12 +178,10 @@ public class TimelineFragment extends SFragment implements
break;
}
case TAG: {
assert(hashtagOrId != null);
endpoint = String.format(getString(R.string.endpoint_timelines_tag), hashtagOrId);
break;
}
case USER: {
assert(hashtagOrId != null);
endpoint = String.format(getString(R.string.endpoint_statuses), hashtagOrId);
break;
}
@ -237,6 +237,7 @@ public class TimelineFragment extends SFragment implements
public void onFetchTimelineFailure(Exception exception) {
showFetchTimelineRetry(true);
swipeRefreshLayout.setRefreshing(false);
Log.e(TAG, exception.getMessage());
}
private void showFetchTimelineRetry(boolean show) {