This commit is contained in:
Evan You
2025-04-13 11:02:09 +08:00
parent e1446c18b4
commit 6574cd561d
6 changed files with 31 additions and 26 deletions

View File

@@ -15,8 +15,8 @@ android {
applicationId = "com.donut.mixfile"
minSdk = 26
targetSdk = 35
versionCode = 106
versionName = "1.14.1"
versionCode = 107
versionName = "1.14.2"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {

View File

@@ -6,6 +6,7 @@ import com.github.amr.mimetypes.MimeTypes
import io.ktor.client.request.forms.FormBuilder
import io.ktor.http.Headers
import io.ktor.http.HttpHeaders
import io.ktor.http.encodeURLQueryComponent
import io.ktor.http.quote
import io.ktor.server.application.ApplicationCall
import io.ktor.util.pipeline.PipelineContext
@@ -15,7 +16,6 @@ import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.net.MalformedURLException
import java.net.URL
import java.net.URLEncoder
import java.util.concurrent.CopyOnWriteArrayList
import java.util.zip.GZIPInputStream
import java.util.zip.GZIPOutputStream
@@ -121,7 +121,7 @@ fun decompressGzip(compressed: ByteArray): String {
}
fun String.encodeURL(): String {
return URLEncoder.encode(this, "UTF-8")
return encodeURLQueryComponent()
}
fun String.parseFileMimeType() = MimeTypes.getInstance()

View File

@@ -82,12 +82,6 @@ fun editCategory(name: String, callback: (String) -> Unit = {}) {
favCategories += newName
currentCategory = newName
showToast("修改分类名称成功")
favorites.forEach {
if (it.category.contentEquals(name)) {
it.category = newName
}
}
favorites = favorites.map {
if (it.category.contentEquals(name)) {
it.copy(category = newName)

View File

@@ -36,7 +36,6 @@ import com.donut.mixfile.currentActivity
import com.donut.mixfile.ui.component.common.MixDialogBuilder
import com.donut.mixfile.ui.theme.colorScheme
import com.donut.mixfile.util.file.InfoText
import com.donut.mixfile.util.file.sanitizeFileName
import com.donut.mixfile.util.file.saveFileToStorage
import com.donut.mixfile.util.formatFileSize
import com.donut.mixfile.util.objects.AnimatedLoadingBar

View File

@@ -16,7 +16,6 @@ import com.donut.mixfile.server.core.utils.ignoreError
import com.donut.mixfile.server.mixFileServer
import com.donut.mixfile.ui.routes.home.getLocalServerAddress
import io.ktor.http.URLBuilder
import io.ktor.http.path
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -263,8 +262,7 @@ fun getFileAccessUrl(
shareInfo: String,
fileName: String
): String {
return URLBuilder(host).apply {
path("api", "download", fileName.encodeURL())
return URLBuilder("${host}/api/download/${fileName.encodeURL()}").apply {
fragment = fileName
parameters.apply {
append("s", shareInfo)

View File

@@ -19,7 +19,6 @@ import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
@@ -35,7 +34,6 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.donut.mixfile.server.core.utils.parseFileMimeType
import com.donut.mixfile.server.serverStarted
import com.donut.mixfile.ui.routes.home.tryResolveFile
import com.donut.mixfile.ui.theme.colorScheme
import com.donut.mixfile.util.cachedMutableOf
import com.donut.mixfile.util.formatFileSize
@@ -49,7 +47,9 @@ var filePreview by cachedMutableOf("关闭", "mix_file_preview")
fun PreviewCard(
fileDataLog: FileDataLog,
showDate: Boolean = true,
longClick: () -> Unit = {},
longClick: (FileDataLog) -> Unit = {},
selected: Boolean,
onClick: (FileDataLog) -> Unit
) {
val isImage = fileDataLog.name.parseFileMimeType().run {
this.startsWith("image/")
@@ -62,24 +62,34 @@ fun PreviewCard(
LaunchedEffect(favorites) {
}
val color = remember(selected) {
if (selected)
Color(107, 184, 242, 84)
else
Color(107, 218, 246, 0)
}
ElevatedCard(
colors = CardDefaults.cardColors(
// containerColor = Color(107, 218, 246, 0),
),
// colors = CardDefaults.cardColors(
// contentColor = color,
// ),
modifier = Modifier
.fillMaxSize()
.padding(5.dp)
.combinedClickable(
onLongClick = {
longClick()
longClick(fileDataLog)
}
) {
tryResolveFile(fileDataLog.shareInfoData)
onClick(fileDataLog)
}
) {
Column(
modifier = Modifier.fillMaxSize(),
modifier = Modifier
.fillMaxSize()
.background(color),
verticalArrangement = Arrangement.Bottom
) {
if (serverStarted) {
@@ -144,9 +154,13 @@ fun FileCardList(
columns = GridCells.Fixed(2),
) {
items(cardList.size) { index ->
PreviewCard(cardList[index]) {
longClick(cardList[index])
}
val log = cardList[index]
PreviewCard(
log,
onClick = onClick,
longClick = longClick,
selected = selected.contains(log)
)
}
}
return