SendNoteActivity.kt 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package io.github.zadam.triliumsender
  2. import android.os.AsyncTask
  3. import android.os.Bundle
  4. import android.support.v7.app.AppCompatActivity
  5. import android.util.Log
  6. import android.widget.Toast
  7. import io.github.zadam.triliumsender.services.HtmlConverter
  8. import io.github.zadam.triliumsender.services.TriliumSettings
  9. import io.github.zadam.triliumsender.services.Utils
  10. import kotlinx.android.synthetic.main.activity_send_note.*
  11. import okhttp3.OkHttpClient
  12. import okhttp3.Request
  13. import okhttp3.RequestBody
  14. import org.json.JSONObject
  15. class SendNoteActivity : AppCompatActivity() {
  16. override fun onCreate(savedInstanceState: Bundle?) {
  17. super.onCreate(savedInstanceState)
  18. setContentView(R.layout.activity_send_note)
  19. val settings = TriliumSettings(this)
  20. if (!settings.isConfigured()) {
  21. Toast.makeText(this, "Trilium Sender is not configured. Can't sent the image.", Toast.LENGTH_LONG).show()
  22. finish()
  23. return
  24. }
  25. sendNoteButton.setOnClickListener { view ->
  26. val sendImageTask = SendNoteTask(noteTitle.text.toString(), noteText.text.toString(), settings.triliumAddress, settings.apiToken)
  27. sendImageTask.execute(null as Void?)
  28. }
  29. }
  30. inner class SendNoteTask internal constructor(private val noteTitle: String,
  31. private val noteText: String,
  32. private val triliumAddress: String,
  33. private val apiToken: String) : AsyncTask<Void, Void, Boolean>() {
  34. val TAG : String = "SendNoteTask"
  35. override fun doInBackground(vararg params: Void): Boolean {
  36. val client = OkHttpClient()
  37. val json = JSONObject()
  38. json.put("title", noteTitle)
  39. json.put("content", HtmlConverter().convertPlainTextToHtml(noteText))
  40. val body = RequestBody.create(Utils.JSON, json.toString())
  41. val request = Request.Builder()
  42. .url(triliumAddress + "/api/sender/note")
  43. .addHeader("Authorization", apiToken)
  44. .addHeader("X-Local-Date", Utils.localDateStr())
  45. .post(body)
  46. .build()
  47. return try {
  48. val response = client.newCall(request).execute()
  49. response.code() == 200
  50. } catch (e: Exception) {
  51. Log.e(TAG, "Sending to Trilium failed", e)
  52. false
  53. }
  54. }
  55. override fun onPostExecute(success: Boolean) {
  56. if (success) {
  57. Toast.makeText(this@SendNoteActivity, "Note sent to Trilium", Toast.LENGTH_LONG).show()
  58. }
  59. else {
  60. Toast.makeText(this@SendNoteActivity, "Sending note to Trilium failed", Toast.LENGTH_LONG).show()
  61. }
  62. finish()
  63. }
  64. override fun onCancelled() {
  65. }
  66. }
  67. }