Fix crash when a reply success is given to an unbounded replypresenter

multisite
Floens 10 years ago
parent 8e14e088bf
commit 9a728bc6b3
  1. 12
      Clover/app/src/main/java/org/floens/chan/core/presenter/ReplyPresenter.java
  2. 2
      Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java

@ -65,6 +65,7 @@ public class ReplyPresenter implements ReplyManager.HttpCallback<ReplyHttpCall>,
private WatchManager watchManager; private WatchManager watchManager;
private DatabaseManager databaseManager; private DatabaseManager databaseManager;
private boolean bound = false;
private Loadable loadable; private Loadable loadable;
private Board board; private Board board;
private Reply draft; private Reply draft;
@ -88,12 +89,10 @@ public class ReplyPresenter implements ReplyManager.HttpCallback<ReplyHttpCall>,
if (this.loadable != null) { if (this.loadable != null) {
unbindLoadable(); unbindLoadable();
} }
bound = true;
this.loadable = loadable; this.loadable = loadable;
Board board = boardManager.getBoardByValue(loadable.board); this.board = boardManager.getBoardByValue(loadable.board);
if (board != null) {
this.board = board;
}
draft = replyManager.getReply(loadable); draft = replyManager.getReply(loadable);
@ -117,13 +116,12 @@ public class ReplyPresenter implements ReplyManager.HttpCallback<ReplyHttpCall>,
} }
public void unbindLoadable() { public void unbindLoadable() {
bound = false;
draft.file = null; draft.file = null;
draft.fileName = ""; draft.fileName = "";
callback.loadViewsIntoDraft(draft); callback.loadViewsIntoDraft(draft);
replyManager.putReply(loadable, draft); replyManager.putReply(loadable, draft);
loadable = null;
board = null;
closeAll(); closeAll();
} }
@ -219,7 +217,7 @@ public class ReplyPresenter implements ReplyManager.HttpCallback<ReplyHttpCall>,
callback.loadDraftIntoViews(draft); callback.loadDraftIntoViews(draft);
callback.onPosted(); callback.onPosted();
if (!loadable.isThreadMode()) { if (bound && !loadable.isThreadMode()) {
callback.showThread(LoadablePool.getInstance().obtain(new Loadable(loadable.board, replyCall.postNo))); callback.showThread(LoadablePool.getInstance().obtain(new Loadable(loadable.board, replyCall.postNo)));
} }
} else { } else {

@ -553,7 +553,7 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
@Override @Override
public void requestNewPostLoad() { public void requestNewPostLoad() {
if (loadable.isThreadMode()) { if (loadable != null && loadable.isThreadMode()) {
chanLoader.requestMoreDataAndResetTimer(); chanLoader.requestMoreDataAndResetTimer();
} }
} }

Loading…
Cancel
Save