From 1583c0009b4498f5df1ea12ec092bd21afefec8d Mon Sep 17 00:00:00 2001 From: yova Date: Thu, 1 Feb 2024 12:22:12 +0100 Subject: [PATCH] add author to metadata --- .../java/org/wntr/mdeditor/MainActivity.kt | 18 +++++++-- .../org/wntr/mdeditor/MetadataActivity.kt | 11 ++++++ .../main/java/org/wntr/mdeditor/ghostAPI.kt | 4 +- app/src/main/java/org/wntr/mdeditor/mdMeta.kt | 4 +- app/src/main/res/layout/activity_metadata.xml | 38 ++++++++++++++----- 5 files changed, 58 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/wntr/mdeditor/MainActivity.kt b/app/src/main/java/org/wntr/mdeditor/MainActivity.kt index 6ba37a4..46cc38d 100644 --- a/app/src/main/java/org/wntr/mdeditor/MainActivity.kt +++ b/app/src/main/java/org/wntr/mdeditor/MainActivity.kt @@ -417,7 +417,9 @@ class MainActivity : AppCompatActivity() { R.id.push_ghost -> { with(AlertDialog.Builder(this)){ - setTitle("Push to ghostCMS?") + if (metaData.get("url") != null) setTitle("Update ghost posting to ${metaData.get("url")}?") + else setTitle("Push to ghost instance ${api.baseUrl}?") + setPositiveButton("Yes", { dialog, id -> webView.evaluateJavascript("getHtml();", { val msg = URLDecoder.decode(it.removeSurrounding("\"")) @@ -600,12 +602,21 @@ class MainActivity : AppCompatActivity() { val post = sendPost(title, updated_at = metaData.updatedAt!!, authors = listOf(author), html, feature_image = metaData.get("feature_image")) val postings = sendPostList(listOf(post)) + val mUrl = parse(metaData.get("url")) + val mApiHost = mUrl.scheme + "://" + mUrl.host + + if (api.baseUrl != mApiHost) api = ghostAPI(applicationContext, mApiHost) + Log.d(javaClass.simpleName,"Updating post to ${mUrl}") + try { val response = api.postApi.updatePost(id, postings).execute() if (response.isSuccessful) { val resp = JSONObject(response.body()!!.string()) + Log.d(javaClass.simpleName, "Updated: ${resp.getJSONArray("posts").getJSONObject(0).getString("url")}") + metaData.updatedAt= resp.getJSONArray("posts").getJSONObject(0).getString("updated_at") + val intent = Intent(Intent.ACTION_VIEW).setData(parse(metaData.metaData.get("url"))) try { startActivity(intent) @@ -615,16 +626,15 @@ class MainActivity : AppCompatActivity() { Log.i(javaClass.simpleName, e.toString()) }) } - Log.d(javaClass.simpleName, "Updated: ${resp.getJSONArray("posts").getJSONObject(0).getString("url")}") } else { this.runOnUiThread({ Toast.makeText( this, - "error while updating post.\n${response.errorBody()}", + "error while updating post.\n${response.errorBody()!!.string()}", Toast.LENGTH_LONG ).show() }) - Log.i(javaClass.simpleName, response.code().toString()) + Log.i(javaClass.simpleName, response.errorBody()!!.string()) } return response as retrofit2.Response } catch (ex: Exception) { diff --git a/app/src/main/java/org/wntr/mdeditor/MetadataActivity.kt b/app/src/main/java/org/wntr/mdeditor/MetadataActivity.kt index cffcd2e..99504dc 100644 --- a/app/src/main/java/org/wntr/mdeditor/MetadataActivity.kt +++ b/app/src/main/java/org/wntr/mdeditor/MetadataActivity.kt @@ -1,5 +1,6 @@ package org.wntr.mdeditor +import android.net.Uri import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log @@ -17,12 +18,22 @@ class MetadataActivity : AppCompatActivity() { binding.title.setText(MainActivity.metaData.get("title")) binding.url.setText(MainActivity.metaData.get("url")) binding.featureImage.setText(MainActivity.metaData.get("feature_image")) + binding.author.setText(MainActivity.metaData.get("author") ?: MainActivity.credManager.username) } fun onButtonSaveClick(view: View) { Log.d(javaClass.simpleName, "Getting Metadata:\ntitle:\t${binding.title.text}\nfeature_image:\t${binding.featureImage.text}") MainActivity.metaData.put("title", binding.title.text.toString()) MainActivity.metaData.put("feature_image", binding.featureImage.text.toString()) + if (binding.author.text.toString() != MainActivity.credManager.username) { + var apiHost: String? = null + if (MainActivity.metaData.get("url") !== null) { + val url = Uri.parse(MainActivity.metaData.get("url")) + apiHost = url.scheme + "://" + url.host + } else apiHost = MainActivity.credManager.instance + MainActivity.credManager.saveCredentialsToSharedPrefs(Credentials(apiHost, binding.author.text.toString())) + } + MainActivity.metaData.put("author", binding.author.text.toString()) MainActivity.readOnResume = false finish() } diff --git a/app/src/main/java/org/wntr/mdeditor/ghostAPI.kt b/app/src/main/java/org/wntr/mdeditor/ghostAPI.kt index 9290373..7a78692 100644 --- a/app/src/main/java/org/wntr/mdeditor/ghostAPI.kt +++ b/app/src/main/java/org/wntr/mdeditor/ghostAPI.kt @@ -52,13 +52,13 @@ object RetrofitClient { .baseUrl(baseUrl + "/ghost/api/admin/") .addConverterFactory(JacksonConverterFactory.create()) .build() - } } class ghostAPI(applicationContext: Context, instance: String) { val retrofit = RetrofitClient.getClient(applicationContext, instance) val postApi = retrofit.create(PostApi::class.java) + val baseUrl = instance fun register(credentials: Credentials): String { @@ -122,7 +122,7 @@ class ghostAPI(applicationContext: Context, instance: String) { } interface PostApi { - @GET("posts") + @GET("posts/") fun getPosts(): Call /* fun getPosts(): Call <- for json string*/ diff --git a/app/src/main/java/org/wntr/mdeditor/mdMeta.kt b/app/src/main/java/org/wntr/mdeditor/mdMeta.kt index c565f29..ee02f55 100644 --- a/app/src/main/java/org/wntr/mdeditor/mdMeta.kt +++ b/app/src/main/java/org/wntr/mdeditor/mdMeta.kt @@ -29,7 +29,7 @@ class mdMeta { if (metaData.size == 0) return "" var metaString = "---\n" for (key in metaData.keys) { - metaString += "$key: ${metaData.get(key as String)}\n" + if (metaData.get(key) != null) metaString += "$key: ${metaData.get(key)}\n" } metaString += "---\n" return metaString @@ -39,11 +39,11 @@ class mdMeta { fun extractMetadataFromMarkdown(markdown: String) : String { val charactersBetweenGroupedHyphens = Regex("^---([\\s\\S]*?)---\n") val metadataMatched = charactersBetweenGroupedHyphens.find(markdown) + ID = null if (metadataMatched == null || metadataMatched.value == "---\n---\n") { Log.d(javaClass.simpleName,"No metadata included") metaData = mutableMapOf() - ID = null return markdown } val metadata = metadataMatched.value diff --git a/app/src/main/res/layout/activity_metadata.xml b/app/src/main/res/layout/activity_metadata.xml index 04173a2..443cced 100644 --- a/app/src/main/res/layout/activity_metadata.xml +++ b/app/src/main/res/layout/activity_metadata.xml @@ -4,13 +4,13 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:padding="5dp" tools:context="MetadataActivity"> + + + + + app:layout_constraintBottom_toBottomOf="@id/url" /> + app:constraint_referenced_ids="textView0,textView1,textView2,textView3" /> \ No newline at end of file