From c9f1e2eff4f99465b54755ddfb1d510af4f9e5ae Mon Sep 17 00:00:00 2001 From: Ammar Githam Date: Fri, 28 May 2021 09:00:16 +0900 Subject: [PATCH] Convert Login to kotlin --- .../awais/instagrabber/activities/Login.kt | 208 ++++++++---------- 1 file changed, 93 insertions(+), 115 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/activities/Login.kt b/app/src/main/java/awais/instagrabber/activities/Login.kt index 879c92f3..df672964 100755 --- a/app/src/main/java/awais/instagrabber/activities/Login.kt +++ b/app/src/main/java/awais/instagrabber/activities/Login.kt @@ -1,141 +1,119 @@ -package awais.instagrabber.activities; - -import android.annotation.SuppressLint; -import android.content.Intent; -import android.graphics.Bitmap; -import android.os.Build; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.webkit.CookieManager; -import android.webkit.CookieSyncManager; -import android.webkit.WebChromeClient; -import android.webkit.WebSettings; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.CompoundButton; -import android.widget.Toast; - -import androidx.annotation.Nullable; - -import awais.instagrabber.R; -import awais.instagrabber.databinding.ActivityLoginBinding; -import awais.instagrabber.utils.Constants; -import awais.instagrabber.utils.CookieUtils; -import awais.instagrabber.utils.TextUtils; - -public final class Login extends BaseLanguageActivity implements View.OnClickListener { - private final WebViewClient webViewClient = new WebViewClient() { - @Override - public void onPageStarted(final WebView view, final String url, final Bitmap favicon) { - webViewUrl = url; +package awais.instagrabber.activities + +import android.annotation.SuppressLint +import android.content.Intent +import android.graphics.Bitmap +import android.os.Build +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.webkit.* +import android.widget.Toast +import awais.instagrabber.R +import awais.instagrabber.databinding.ActivityLoginBinding +import awais.instagrabber.utils.Constants +import awais.instagrabber.utils.getCookie + +class Login : BaseLanguageActivity(), View.OnClickListener { + private var webViewUrl: String? = null + private var ready = false + private lateinit var loginBinding: ActivityLoginBinding + + private val webChromeClient = WebChromeClient() + private val webViewClient: WebViewClient = object : WebViewClient() { + override fun onPageStarted(view: WebView, url: String, favicon: Bitmap) { + webViewUrl = url } - @Override - public void onPageFinished(final WebView view, final String url) { - webViewUrl = url; - final String mainCookie = CookieUtils.getCookie(url); - if (TextUtils.isEmpty(mainCookie) || !mainCookie.contains("; ds_user_id=")) { - ready = true; - return; + override fun onPageFinished(view: WebView, url: String) { + webViewUrl = url + val mainCookie = getCookie(url) + if (mainCookie.isNullOrBlank() || !mainCookie.contains("; ds_user_id=")) { + ready = true + return } if (mainCookie.contains("; ds_user_id=") && ready) { - returnCookieResult(mainCookie); + returnCookieResult(mainCookie) } } - }; - - private void returnCookieResult(final String mainCookie) { - final Intent intent = new Intent(); - intent.putExtra("cookie", mainCookie); - setResult(Constants.LOGIN_RESULT_CODE, intent); - finish(); } - private final WebChromeClient webChromeClient = new WebChromeClient(); - private String webViewUrl; - private boolean ready = false; - private ActivityLoginBinding loginBinding; - - @Override - protected void onCreate(@Nullable final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - loginBinding = ActivityLoginBinding.inflate(LayoutInflater.from(getApplicationContext())); - setContentView(loginBinding.getRoot()); - - initWebView(); + private fun returnCookieResult(mainCookie: String?) { + val intent = Intent() + intent.putExtra("cookie", mainCookie) + setResult(Constants.LOGIN_RESULT_CODE, intent) + finish() + } - loginBinding.cookies.setOnClickListener(this); - loginBinding.refresh.setOnClickListener(this); + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + loginBinding = ActivityLoginBinding.inflate(LayoutInflater.from(applicationContext)) + setContentView(loginBinding.root) + initWebView() + loginBinding.cookies.setOnClickListener(this) + loginBinding.refresh.setOnClickListener(this) } - @Override - public void onClick(final View v) { - if (v == loginBinding.refresh) { - loginBinding.webView.loadUrl("https://instagram.com/"); - return; + override fun onClick(v: View) { + if (v === loginBinding.refresh) { + loginBinding.webView.loadUrl("https://instagram.com/") + return } - if (v == loginBinding.cookies) { - final String mainCookie = CookieUtils.getCookie(webViewUrl); - if (TextUtils.isEmpty(mainCookie) || !mainCookie.contains("; ds_user_id=")) { - Toast.makeText(this, R.string.login_error_loading_cookies, Toast.LENGTH_SHORT).show(); - return; + if (v === loginBinding.cookies) { + val mainCookie = getCookie(webViewUrl) + if (mainCookie.isNullOrBlank() || !mainCookie.contains("; ds_user_id=")) { + Toast.makeText(this, R.string.login_error_loading_cookies, Toast.LENGTH_SHORT).show() + return } - returnCookieResult(mainCookie); + returnCookieResult(mainCookie) } } @SuppressLint("SetJavaScriptEnabled") - private void initWebView() { - if (loginBinding != null) { - loginBinding.webView.setWebChromeClient(webChromeClient); - loginBinding.webView.setWebViewClient(webViewClient); - final WebSettings webSettings = loginBinding.webView.getSettings(); - if (webSettings != null) { - webSettings.setUserAgentString("Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Mobile Safari/537.36"); - webSettings.setJavaScriptEnabled(true); - webSettings.setDomStorageEnabled(true); - webSettings.setSupportZoom(true); - webSettings.setBuiltInZoomControls(true); - webSettings.setDisplayZoomControls(false); - webSettings.setLoadWithOverviewMode(true); - webSettings.setUseWideViewPort(true); - webSettings.setAllowFileAccessFromFileURLs(true); - webSettings.setAllowUniversalAccessFromFileURLs(true); - webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - CookieManager.getInstance().removeAllCookies(null); - CookieManager.getInstance().flush(); - } else { - CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(getApplicationContext()); - cookieSyncMngr.startSync(); - CookieManager cookieManager = CookieManager.getInstance(); - cookieManager.removeAllCookie(); - cookieManager.removeSessionCookie(); - cookieSyncMngr.stopSync(); - cookieSyncMngr.sync(); - } - loginBinding.webView.loadUrl("https://instagram.com/"); + private fun initWebView() { + loginBinding.webView.webChromeClient = webChromeClient + loginBinding.webView.webViewClient = webViewClient + val webSettings = loginBinding.webView.settings + webSettings.userAgentString = + "Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Mobile Safari/537.36" + webSettings.javaScriptEnabled = true + webSettings.domStorageEnabled = true + webSettings.setSupportZoom(true) + webSettings.builtInZoomControls = true + webSettings.displayZoomControls = false + webSettings.loadWithOverviewMode = true + webSettings.useWideViewPort = true + webSettings.allowFileAccessFromFileURLs = true + webSettings.allowUniversalAccessFromFileURLs = true + webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { + CookieManager.getInstance().removeAllCookies(null) + CookieManager.getInstance().flush() + } else { + val cookieSyncMngr = CookieSyncManager.createInstance(applicationContext) + cookieSyncMngr.startSync() + val cookieManager = CookieManager.getInstance() + cookieManager.removeAllCookie() + cookieManager.removeSessionCookie() + cookieSyncMngr.stopSync() + cookieSyncMngr.sync() } + loginBinding.webView.loadUrl("https://instagram.com/") } - @Override - protected void onPause() { - if (loginBinding != null) loginBinding.webView.onPause(); - super.onPause(); + override fun onPause() { + loginBinding.webView.onPause() + super.onPause() } - @Override - protected void onResume() { - super.onResume(); - if (loginBinding != null) loginBinding.webView.onResume(); + override fun onResume() { + super.onResume() + loginBinding.webView.onResume() } - @Override - protected void onDestroy() { - if (loginBinding != null) loginBinding.webView.destroy(); - super.onDestroy(); + override fun onDestroy() { + loginBinding.webView.destroy() + super.onDestroy() } } \ No newline at end of file