Compare commits

...

2 Commits

Author SHA1 Message Date
xiaji
7cd9d9a4bf 修复Flomo笔记提交:API Key改为可选,添加content_type参数 2026-04-06 08:20:15 +08:00
xiaji
0f0f1f8ea4 配置页添加模型删除功能 2026-04-06 08:10:25 +08:00
4 changed files with 50 additions and 9 deletions

View File

@@ -508,7 +508,7 @@ class MainActivity : AppCompatActivity() {
val settings = Gson().fromJson(json, NoteSettingsData::class.java)
val noteConfig = settings.noteApiConfig
if (noteConfig == null || noteConfig.apiUrl.isBlank() || noteConfig.apiKey.isBlank()) {
if (noteConfig == null || noteConfig.apiUrl.isBlank()) {
Toast.makeText(this, "请先配置笔记API", Toast.LENGTH_SHORT).show()
return
}
@@ -541,10 +541,12 @@ class MainActivity : AppCompatActivity() {
return withContext(Dispatchers.IO) {
try {
val client = OkHttpClient()
val requestBody = when (apiType) {
val (requestBody, useAuth) = when (apiType) {
"Flomo" -> {
val json = JSONObject().put("content", content)
json.toString().toRequestBody("application/json".toMediaType())
val json = JSONObject()
.put("content", content)
.put("content_type", "markdown")
Pair(json.toString().toRequestBody("application/json".toMediaType()), false)
}
"Notion" -> {
val json = JSONObject()
@@ -556,20 +558,24 @@ class MainActivity : AppCompatActivity() {
)
)
)
json.toString().toRequestBody("application/json".toMediaType())
Pair(json.toString().toRequestBody("application/json".toMediaType()), true)
}
else -> {
val json = JSONObject().put("content", content)
json.toString().toRequestBody("application/json".toMediaType())
Pair(json.toString().toRequestBody("application/json".toMediaType()), apiKey.isNotBlank())
}
}
val request = Request.Builder()
val requestBuilder = Request.Builder()
.url(apiUrl)
.addHeader("Authorization", "Bearer $apiKey")
.addHeader("Content-Type", "application/json")
.post(requestBody)
.build()
if (useAuth && apiKey.isNotBlank()) {
requestBuilder.addHeader("Authorization", "Bearer $apiKey")
}
val request = requestBuilder.build()
val response = client.newCall(request).execute()
response.isSuccessful

View File

@@ -49,6 +49,7 @@ class SecondActivity : AppCompatActivity() {
private lateinit var spModelSelector: Spinner
private lateinit var llModelList: LinearLayout
private lateinit var btnAddModel: Button
private lateinit var btnDeleteModel: Button
private lateinit var etBaseUrl: EditText
private lateinit var etApiKey: EditText
private lateinit var btnToggleApiKey: ImageButton
@@ -160,6 +161,7 @@ class SecondActivity : AppCompatActivity() {
etModelName = findViewById(R.id.etModelName)
spModelSelector = findViewById(R.id.spModelSelector)
btnAddModel = findViewById(R.id.btnAddModel)
btnDeleteModel = findViewById(R.id.btnDeleteModel)
btnTestConnection = findViewById(R.id.btnTestConnection)
tvTestStatus = findViewById(R.id.tvTestStatus)
@@ -382,6 +384,21 @@ class SecondActivity : AppCompatActivity() {
spModelSelector.setSelection(selectedLlmIndex)
}
btnDeleteModel.setOnClickListener {
if (llmConfigs.size <= 1) {
Toast.makeText(this, "至少保留一个配置", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
llmConfigs.removeAt(selectedLlmIndex)
if (selectedLlmIndex >= llmConfigs.size) {
selectedLlmIndex = llmConfigs.size - 1
}
loadSelectedModelToFields()
refreshModelSelector()
spModelSelector.setSelection(selectedLlmIndex)
Toast.makeText(this, "配置已删除", Toast.LENGTH_SHORT).show()
}
// Setup headers
llHeadersList.removeAllViews()
if (headerConfigs.isEmpty()) {

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/error"/>
<corners android:radius="8dp"/>
</shape>

View File

@@ -182,6 +182,18 @@
android:background="@drawable/button_primary_bg"
android:minWidth="0dp"
android:minHeight="0dp"/>
<Button
android:id="@+id/btnDeleteModel"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginStart="4dp"
android:text="删除"
android:textSize="14sp"
android:textColor="@color/white"
android:background="@drawable/button_danger_bg"
android:minWidth="0dp"
android:minHeight="0dp"/>
</LinearLayout>
<!-- Base URL -->