From 238b7dfb759c83715269418d117b3ff31a800a1d Mon Sep 17 00:00:00 2001 From: zhong <2724770085@qq.com> Date: Thu, 13 Nov 2025 18:55:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=8A=A8=E6=80=81=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/kotlinc.xml | 2 +- app/src/main/assets/star_Loader.lottie | Bin 0 -> 1434 bytes .../com/aiosman/ravenow/ui/post/DraftBox.kt | 346 ++++++++++++++++ .../com/aiosman/ravenow/ui/post/NewPost.kt | 389 +++++++++++------- .../ravenow/ui/post/NewPostViewModel.kt | 56 ++- .../com/aiosman/ravenow/utils/DraftStore.kt | 92 +++++ app/src/main/res/mipmap-hdpi/component.png | Bin 0 -> 76473 bytes app/src/main/res/values-ja/strings.xml | 17 +- app/src/main/res/values-zh/strings.xml | 4 +- app/src/main/res/values/strings.xml | 1 + gradle/wrapper/gradle-wrapper.properties | 2 +- 11 files changed, 759 insertions(+), 150 deletions(-) create mode 100644 app/src/main/assets/star_Loader.lottie create mode 100644 app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt create mode 100644 app/src/main/java/com/aiosman/ravenow/utils/DraftStore.kt create mode 100644 app/src/main/res/mipmap-hdpi/component.png diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index f8467b4..8ad8c86 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/app/src/main/assets/star_Loader.lottie b/app/src/main/assets/star_Loader.lottie new file mode 100644 index 0000000000000000000000000000000000000000..fb0df501ab2b14a36be351a68f14f768be6a8122 GIT binary patch literal 1434 zcmWIWW@Zs#U|`^2F!czHe)($J-v%IWD-iPnac*K>W?E`-iC$K5eqL{{Bi|tf0oV6N z*(;BVG_I>+^iPOc(A>4Kr}5$ulfAn)7rlM=|Hb-4mE!iD=om)Dt=0CqqCZEnkw#S8yEsrW((tF-rwVSb8YR&Eyn@!^~x7@3I z^HyN)it{pd?1wbm7FxCQyw3c~6oBH?$kl60UokT<)Cw~&m;jv$bZKs4NoIatvA$(W ziiN4Ep@FVhqG_70iMd6xZj!mFrLJL$xuu0=ih;RFss-3bZzJyK&o&VF7p`P4{6v0+ z!@X}Cd@o03M#(SENYc$*v}_^Mu65m?_P_ruxqO1dtfe`p4o{Jv@%iVu?|0LS)6Rx{ z&pBh4cJu7zB-0%yCe1dH&v>@cQabyb?YASxn%pz)EKfajEW6GAo8?LQ@a-pGNp@}D zvH!%WqKS18I+v3^y!-3$bK&`$$C6J!u{_IdHg8Sj&ojq1IK5jZx1Ybu=p?)Mr|<(_ z6A$z2sb;3~@91XQB9`&c$iM6Kk{!v9BRA;;^{YyDzE7B)=2Gv*5HIz3$uqh6No;-# zUkP)p{1vF5vNexS@K34KVVRZu!lt#^ZINqk`fL1-Ixc6d=#=|#iHcyE*yM#BKdvOJ z9q0|0Up3{H{HykdD-8EYS$EB9j{hFbJ7vxtvvj4zzJd&=jGl?zYgsCC6@1bq`W8k9 zSxkHK^37#lqw2YL?Q0&NNbj^MPgGrXVZ~JrtD=AzVa5Nf7yO;sdqVuytiUSnW~B*h zZ%pW&5V1y}?S{iI=7%hGEK1cmZD-m=^{2Xdv`tG|;&^0{hxh4%MP^gPc@?at9XQv; zJA;d~W}ls@^3NtddC8UVB37xa!R$y{ zjoFH?{s)yECc7(@`hA&X^XvPYL(Zo*Y8T9KbemCo_S6y|cDL>JC$bE8z1y2^%u?Oj zF(vHPt4^yu-zIw9E?KMc(6L)mH1U?H@xo6Z?n)he_l(=mV~f?qn44Zpw|D7wM4wu> z?bOL**LCK&=+rEHG`UONtKR+G|MWk5jN-g4zCZr4C2OY8y4`YT)26<+nbr7AusU7G z-&(#i;L^)O1vg^&g;`vSZVNK2Se_Bw7`)+iVCV*O%OKI$=XktiYPP$XaQ#>|(QMzU zgmgVFwKMD8wkrGi?z?nx;mHnz52d|Q)h$z}JoY=36fo0X$+93!y_;>uM9Y;2N`v`s zu9uBoKgTKhBWKgIz)jnF0~3R#@0SVjmfYCp!6N_DQR4kt5lz3_V%?RWChS|oSe6}; zzxtm|b&W*8MDE|~_RrY;Pv6sWd0zCET+jTwYi@33mNWDf*vpbUMLn6p_^X<8R>Eo( zLzd9}Qy<^^7Jhez#-bS(s$W)K;4!+DVQI>dmA1xf=|h>D%Fj}o7Dw0^Est2yGK+7U zvufdC+of7RH(WEk%dnNJ`R1j>hH`!HLktJMmAw1rsOGHM`rqPMPloHhrxJZ;H+upK zI*(m?Q>L->Zpqtk*N-jW>b~?LHGQ>pgo51ng2LTPr&O$NP1&>1WzMYYT<=(!?e;SU vcr!AIFyJoefCUH=Kq>anwW1e12z{%8Omd2$0B=?{kSR<+I2TAiX94j5&}(a# literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt b/app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt new file mode 100644 index 0000000..c466408 --- /dev/null +++ b/app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt @@ -0,0 +1,346 @@ +package com.aiosman.ravenow.ui.post + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.Text +import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import android.graphics.BitmapFactory +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.lifecycle.viewModelScope +import com.aiosman.ravenow.AppThemeData +import com.aiosman.ravenow.LocalAppTheme +import com.aiosman.ravenow.LocalNavController +import com.aiosman.ravenow.R +import com.aiosman.ravenow.ui.composables.CustomAsyncImage +import com.aiosman.ravenow.ui.modifiers.noRippleClickable +import com.aiosman.ravenow.utils.DraftStore +import kotlinx.coroutines.launch +import java.io.File +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun DraftBoxBottomSheet( + onDismiss: () -> Unit +) { + val AppColors = LocalAppTheme.current + val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + val context = LocalContext.current + val navController = LocalNavController.current + val model = NewPostViewModel + + var drafts by remember { mutableStateOf>(emptyList()) } + val draftStore = remember { DraftStore(context) } + val dateFormat = remember { SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) } + + LaunchedEffect(Unit) { + drafts = draftStore.getAllDrafts() + } + + ModalBottomSheet( + onDismissRequest = onDismiss, + sheetState = sheetState, + containerColor = AppColors.background, + shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), + dragHandle = {} + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.9f) + .padding(horizontal = 16.dp, vertical = 8.dp) + ) { + // 标题 + Box( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 16.dp), + contentAlignment = Alignment.Center + ) { + Text( + text = stringResource(R.string.drafts), + fontSize = 17.sp, + fontWeight = FontWeight.Bold, + color = AppColors.text + ) + } + + // 草稿列表 + if (drafts.isEmpty()) { + Box( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(), + contentAlignment = Alignment.Center + ) { + Text( + text = "暂无草稿", + fontSize = 16.sp, + color = AppColors.secondaryText + ) + } + } else { + LazyColumn( + modifier = Modifier + .fillMaxWidth() + .weight(1f), + verticalArrangement = Arrangement.spacedBy(12.dp) + ) { + itemsIndexed(drafts) { index, draft -> + DraftItem( + draft = draft, + dateFormat = dateFormat, + onEditClick = { + model.viewModelScope.launch { + model.loadDraft(context, draft) + onDismiss() + } + }, + onDeleteClick = { + draftStore.deleteDraft(index) + drafts = draftStore.getAllDrafts() + }, + AppColors = AppColors, + context = context + ) + } + } + + // 底部提示 + Text( + text = "仅保存最近5个草稿", + fontSize = 12.sp, + color = AppColors.secondaryText, + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp), + textAlign = androidx.compose.ui.text.style.TextAlign.Center + ) + } + } + } +} + +@Composable +private fun DraftItem( + draft: Draft, + dateFormat: SimpleDateFormat, + onEditClick: () -> Unit, + onDeleteClick: () -> Unit, + AppColors: AppThemeData, + context: android.content.Context +) { + Box( + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(12.dp)) + .background(Color.White) + .padding(12.dp) + ) { + Column { + // 文字内容(最多1行,超出用...截断) + if (draft.textContent.isNotBlank()) { + Text( + text = draft.textContent, + fontSize = 14.sp, + color = AppColors.text, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + modifier = Modifier.fillMaxWidth() + ) + Spacer(modifier = Modifier.height(8.dp)) + } + + // 图片预览 + if (draft.imageList.isNotEmpty()) { + val displayImages = draft.imageList.take(5) // 最多显示5张 + val totalImages = draft.imageList.size + val showMoreIndicator = totalImages > 5 + val visibleCount = if (showMoreIndicator) 3 else displayImages.size + val remainingCount = totalImages - 3 + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + // 显示前3张或全部(如果少于5张) + displayImages.take(visibleCount).forEach { imageItem -> + DraftImageThumbnail( + imageItem = imageItem, + context = context, + modifier = Modifier.size(55.dp) + ) + } + + // 如果超过5张,显示"more X images" + if (showMoreIndicator) { + Box( + modifier = Modifier + .size(55.dp) + .clip(RoundedCornerShape(12.dp)) + .background(Color(0xFFFAF9FB)), + contentAlignment = Alignment.Center + ) { + Text( + text = "more\n$remainingCount\nimages", + fontSize = 11.sp, + color = AppColors.secondaryText, + textAlign = androidx.compose.ui.text.style.TextAlign.Center, + lineHeight = 14.sp + ) + } + } + } + Spacer(modifier = Modifier.height(8.dp)) + } + + // 底部操作栏 + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + // 编辑和删除按钮 + Row( + horizontalArrangement = Arrangement.spacedBy(12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + // 编辑按钮 + Row( + modifier = Modifier.noRippleClickable { onEditClick() }, + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.rider_pro_moment_apply), + contentDescription = "edit", + modifier = Modifier.size(16.dp), + tint = AppColors.text + ) + Text( + text = stringResource(R.string.edit_profile), + fontSize = 12.sp, + color = AppColors.text + ) + } + + // 删除按钮 + Row( + modifier = Modifier.noRippleClickable { onDeleteClick() }, + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.rider_pro_moment_delete), + contentDescription = "delete", + modifier = Modifier.size(16.dp), + tint = AppColors.text + ) + Text( + text = stringResource(R.string.delete), + fontSize = 12.sp, + color = AppColors.text + ) + } + } + + // 时间戳 + Text( + text = dateFormat.format(Date(draft.createdAt)), + fontSize = 12.sp, + color = AppColors.secondaryText + ) + } + } + } +} + +@Composable +private fun DraftImageThumbnail( + imageItem: DraftImageItem, + context: android.content.Context, + modifier: Modifier = Modifier +) { + Box( + modifier = modifier + .clip(RoundedCornerShape(12.dp)) + .background(Color(0xFFFAF9FB)) + ) { + val file = File(context.cacheDir, imageItem.filename) + if (file.exists()) { + // 尝试从文件加载 Bitmap + val bitmap = remember(file.absolutePath) { + BitmapFactory.decodeFile(file.absolutePath) + } + if (bitmap != null) { + CustomAsyncImage( + context = context, + imageUrl = bitmap, + contentDescription = "", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + } else { + // 如果加载失败,尝试使用 URI + CustomAsyncImage( + context = context, + imageUrl = imageItem.uri, + contentDescription = "", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + } + } else { + // 如果文件不存在,显示占位符 + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + Icon( + painter = painterResource(id = R.drawable.rider_pro_new_post_add_pic), + contentDescription = "image", + modifier = Modifier.size(24.dp), + tint = Color.Gray + ) + } + } + } +} diff --git a/app/src/main/java/com/aiosman/ravenow/ui/post/NewPost.kt b/app/src/main/java/com/aiosman/ravenow/ui/post/NewPost.kt index 31a1379..2179b24 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/post/NewPost.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/post/NewPost.kt @@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width @@ -41,6 +42,7 @@ import androidx.compose.material3.Switch import androidx.compose.material3.SwitchDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -63,7 +65,10 @@ import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.layout.positionInRoot import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -72,6 +77,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.content.FileProvider @@ -90,6 +96,10 @@ import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.google.accompanist.systemuicontroller.rememberSystemUiController import kotlinx.coroutines.launch import java.io.File +import com.airbnb.lottie.compose.LottieAnimation +import com.airbnb.lottie.compose.LottieCompositionSpec +import com.airbnb.lottie.compose.LottieConstants +import com.airbnb.lottie.compose.rememberLottieComposition /** * 发布动态 @@ -101,7 +111,10 @@ fun NewPostScreen() { var isAiEnabled by remember { mutableStateOf(false) } var isRotating by remember { mutableStateOf(false) } var isRequesting by remember { mutableStateOf(false) } + var buttonBottomY by remember { mutableStateOf(0f) } val keyboardController = LocalSoftwareKeyboardController.current + val density = LocalDensity.current + val context = LocalContext.current val model = NewPostViewModel val systemUiController = rememberSystemUiController() @@ -110,6 +123,13 @@ fun NewPostScreen() { model.init() } + // 退出时自动保存草稿 + DisposableEffect(Unit) { + onDispose { + model.saveDraft(context) + } + } + StatusBarMaskLayout( darkIcons = !AppState.darkMode, @@ -119,172 +139,240 @@ fun NewPostScreen() { AppColors.background ) ) { - Column( + Box( modifier = Modifier .fillMaxSize() .background(AppColors.background) ) { - NewPostTopBar { - } Column( modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp) + .fillMaxSize() ) { - model.relMoment?.let { - Text("Share with") - Spacer(modifier = Modifier.height(8.dp)) - Box( - modifier = Modifier - .clip(RoundedCornerShape(8.dp)) - .background(color = AppColors.basicMain) - .padding(24.dp) - ) { - RelPostCard( - momentEntity = it, - modifier = Modifier.fillMaxWidth() - ) - } + NewPostTopBar { } - } - - AddImageGrid() - NewPostTextField(stringResource(R.string.moment_content_hint), NewPostViewModel.textContent) { - NewPostViewModel.textContent = it - } - Box( - modifier = Modifier - .fillMaxWidth() - .height(1.dp) - .padding(horizontal = 16.dp) - .background(AppColors.divider) - ) - Spacer(modifier = Modifier.height(24.dp)) - Row( - modifier = Modifier - .padding(start = 16.dp) - .height(40.dp) - .widthIn(min = 100.dp, max = 200.dp) - .wrapContentWidth() - .clip(RoundedCornerShape(20.dp)) - .background( - brush = Brush.linearGradient( - colors = listOf( - Color(0xFF8CDDFF), - Color(0xFF9887FF), - Color(0xFFFF8D28) - ), - ) - ) - .padding(horizontal = 14.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Center - ) { - Image( - painter = painterResource(id = R.mipmap.icon_ai), - contentDescription = null, + Column( modifier = Modifier - .size(16.dp) - ) - Text( - text = stringResource(R.string.moment_ai_co), - fontWeight = FontWeight.Normal, - fontSize = 13.sp, - modifier = Modifier - .padding(start = 2.dp), - color = Color.White, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) - } - - Column( - modifier = Modifier.fillMaxWidth() - ) { - BasicTextField( - value = model.aiTextContent, - onValueChange = { newValue -> - model.aiTextContent = newValue - }, - modifier = Modifier - .height(160.dp) - .heightIn(160.dp) - .padding(horizontal = 16.dp, vertical = 10.dp) - .fillMaxWidth(), - cursorBrush = SolidColor(AppColors.text), - textStyle = TextStyle( - lineHeight = 24.sp, - color = AppColors.text, - ), - readOnly = true - ) - if (model.aiTextContent.isNotEmpty()) { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp, vertical = 8.dp), - horizontalArrangement = Arrangement.End // 靠右对齐 - ) { - // 删除按钮 - Row( + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) { + model.relMoment?.let { + Text("Share with") + Spacer(modifier = Modifier.height(8.dp)) + Box( modifier = Modifier - .noRippleClickable { - model.aiTextContent = "" - } - .background( - color = AppColors.basicMain, - shape = RoundedCornerShape(16.dp) - ) - .padding(horizontal = 8.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically + .clip(RoundedCornerShape(8.dp)) + .background(color = AppColors.basicMain) + .padding(24.dp) ) { - Icon( - painter = painterResource(id = R.drawable.rider_pro_moment_delete), - contentDescription = "delete", - modifier = Modifier.size(16.dp), - tint = AppColors.text - ) - Text( - text = stringResource(R.string.moment_ai_delete), - fontSize = 12.sp, - color = AppColors.text, - modifier = Modifier.padding(start = 4.dp) + RelPostCard( + momentEntity = it, + modifier = Modifier.fillMaxWidth() ) } + } + } - Spacer(modifier = Modifier.width(14.dp)) - //应用生成文案 - Row( - modifier = Modifier - .noRippleClickable { - if (model.aiTextContent.isNotEmpty()) { - model.textContent = model.aiTextContent + AddImageGrid() + NewPostTextField(stringResource(R.string.moment_content_hint), NewPostViewModel.textContent) { newValue -> + NewPostViewModel.textContent = newValue + } + Box( + modifier = Modifier + .fillMaxWidth() + .height(1.dp) + .padding(horizontal = 16.dp) + .background(AppColors.divider) + ) + Spacer(modifier = Modifier.height(24.dp)) + val isButtonEnabled = model.textContent.isNotEmpty() + Row( + modifier = Modifier + .padding(start = 16.dp) + .height(40.dp) + .widthIn(min = 100.dp, max = 200.dp) + .wrapContentWidth() + .clip(RoundedCornerShape(20.dp)) + .onGloballyPositioned { coordinates -> + buttonBottomY = with(density) { coordinates.size.height.toDp().toPx() + coordinates.positionInRoot().y } + } + .then( + if (isButtonEnabled) { + Modifier.background( + brush = Brush.linearGradient( + colors = listOf( + Color(0xFF8CDDFF), + Color(0xFF9887FF), + Color(0xFFFF8D28) + ), + ) + ) + } else { + Modifier.background(Color(0xFFD4D1D6)) + } + ) + .then( + if (isButtonEnabled) { + Modifier.noRippleClickable { + model.viewModelScope.launch { + isRequesting = true + try { + model.agentMoment(model.textContent) + } catch (e: Exception) { + e.printStackTrace() + Toast.makeText( + context, + "文案优化失败:${e.message ?: "请稍后重试"}", + Toast.LENGTH_SHORT + ).show() + } finally { + isRequesting = false + } } } - .background( - color = AppColors.basicMain, - shape = RoundedCornerShape(16.dp) - ) - .padding(horizontal = 8.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically + } else { + Modifier + } + ) + .padding(horizontal = 14.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center + ) { + Image( + painter = painterResource(id = R.mipmap.icon_ai), + contentDescription = null, + modifier = Modifier + .size(16.dp) + ) + Text( + text = stringResource(R.string.moment_ai_co), + fontWeight = FontWeight.Normal, + fontSize = 13.sp, + modifier = Modifier + .padding(start = 2.dp), + color = Color.White, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } + + Column( + modifier = Modifier.fillMaxWidth() + ) { + BasicTextField( + value = model.aiTextContent, + onValueChange = { newValue -> + model.aiTextContent = newValue + }, + modifier = Modifier + .height(160.dp) + .heightIn(160.dp) + .padding(horizontal = 16.dp, vertical = 10.dp) + .fillMaxWidth(), + cursorBrush = SolidColor(AppColors.text), + textStyle = TextStyle( + lineHeight = 24.sp, + color = AppColors.text, + ), + readOnly = true + ) + if (model.aiTextContent.isNotEmpty()) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp), + horizontalArrangement = Arrangement.End // 靠右对齐 ) { - Icon( - painter = painterResource(id = R.drawable.rider_pro_moment_apply), - contentDescription = "apply", - modifier = Modifier.size(16.dp), - tint = AppColors.text - ) - Text( - text = stringResource(R.string.moment_ai_apply), - fontSize = 12.sp, - color = AppColors.text, - modifier = Modifier.padding(start = 4.dp) - ) + // 删除按钮 + Row( + modifier = Modifier + .noRippleClickable { + model.aiTextContent = "" + } + .background( + color = AppColors.basicMain, + shape = RoundedCornerShape(16.dp) + ) + .padding(horizontal = 8.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.rider_pro_moment_delete), + contentDescription = "delete", + modifier = Modifier.size(16.dp), + tint = AppColors.text + ) + Text( + text = stringResource(R.string.moment_ai_delete), + fontSize = 12.sp, + color = AppColors.text, + modifier = Modifier.padding(start = 4.dp) + ) + } + + Spacer(modifier = Modifier.width(14.dp)) + //应用生成文案 + Row( + modifier = Modifier + .noRippleClickable { + if (model.aiTextContent.isNotEmpty()) { + model.textContent = model.aiTextContent + } + } + .background( + color = AppColors.basicMain, + shape = RoundedCornerShape(16.dp) + ) + .padding(horizontal = 8.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.rider_pro_moment_apply), + contentDescription = "apply", + modifier = Modifier.size(16.dp), + tint = AppColors.text + ) + Text( + text = stringResource(R.string.moment_ai_apply), + fontSize = 12.sp, + color = AppColors.text, + modifier = Modifier.padding(start = 4.dp) + ) + } } } } } + // 底部背景图 + if (isRequesting) { + Image( + painter = painterResource(id = R.mipmap.component), + contentDescription = null, + modifier = Modifier + .fillMaxWidth() + .height(400.dp) + .align(Alignment.BottomStart) + .offset(y = (-40).dp), + contentScale = ContentScale.FillBounds + ) + + // 加载动画显示在背景图上方,按钮下方80dp区域 + Box( + modifier = Modifier + .fillMaxWidth() + .offset { + val yOffset = (buttonBottomY + with(density) { 60.dp.toPx() }).toInt() + IntOffset(x = 0, y = yOffset) + }, + contentAlignment = Alignment.Center + ) { + LottieAnimation( + composition = rememberLottieComposition(LottieCompositionSpec.Asset("star_Loader.lottie")).value, + iterations = LottieConstants.IterateForever, + modifier = Modifier.size(200.dp) + ) + } + } } } } @@ -297,6 +385,7 @@ fun NewPostTopBar(onSendClick: () -> Unit = {}) { var uploading by remember { mutableStateOf(false) } var lastBackClickTime by remember { mutableStateOf(0L) } var lastSendClickTime by remember { mutableStateOf(0L) } + var showDraftBox by remember { mutableStateOf(false) } val debounceTime = 500L // 500毫秒防抖时间 // 上传进度 if (uploading) { @@ -340,6 +429,8 @@ fun NewPostTopBar(onSendClick: () -> Unit = {}) { val currentTime = System.currentTimeMillis() if (currentTime - lastSendClickTime > debounceTime) { lastSendClickTime = currentTime + // 保存草稿后再返回 + model.saveDraft(context) navController.popBackStack() } }, @@ -363,6 +454,7 @@ fun NewPostTopBar(onSendClick: () -> Unit = {}) { val currentTime = System.currentTimeMillis() if (currentTime - lastSendClickTime > debounceTime) { lastSendClickTime = currentTime + showDraftBox = true } }, colorFilter = ColorFilter.tint(AppColors.text) @@ -386,6 +478,8 @@ fun NewPostTopBar(onSendClick: () -> Unit = {}) { model.createMoment(context = context) { progress -> // 更新进度条 } + // 发布成功后清空内容 + model.asNewPost() navController.popBackStack() }catch (e:Exception) { e.printStackTrace() @@ -398,6 +492,13 @@ fun NewPostTopBar(onSendClick: () -> Unit = {}) { } } + + // 草稿箱弹窗 + if (showDraftBox) { + DraftBoxBottomSheet( + onDismiss = { showDraftBox = false } + ) + } } @Composable diff --git a/app/src/main/java/com/aiosman/ravenow/ui/post/NewPostViewModel.kt b/app/src/main/java/com/aiosman/ravenow/ui/post/NewPostViewModel.kt index d286baf..0d17471 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/post/NewPostViewModel.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/post/NewPostViewModel.kt @@ -25,6 +25,7 @@ import com.aiosman.ravenow.exp.rotate import com.aiosman.ravenow.R import com.aiosman.ravenow.ui.index.tabs.profile.MyProfileViewModel import com.aiosman.ravenow.ui.modification.Modification +import com.aiosman.ravenow.utils.DraftStore import com.aiosman.ravenow.utils.FileUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -101,7 +102,8 @@ data class DraftImageItem( } data class Draft( val textContent: String, - val imageList: List + val imageList: List, + val createdAt: Long = System.currentTimeMillis() ) object NewPostViewModel : ViewModel() { var momentService: MomentService = MomentServiceImpl() @@ -114,6 +116,7 @@ object NewPostViewModel : ViewModel() { var relMoment by mutableStateOf(null) var currentPhotoUri: Uri? = null var draft: Draft? = null + private var draftSaved = false // 标记草稿是否已保存,避免重复保存 // watch textContent change and save draft // fun saveDraft() { // draft = Draft(textContent, imageList.map { @@ -127,6 +130,7 @@ object NewPostViewModel : ViewModel() { modificationList = listOf() imageList = listOf() relPostId = null + draftSaved = false // 重置保存标志 } fun asNewPostWithImageUris(imageUris: List) { @@ -200,4 +204,54 @@ object NewPostViewModel : ViewModel() { } } } + + /** + * 保存当前编辑内容为草稿 + */ + fun saveDraft(context: Context) { + // 如果已经保存过,不再重复保存 + if (draftSaved) { + return + } + + val draftStore = DraftStore(context) + val draft = Draft( + textContent = textContent, + imageList = imageList.map { DraftImageItem.fromImageItem(it) } + ) + draftStore.saveDraft(draft) + draftSaved = true // 标记已保存 + } + + /** + * 加载草稿到编辑页面 + */ + suspend fun loadDraft(context: Context, draft: Draft) { + textContent = draft.textContent + aiTextContent = "" + draftSaved = false // 加载草稿后重置保存标志,允许重新保存 + + // 从草稿的图片URI恢复图片列表 + imageList = withContext(Dispatchers.IO) { + draft.imageList.mapNotNull { draftImageItem -> + try { + val file = File(context.cacheDir, draftImageItem.filename) + if (file.exists()) { + val bitmap = BitmapFactory.decodeFile(file.absolutePath) + if (bitmap != null) { + ImageItem( + uri = draftImageItem.uri, + id = draftImageItem.id, + bitmap = bitmap, + file = file + ) + } else null + } else null + } catch (e: Exception) { + Log.e("NewPostViewModel", "Failed to load draft image", e) + null + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/aiosman/ravenow/utils/DraftStore.kt b/app/src/main/java/com/aiosman/ravenow/utils/DraftStore.kt new file mode 100644 index 0000000..d1c01d5 --- /dev/null +++ b/app/src/main/java/com/aiosman/ravenow/utils/DraftStore.kt @@ -0,0 +1,92 @@ +package com.aiosman.ravenow.utils + +import android.content.Context +import android.content.SharedPreferences +import com.aiosman.ravenow.ui.post.Draft +import com.aiosman.ravenow.ui.post.DraftImageItem +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + +/** + * 草稿存储管理器 + * - 仅保存最近5条草稿 + * - 新草稿加入时自动淘汰最旧的一条 + */ +class DraftStore(context: Context) { + private val prefs: SharedPreferences = + context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) + private val gson = Gson() + private val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) + + data class DraftEntity( + val textContent: String, + val imageList: List, + val createdAt: Long + ) { + fun toDraft(): Draft { + return Draft(textContent, imageList, createdAt) + } + } + + fun getAllDrafts(): List { + val json = prefs.getString(KEY_DRAFTS, "[]") ?: "[]" + return runCatching { + val type = object : TypeToken>() {}.type + val entities = gson.fromJson>(json, type) ?: emptyList() + entities.sortedByDescending { it.createdAt }.map { it.toDraft() } + }.getOrDefault(emptyList()) + } + + fun saveDraft(draft: Draft) { + // 如果文字和图片都为空,不保存 + if (draft.textContent.isBlank() && draft.imageList.isEmpty()) { + return + } + + val current = getAllDrafts().map { draftToEntity(it) }.toMutableList() + + // 添加新草稿到最前面 + current.add(0, draftToEntity(draft)) + + // 只保留最近5条 + while (current.size > MAX_SIZE) { + current.removeAt(current.lastIndex) + } + + save(current) + } + + fun deleteDraft(index: Int) { + val current = getAllDrafts().map { draftToEntity(it) }.toMutableList() + if (index >= 0 && index < current.size) { + current.removeAt(index) + save(current) + } + } + + fun clearAll() { + save(emptyList()) + } + + private fun draftToEntity(draft: Draft): DraftEntity { + return DraftEntity( + textContent = draft.textContent, + imageList = draft.imageList, + createdAt = draft.createdAt + ) + } + + private fun save(list: List) { + prefs.edit().putString(KEY_DRAFTS, gson.toJson(list)).apply() + } + + companion object { + private const val PREF_NAME = "draft_store_pref" + private const val KEY_DRAFTS = "drafts_v1" + private const val MAX_SIZE = 5 + } +} + diff --git a/app/src/main/res/mipmap-hdpi/component.png b/app/src/main/res/mipmap-hdpi/component.png new file mode 100644 index 0000000000000000000000000000000000000000..67457ec2799af10987b18ef2a8aa8191ae386c8b GIT binary patch literal 76473 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≧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パスワードは%1$d文字を超えることはできません ブロック 全文を読む - + ドラフトボックス 作成 @@ -368,5 +368,20 @@ 探検する 返信@%1$s 少なくとも1枚の画像を選択してください。 + + + グループチャットを作成 + 必要消費: + 現在の残高 + 消費後の残高: + 消費を確認 + 残高不足 + メンバー数が上限を超えています(%1$d) + パイコイン + 必要費用 + 消費後の残高 + パイコイン残高不足 + チャージへ + 消費を確認 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 77d2a57..5907627 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -149,7 +149,7 @@ 创建智能体 好的,就它了 需要一些灵感来写文章吗?让人工智能来帮你! - AI文案优化 + 文案优化 删除 应用 智能体 @@ -213,7 +213,7 @@ 人正在热聊… 拉黑 查看全文 - + 草稿箱 创建 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9fb066a..eadf2ba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -209,6 +209,7 @@ Password cannot exceed %1$d characters Block Read full article + drafts Create diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8635977..60568db 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Jun 14 03:23:01 CST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists