Fix getting the feed
Now the app handles a Throwable properly to get the feed if the cache fails.
This commit is contained in:
parent
69f27b92e5
commit
8a45bde090
1 changed files with 207 additions and 190 deletions
|
@ -15,6 +15,8 @@
|
|||
|
||||
package com.keylesspalace.tusky.fragment;
|
||||
|
||||
import static com.uber.autodispose.AutoDispose.autoDisposable;
|
||||
import static com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider.from;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
|
@ -25,7 +27,6 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.arch.core.util.Function;
|
||||
|
@ -42,17 +43,32 @@ import androidx.recyclerview.widget.ListUpdateCallback;
|
|||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import at.connyduck.sparkbutton.helpers.Utils;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.keylesspalace.tusky.AccountListActivity;
|
||||
import com.keylesspalace.tusky.BaseActivity;
|
||||
import com.keylesspalace.tusky.R;
|
||||
import com.keylesspalace.tusky.adapter.StatusBaseViewHolder;
|
||||
import com.keylesspalace.tusky.adapter.TimelineAdapter;
|
||||
import com.keylesspalace.tusky.appstore.*;
|
||||
import com.keylesspalace.tusky.appstore.BlockEvent;
|
||||
import com.keylesspalace.tusky.appstore.BookmarkEvent;
|
||||
import com.keylesspalace.tusky.appstore.DomainMuteEvent;
|
||||
import com.keylesspalace.tusky.appstore.EmojiReactEvent;
|
||||
import com.keylesspalace.tusky.appstore.EventHub;
|
||||
import com.keylesspalace.tusky.appstore.FavoriteEvent;
|
||||
import com.keylesspalace.tusky.appstore.MuteConversationEvent;
|
||||
import com.keylesspalace.tusky.appstore.MuteEvent;
|
||||
import com.keylesspalace.tusky.appstore.PreferenceChangedEvent;
|
||||
import com.keylesspalace.tusky.appstore.ReblogEvent;
|
||||
import com.keylesspalace.tusky.appstore.StatusComposedEvent;
|
||||
import com.keylesspalace.tusky.appstore.StatusDeletedEvent;
|
||||
import com.keylesspalace.tusky.appstore.UnfollowEvent;
|
||||
import com.keylesspalace.tusky.db.AccountManager;
|
||||
import com.keylesspalace.tusky.di.Injectable;
|
||||
import com.keylesspalace.tusky.entity.*;
|
||||
import com.keylesspalace.tusky.entity.EmojiReaction;
|
||||
import com.keylesspalace.tusky.entity.Filter;
|
||||
import com.keylesspalace.tusky.entity.Poll;
|
||||
import com.keylesspalace.tusky.entity.Status;
|
||||
import com.keylesspalace.tusky.interfaces.ActionButtonActivity;
|
||||
import com.keylesspalace.tusky.interfaces.RefreshableFragment;
|
||||
import com.keylesspalace.tusky.interfaces.ReselectableFragment;
|
||||
|
@ -75,21 +91,17 @@ import com.keylesspalace.tusky.util.ViewDataUtils;
|
|||
import com.keylesspalace.tusky.view.BackgroundMessageView;
|
||||
import com.keylesspalace.tusky.view.EndlessOnScrollListener;
|
||||
import com.keylesspalace.tusky.viewdata.StatusViewData;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.Objects;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import at.connyduck.sparkbutton.helpers.Utils;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import kotlin.Unit;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
|
@ -97,13 +109,11 @@ import retrofit2.Call;
|
|||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
import static com.uber.autodispose.AutoDispose.autoDisposable;
|
||||
import static com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider.from;
|
||||
|
||||
public class TimelineFragment extends SFragment implements
|
||||
SwipeRefreshLayout.OnRefreshListener,
|
||||
StatusActionListener,
|
||||
Injectable, ReselectableFragment, RefreshableFragment {
|
||||
|
||||
private static final String TAG = "TimelineF"; // logging tag
|
||||
private static final String KIND_ARG = "kind";
|
||||
private static final String ID_ARG = "id";
|
||||
|
@ -135,6 +145,7 @@ public class TimelineFragment extends SFragment implements
|
|||
|
||||
@Inject
|
||||
public EventHub eventHub;
|
||||
|
||||
@Inject
|
||||
TimelineRepository timelineRepo;
|
||||
|
||||
|
@ -170,7 +181,7 @@ public class TimelineFragment extends SFragment implements
|
|||
private boolean initialUpdateFailed = false;
|
||||
|
||||
private PairedList<Either<Placeholder, Status>, StatusViewData> statuses =
|
||||
new PairedList<>(new Function<Either<Placeholder, Status>, StatusViewData>() {
|
||||
new PairedList<>(new Function<>() {
|
||||
@Override
|
||||
public StatusViewData apply(Either<Placeholder, Status> input) {
|
||||
Status status = input.asRightOrNull();
|
||||
|
@ -271,9 +282,10 @@ public class TimelineFragment extends SFragment implements
|
|||
this.sendInitialRequest();
|
||||
} else {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
if (isNeedRefresh)
|
||||
if(isNeedRefresh) {
|
||||
onRefresh();
|
||||
}
|
||||
}
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
@ -305,6 +317,10 @@ public class TimelineFragment extends SFragment implements
|
|||
// Request statuses including current top to refresh all of them
|
||||
}
|
||||
|
||||
this.updateCurrent();
|
||||
this.loadAbove();
|
||||
},
|
||||
throwable -> {
|
||||
this.updateCurrent();
|
||||
this.loadAbove();
|
||||
});
|
||||
|
@ -354,7 +370,8 @@ public class TimelineFragment extends SFragment implements
|
|||
this.updateAdapter();
|
||||
}
|
||||
this.bottomLoading = false;
|
||||
|
||||
this.progressBar.setVisibility(View.GONE);
|
||||
this.swipeRefreshLayout.setRefreshing(false);
|
||||
},
|
||||
(e) -> {
|
||||
this.initialUpdateFailed = true;
|
||||
|
|
Loading…
Reference in a new issue