diff --git a/app/build.gradle b/app/build.gradle index a808a62..2fb8efe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,5 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'com.github.delight-im:Android-AdvancedWebView:v3.0.0' implementation 'com.afollestad.material-dialogs:core:0.9.6.0' - implementation 'com.afollestad.material-dialogs:commons:0.9.6.0' - implementation 'pub.devrel:easypermissions:1.1.3' implementation 'com.github.kittinunf.fuel:fuel-android:1.12.1' } diff --git a/app/src/main/assets/editor.html b/app/src/main/assets/editor.html index 88dcb58..7e598dc 100644 --- a/app/src/main/assets/editor.html +++ b/app/src/main/assets/editor.html @@ -1,78 +1,104 @@ + - - - - - - + -
- + + - + $(document).ready(function () { + $('#summernote').summernote({ + height: 1200, + focus: true, + placeholder: 'Start writing...', + toolbar: [ + ['style', ['bold', 'italic', 'underline', 'clear']], + ['para', ['ul', 'ol']], + ['insert', ['link', 'picture', 'hr']], + ['history', ['undo', 'redo']], + ['other', ['codeview']] + ], + callbacks: { + onInit: function (e) { + $("#summernote").summernote("fullscreen.toggle"); + }, + onImageUpload: function (files) { + uploadImage(files[0]); + } + } + }); + }); + + \ No newline at end of file diff --git a/app/src/main/java/telegra/ph/Editor.kt b/app/src/main/java/telegra/ph/Editor.kt index 4db50b4..05f3559 100644 --- a/app/src/main/java/telegra/ph/Editor.kt +++ b/app/src/main/java/telegra/ph/Editor.kt @@ -4,11 +4,11 @@ import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet import android.webkit.JavascriptInterface -import android.webkit.WebSettings import android.webkit.WebView import android.webkit.WebViewClient +import im.delight.android.webview.AdvancedWebView -class Editor : WebView { +class Editor : AdvancedWebView { private var getCallback: (json: String?) -> Unit? = {} constructor(context: Context) : super(context) { @@ -26,7 +26,6 @@ class Editor : WebView { @SuppressLint("SetJavaScriptEnabled", "AddJavascriptInterface") private fun init() { this.settings.javaScriptEnabled = true - this.settings.cacheMode = WebSettings.LOAD_NO_CACHE this.addJavascriptInterface(MyJavaScriptInterface(), "android") this.settings.loadWithOverviewMode = true this.settings.useWideViewPort = true diff --git a/app/src/main/java/telegra/ph/MainActivity.kt b/app/src/main/java/telegra/ph/MainActivity.kt index 7f0bc49..9c726bc 100644 --- a/app/src/main/java/telegra/ph/MainActivity.kt +++ b/app/src/main/java/telegra/ph/MainActivity.kt @@ -8,15 +8,26 @@ import android.view.Menu import android.view.MenuItem import android.view.View import com.afollestad.materialdialogs.MaterialDialog -import com.afollestad.materialdialogs.folderselector.FileChooserDialog import im.delight.android.webview.AdvancedWebView -import pub.devrel.easypermissions.AfterPermissionGranted -import pub.devrel.easypermissions.EasyPermissions -import java.io.File -class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserDialog.FileCallback { - private val webView: AdvancedWebView? by lazy { findViewById(R.id.webView) } - private val editor: Editor? by lazy { findViewById(R.id.editor) } +class MainActivity : AppCompatActivity(), AdvancedWebView.Listener { + private val webView: AdvancedWebView? by lazy { + findViewById(R.id.webView)?.apply { + setListener(this@MainActivity, this@MainActivity) + setMixedContentAllowed(true) + setCookiesEnabled(true) + setThirdPartyCookiesEnabled(true) + addPermittedHostname("telegra.ph") + isHorizontalScrollBarEnabled = false + isVerticalScrollBarEnabled = false + overScrollMode = View.OVER_SCROLL_NEVER + } + } + private val editor: Editor? by lazy { + findViewById(R.id.editor)?.apply { + setListener(this@MainActivity, this@MainActivity) + } + } private var currentUrl = "" private var currentPage: TelegraphApi.Page? = null @@ -27,16 +38,6 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - webView?.apply { - setListener(this@MainActivity, this@MainActivity) - setMixedContentAllowed(true) - setCookiesEnabled(true) - setThirdPartyCookiesEnabled(true) - addPermittedHostname("telegra.ph") - isHorizontalScrollBarEnabled = false - isVerticalScrollBarEnabled = false - overScrollMode = View.OVER_SCROLL_NEVER - } if (accessToken().isBlank()) TelegraphApi.createAccount(shortName = "teleposter") { success, account, error -> if (success && account != null && account.accessToken != null) { saveAccessToken(account.accessToken) @@ -120,17 +121,6 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD } } - @AfterPermissionGranted(100) - private fun uploadImage() { - if (EasyPermissions.hasPermissions(this, "android.permission.READ_EXTERNAL_STORAGE")) { - FileChooserDialog.Builder(this) - .mimeType("image/*") - .show(this) - } else { - EasyPermissions.requestPermissions(this, "", 100, "android.permission.READ_EXTERNAL_STORAGE") - } - } - override fun onPageFinished(url: String?) { } @@ -147,17 +137,6 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD AdvancedWebView.Browsers.openUrl(this, url) } - override fun onFileSelection(p0: FileChooserDialog, file: File) { - TelegraphApi.uploadImage(file) { success, src, error -> - if (success && src != null && src.isNotBlank()) - editor?.addImage(src) - else showError(error) - } - } - - override fun onFileChooserDismissed(p0: FileChooserDialog) { - } - override fun onResume() { super.onResume() webView?.onResume() @@ -176,6 +155,7 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) webView?.onActivityResult(requestCode, resultCode, data) + editor?.onActivityResult(requestCode, resultCode, data) } override fun onBackPressed() { @@ -202,10 +182,6 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { - R.id.image -> { - uploadImage() - true - } R.id.create -> { loadEditor() true @@ -310,9 +286,4 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener, FileChooserD else -> super.onOptionsItemSelected(item) } } - - override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults) - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) - } } diff --git a/app/src/main/java/telegra/ph/TelegraphApi.kt b/app/src/main/java/telegra/ph/TelegraphApi.kt index ee70795..271f11f 100644 --- a/app/src/main/java/telegra/ph/TelegraphApi.kt +++ b/app/src/main/java/telegra/ph/TelegraphApi.kt @@ -2,14 +2,14 @@ package telegra.ph import com.github.kittinunf.fuel.android.core.Json import com.github.kittinunf.fuel.android.extension.responseJson -import com.github.kittinunf.fuel.core.* +import com.github.kittinunf.fuel.core.FuelError +import com.github.kittinunf.fuel.core.FuelManager +import com.github.kittinunf.fuel.core.Request +import com.github.kittinunf.fuel.core.Response import com.github.kittinunf.fuel.httpPost -import com.github.kittinunf.fuel.httpUpload import com.github.kittinunf.result.Result import org.json.JSONArray import org.json.JSONObject -import java.io.File -import java.net.URLConnection object TelegraphApi { @@ -151,25 +151,4 @@ object TelegraphApi { } } - fun uploadImage(file: File, callback: (success: Boolean, src: String?, error: String?) -> Unit) { - "http://telegra.ph/upload".httpUpload() - .dataParts { _, _ -> - listOf(DataPart(file, name = "FileUpload", type = URLConnection.guessContentTypeFromName(file.name))) - } - .responseJson { _, _, result -> - val (json, error) = result - if (error == null && json != null) { - val jsonObj = json.array().optJSONObject(0) - val src = jsonObj?.optString("src") - if (src != null) { - callback(true, src, null) - } else { - callback(false, null, null) - } - } else { - callback(false, null, error?.message) - } - } - } - } \ No newline at end of file diff --git a/app/src/main/res/menu/activity_main.xml b/app/src/main/res/menu/activity_main.xml index d2517f3..136c591 100644 --- a/app/src/main/res/menu/activity_main.xml +++ b/app/src/main/res/menu/activity_main.xml @@ -1,10 +1,6 @@ - Published posts Your name? Awesome Writer - Add image \ No newline at end of file