diff --git a/Clover/app/src/main/java/org/floens/chan/Chan.java b/Clover/app/src/main/java/org/floens/chan/Chan.java index e014887a..2124e215 100644 --- a/Clover/app/src/main/java/org/floens/chan/Chan.java +++ b/Clover/app/src/main/java/org/floens/chan/Chan.java @@ -20,7 +20,9 @@ package org.floens.chan; import android.app.Application; import android.content.Context; import android.content.pm.PackageManager; +import android.os.Build; import android.os.StrictMode; +import android.webkit.WebView; import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; @@ -148,6 +150,11 @@ public class Chan extends Application { .detectAll() .penaltyLog() .build()); + + //noinspection PointlessBooleanExpression + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + WebView.setWebContentsDebuggingEnabled(true); + } } } diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java b/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java index e448c9b5..86679c61 100644 --- a/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java +++ b/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java @@ -94,6 +94,14 @@ public class ChanUrls { return "https://sys.4chan.org/auth"; } + public static String getReportDomain() { + return "https://sys.4chan.org/"; + } + + public static String[] getReportCookies(String passId) { + return new String[]{"pass_enabled=1;", "pass_id=" + passId + ";"}; + } + public static String getReportUrl(String board, int no) { return "https://sys.4chan.org/" + board + "/imgboard.php?mode=report&no=" + no; } diff --git a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java index 864bd29d..320fc200 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java +++ b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java @@ -461,7 +461,7 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt threadPresenterCallback.clipboardPost(post); break; case POST_OPTION_REPORT: - threadPresenterCallback.openWebView("Report /" + post.board + "/" + post.no, ChanUrls.getReportUrl(post.board, post.no)); + threadPresenterCallback.openReportView(post); break; case POST_OPTION_HIGHLIGHT_ID: threadPresenterCallback.highlightPostId(post.id); @@ -691,7 +691,7 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt void openLink(String link); - void openWebView(String title, String link); + void openReportView(Post post); void showPostsPopup(Post forPost, List posts); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ReportController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ReportController.java new file mode 100644 index 00000000..712b7cfe --- /dev/null +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ReportController.java @@ -0,0 +1,61 @@ +/* + * Clover - 4chan browser https://github.com/Floens/Clover/ + * Copyright (C) 2014 Floens + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.floens.chan.ui.controller; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.webkit.CookieManager; +import android.webkit.WebView; + +import org.floens.chan.R; +import org.floens.chan.chan.ChanUrls; +import org.floens.chan.controller.Controller; +import org.floens.chan.core.model.Post; +import org.floens.chan.core.settings.ChanSettings; +import org.floens.chan.ui.helper.PostHelper; + +public class ReportController extends Controller { + private Post post; + + public ReportController(Context context, Post post) { + super(context); + this.post = post; + } + + @SuppressWarnings("deprecation") + @SuppressLint("SetJavaScriptEnabled") + @Override + public void onCreate() { + super.onCreate(); + navigationItem.title = context.getString(R.string.report_screen, PostHelper.getTitle(post, null)); + + CookieManager cookieManager = CookieManager.getInstance(); + cookieManager.removeAllCookie(); + if (ChanSettings.passLoggedIn()) { + for (String cookie : ChanUrls.getReportCookies(ChanSettings.passId.get())) { + cookieManager.setCookie(ChanUrls.getReportDomain(), cookie); + } + } + + WebView webView = new WebView(context); + webView.getSettings().setJavaScriptEnabled(true); + webView.getSettings().setDomStorageEnabled(true); + webView.loadUrl(ChanUrls.getReportUrl(post.board, post.no)); + view = webView; + } +} diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java index 4ecfbe86..5c977eca 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java @@ -34,6 +34,7 @@ import org.floens.chan.core.manager.FilterType; import org.floens.chan.core.model.Filter; import org.floens.chan.core.model.Loadable; import org.floens.chan.core.model.Pin; +import org.floens.chan.core.model.Post; import org.floens.chan.core.model.PostImage; import org.floens.chan.ui.helper.RefreshUIMessage; import org.floens.chan.ui.layout.ThreadLayout; @@ -162,6 +163,11 @@ public abstract class ThreadController extends Controller implements ThreadLayou presentController(controller); } + @Override + public void openReportController(final Post post) { + navigationController.pushController(new ReportController(context, post)); + } + public void selectPostImage(PostImage postImage) { threadLayout.getPresenter().selectPostImage(postImage); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/layout/CaptchaLayout.java b/Clover/app/src/main/java/org/floens/chan/ui/layout/CaptchaLayout.java index a627a442..9e74906c 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/layout/CaptchaLayout.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/layout/CaptchaLayout.java @@ -20,7 +20,6 @@ package org.floens.chan.ui.layout; import android.annotation.SuppressLint; import android.content.Context; import android.net.Uri; -import android.os.Build; import android.support.annotation.NonNull; import android.text.TextUtils; import android.util.AttributeSet; @@ -32,7 +31,6 @@ import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; -import org.floens.chan.ChanBuild; import org.floens.chan.utils.AndroidUtils; import org.floens.chan.utils.IOUtils; @@ -91,11 +89,6 @@ public class CaptchaLayout extends WebView implements CaptchaLayoutInterface { setBackgroundColor(0x00000000); addJavascriptInterface(new CaptchaInterface(this), "CaptchaCallback"); - - //noinspection PointlessBooleanExpression - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && ChanBuild.DEVELOPER_MODE) { - setWebContentsDebuggingEnabled(true); - } } public void reset() { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/layout/LegacyCaptchaLayout.java b/Clover/app/src/main/java/org/floens/chan/ui/layout/LegacyCaptchaLayout.java index 71b553cf..3b7e84bb 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/layout/LegacyCaptchaLayout.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/layout/LegacyCaptchaLayout.java @@ -19,7 +19,6 @@ package org.floens.chan.ui.layout; import android.annotation.SuppressLint; import android.content.Context; -import android.os.Build; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.View; @@ -34,7 +33,6 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import org.floens.chan.ChanBuild; import org.floens.chan.R; import org.floens.chan.ui.view.FixedRatioThumbnailView; import org.floens.chan.utils.AndroidUtils; @@ -107,11 +105,6 @@ public class LegacyCaptchaLayout extends LinearLayout implements CaptchaLayoutIn settings.setJavaScriptEnabled(true); internalWebView.addJavascriptInterface(new CaptchaInterface(this), "CaptchaCallback"); - - //noinspection PointlessBooleanExpression - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && ChanBuild.DEVELOPER_MODE) { - WebView.setWebContentsDebuggingEnabled(true); - } } @Override diff --git a/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java b/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java index 8aebc8d6..cd0a0cfc 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java @@ -293,8 +293,8 @@ public class ThreadLayout extends CoordinatorLayout implements ThreadPresenter.T } @Override - public void openWebView(String title, String link) { - AndroidUtils.openWebView((Activity) getContext(), title, link); + public void openReportView(Post post) { + callback.openReportController(post); } @Override @@ -560,6 +560,8 @@ public class ThreadLayout extends CoordinatorLayout implements ThreadPresenter.T void presentRepliesController(Controller controller); + void openReportController(Post post); + void hideSwipeRefreshLayout(); Toolbar getToolbar(); diff --git a/Clover/app/src/main/java/org/floens/chan/utils/AndroidUtils.java b/Clover/app/src/main/java/org/floens/chan/utils/AndroidUtils.java index c34256a2..6c5d70ff 100644 --- a/Clover/app/src/main/java/org/floens/chan/utils/AndroidUtils.java +++ b/Clover/app/src/main/java/org/floens/chan/utils/AndroidUtils.java @@ -94,18 +94,6 @@ public class AndroidUtils { return PreferenceManager.getDefaultSharedPreferences(Chan.con); } - @SuppressLint("SetJavaScriptEnabled") - public static void openWebView(Activity activity, String title, String link) { - Dialog dialog = new Dialog(activity); - dialog.setContentView(R.layout.dialog_web); - WebView wb = (WebView) dialog.findViewById(R.id.web_view); - wb.getSettings().setJavaScriptEnabled(true); - wb.loadUrl(link); - dialog.setTitle(title); - dialog.setCancelable(true); - dialog.show(); - } - /** * Tries to open an app that can open the specified URL.
* If this app will open the link then show a chooser to the user without this app.
diff --git a/Clover/app/src/main/res/layout/dialog_web.xml b/Clover/app/src/main/res/layout/dialog_web.xml deleted file mode 100644 index fda6df1d..00000000 --- a/Clover/app/src/main/res/layout/dialog_web.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index 369ff0b6..706f9f76 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -332,6 +332,8 @@ along with this program. If not, see . Album + Report %1$s + Downloading images Tap to cancel Image saved