mirror of
https://github.com/InvertGeek/MixFile.git
synced 2026-06-01 00:52:15 +08:00
1.14.2
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user