post: pin thread on post

the title is broken because we don't know it before we load the thread.
fix thread finding after creation for vichan.

Closes #336
refactor-toolbar
Floens 8 years ago
parent 2ac934c7f9
commit ae916f1f4e
  1. 13
      Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java
  2. 16
      Clover/app/src/main/java/org/floens/chan/core/presenter/ReplyPresenter.java
  3. 15
      Clover/app/src/main/java/org/floens/chan/core/site/sites/vichan/ViChanReplyHttpCall.java
  4. 3
      Clover/app/src/main/java/org/floens/chan/ui/helper/PostHelper.java

@ -25,6 +25,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
import android.support.annotation.Nullable;
import org.floens.chan.Chan;
import org.floens.chan.core.database.DatabaseManager;
@ -161,12 +162,18 @@ public class WatchManager {
updateState();
}
public boolean createPin(Loadable loadable, Post opPost) {
public boolean createPin(Loadable loadable) {
return createPin(loadable, null);
}
public boolean createPin(Loadable loadable, @Nullable Post opPost) {
Pin pin = new Pin();
pin.loadable = loadable;
pin.loadable.title = PostHelper.getTitle(opPost, loadable);
PostImage image = opPost.image;
pin.thumbnailUrl = image == null ? "" : image.getThumbnailUrl().toString();
if (opPost != null) {
PostImage image = opPost.image;
pin.thumbnailUrl = image == null ? "" : image.getThumbnailUrl().toString();
}
return createPin(pin);
}

@ -205,10 +205,18 @@ public class ReplyPresenter implements AuthenticationLayoutCallback, ImagePickDe
@Override
public void onPostComplete(HttpCall httpCall, ReplyResponse replyResponse) {
if (replyResponse.posted) {
if (ChanSettings.postPinThread.get() && loadable.isThreadMode()) {
ChanThread thread = callback.getThread();
if (thread != null) {
watchManager.createPin(loadable, thread.op);
if (ChanSettings.postPinThread.get()) {
if (loadable.isThreadMode()) {
ChanThread thread = callback.getThread();
if (thread != null) {
watchManager.createPin(loadable, thread.op);
}
} else {
Loadable postedLoadable = databaseManager.getDatabaseLoadableManager()
.get(Loadable.forThread(loadable.site, loadable.board,
replyResponse.postNo));
watchManager.createPin(postedLoadable);
}
}

@ -37,6 +37,8 @@ import okhttp3.RequestBody;
import okhttp3.Response;
public class ViChanReplyHttpCall extends CommonReplyHttpCall {
private static final String TAG = "ViChanReplyHttpCall";
private static final Pattern REQUIRE_AUTHENTICATION = Pattern.compile(".*\"captcha\": ?true.*");
private static final Pattern ERROR_MESSAGE =
Pattern.compile(".*<h1>Error</h1>.*<h2[^>]*>(.*?)<\\/h2>.*");
@ -83,8 +85,6 @@ public class ViChanReplyHttpCall extends CommonReplyHttpCall {
@Override
public void process(Response response, String result) throws IOException {
Logger.test(result);
Matcher authenticationMatcher = REQUIRE_AUTHENTICATION.matcher(result);
Matcher errorMessageMatcher = ERROR_MESSAGE.matcher(result);
if (authenticationMatcher.find()) {
@ -93,6 +93,9 @@ public class ViChanReplyHttpCall extends CommonReplyHttpCall {
} else if (errorMessageMatcher.find()) {
replyResponse.errorMessage = Jsoup.parse(errorMessageMatcher.group(1)).body().text();
} else {
Logger.d(TAG, "url: " + response.request().url().toString());
Logger.d(TAG, "body: " + response);
// TODO(multisite): 8ch redirects us, but the result is a 404, and we need that
// redirect url to figure out what we posted.
HttpUrl url = response.request().url();
@ -110,10 +113,16 @@ public class ViChanReplyHttpCall extends CommonReplyHttpCall {
} catch (NumberFormatException ignored) {
}
if (board != null && threadId != 0 && postId != 0) {
if (postId == 0) {
postId = threadId;
}
if (board != null && threadId != 0) {
replyResponse.threadNo = threadId;
replyResponse.postNo = postId;
replyResponse.posted = true;
} else {
replyResponse.errorMessage = "Error posting: could not find posted thread.";
}
}
}

@ -20,6 +20,7 @@ package org.floens.chan.ui.helper;
import android.content.res.Resources;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.support.annotation.Nullable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ImageSpan;
@ -66,7 +67,7 @@ public class PostHelper {
}
}
public static String getTitle(Post post, Loadable loadable) {
public static String getTitle(@Nullable Post post, @Nullable Loadable loadable) {
if (post != null) {
if (!TextUtils.isEmpty(post.subject)) {
return post.subject;

Loading…
Cancel
Save