Skip to content

Commit 8e71d05

Browse files
committed
fixes
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 27f45ee commit 8e71d05

6 files changed

Lines changed: 44 additions & 20 deletions

File tree

app/src/main/java/com/nextcloud/client/assistant/AssistantScreen.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import android.app.Activity
1111
import androidx.compose.foundation.Image
1212
import androidx.compose.foundation.background
1313
import androidx.compose.foundation.layout.Arrangement
14-
import androidx.compose.foundation.layout.Box
1514
import androidx.compose.foundation.layout.Column
1615
import androidx.compose.foundation.layout.PaddingValues
1716
import androidx.compose.foundation.layout.Row
@@ -25,10 +24,8 @@ import androidx.compose.foundation.lazy.LazyColumn
2524
import androidx.compose.foundation.lazy.items
2625
import androidx.compose.foundation.pager.HorizontalPager
2726
import androidx.compose.foundation.pager.rememberPagerState
28-
import androidx.compose.foundation.shape.RoundedCornerShape
2927
import androidx.compose.material3.ExperimentalMaterial3Api
3028
import androidx.compose.material3.FloatingActionButton
31-
import androidx.compose.material3.HorizontalDivider
3229
import androidx.compose.material3.Icon
3330
import androidx.compose.material3.IconButton
3431
import androidx.compose.material3.LinearProgressIndicator
@@ -157,8 +154,9 @@ fun AssistantScreen(
157154
scope.launch {
158155
pagerState.scrollToPage(AssistantPage.Content.id)
159156
}
160-
}, openChat = { newSessionId ->
161-
chatViewModel.selectConversation(newSessionId)
157+
}, openChat = { conversation ->
158+
chatViewModel.updateSessionTitle(conversation.timestamp)
159+
chatViewModel.selectConversation(conversation.id)
162160
taskTypes.getChat()?.let { chatTaskType ->
163161
viewModel.selectTaskType(chatTaskType)
164162
}

app/src/main/java/com/nextcloud/client/assistant/chat/ChatContent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,9 @@ private fun ChatEmptyContent(modifier: Modifier = Modifier) {
201201

202202
Text(
203203
text = stringResource(R.string.assistant_screen_empty_content_title),
204-
style = MaterialTheme.typography.bodyMedium,
204+
style = MaterialTheme.typography.headlineSmall,
205205
textAlign = TextAlign.Center,
206-
color = colorResource(R.color.secondary_text_color)
206+
color = colorResource(R.color.text_color)
207207
)
208208

209209
Spacer(modifier = Modifier.height(8.dp))

app/src/main/java/com/nextcloud/client/assistant/chat/ChatViewModel.kt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import androidx.lifecycle.ViewModel
1111
import androidx.lifecycle.viewModelScope
1212
import com.nextcloud.client.assistant.repository.remote.AssistantRemoteRepository
1313
import com.nextcloud.utils.TimeConstants.MILLIS_PER_SECOND
14+
import com.nextcloud.utils.date.DateFormatPattern
15+
import com.nextcloud.utils.date.DateFormatter
1416
import com.nextcloud.utils.extensions.isHuman
1517
import com.owncloud.android.lib.resources.assistant.chat.model.ChatMessage
1618
import com.owncloud.android.lib.resources.assistant.chat.model.ChatMessageRequest
@@ -56,13 +58,18 @@ class ChatViewModel(private val remoteRepository: AssistantRemoteRepository) : V
5658

5759
val lastMessageIsHuman = currentMessages.lastOrNull()?.isHuman() == true
5860

59-
_sessionTitle.update {
60-
session?.sessionTitle
61+
// update session title if exists
62+
session?.sessionTitle?.let {
63+
_sessionTitle.update {
64+
it
65+
}
6166
}
6267

6368
when {
6469
currentChatTaskId != null && currentChatTaskId != "0" -> startPolling(sessionId)
70+
6571
lastMessageIsHuman -> _uiState.update { ChatUIState.RetryAvailable(currentMessages) }
72+
6673
else -> _uiState.update {
6774
if (currentMessages.isEmpty()) {
6875
ChatUIState.Empty
@@ -181,6 +188,18 @@ class ChatViewModel(private val remoteRepository: AssistantRemoteRepository) : V
181188
}
182189
}
183190

191+
fun updateSessionTitle(timestamp: Long) {
192+
val newSessionTitle = DateFormatter
193+
.timestampToDateRepresentation(
194+
timestamp,
195+
DateFormatPattern.MonthDayYearTime
196+
)
197+
198+
_sessionTitle.update {
199+
newSessionTitle
200+
}
201+
}
202+
184203
override fun onCleared() {
185204
super.onCleared()
186205
stopPolling()

app/src/main/java/com/nextcloud/client/assistant/conversation/ConversationScreen.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ import com.owncloud.android.lib.resources.assistant.chat.model.Conversation
6060
@OptIn(ExperimentalMaterial3Api::class)
6161
@Suppress("LongMethod")
6262
@Composable
63-
fun ConversationScreen(viewModel: ConversationViewModel, close: () -> Unit, openChat: (Long) -> Unit) {
63+
fun ConversationScreen(viewModel: ConversationViewModel, close: () -> Unit, openChat: (Conversation) -> Unit) {
6464
val screenState by viewModel.screenState.collectAsState()
6565
val errorMessageId by viewModel.errorMessageId.collectAsState()
6666
val conversations by viewModel.conversations.collectAsState()
@@ -160,7 +160,7 @@ private fun ConversationList(
160160
viewModel: ConversationViewModel,
161161
conversations: List<Conversation>,
162162
modifier: Modifier = Modifier,
163-
openChat: (Long) -> Unit
163+
openChat: (Conversation) -> Unit
164164
) {
165165
var showConversationActions by remember { mutableStateOf(false) }
166166
val selectedConversationId by viewModel.selectedConversationId.collectAsState()
@@ -177,7 +177,7 @@ private fun ConversationList(
177177
isSelected = (conversation.id == selectedConversationId),
178178
onClick = {
179179
viewModel.selectConversation(conversation.id)
180-
openChat(conversation.id)
180+
openChat(conversation)
181181
},
182182
onLongPressed = {
183183
showConversationActions = true
@@ -220,10 +220,11 @@ private fun ConversationListItem(
220220
.fillMaxWidth()
221221
.height(52.dp)
222222
.background(
223-
if (isSelected)
223+
if (isSelected) {
224224
MaterialTheme.colorScheme.surfaceVariant
225-
else
225+
} else {
226226
MaterialTheme.colorScheme.surface
227+
}
227228
)
228229
.combinedClickable(
229230
onClick = onClick,
@@ -237,10 +238,11 @@ private fun ConversationListItem(
237238
style = MaterialTheme.typography.bodyLarge,
238239
maxLines = 1,
239240
overflow = TextOverflow.Ellipsis,
240-
color = if (isSelected)
241+
color = if (isSelected) {
241242
MaterialTheme.colorScheme.onSurface
242-
else
243-
colorResource(R.color.text_color),
243+
} else {
244+
colorResource(R.color.text_color)
245+
},
244246
textAlign = TextAlign.Start,
245247
modifier = Modifier.fillMaxWidth()
246248
)

app/src/main/java/com/nextcloud/client/assistant/conversation/ConversationViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,15 @@ class ConversationViewModel(private val remoteRepository: ConversationRemoteRepo
7272
}
7373
}
7474

75-
fun createConversation(title: String?, onResult: (Long) -> Unit) {
75+
fun createConversation(title: String?, onResult: (Conversation) -> Unit) {
7676
viewModelScope.launch(Dispatchers.IO) {
7777
val timestamp = System.currentTimeMillis().div(MILLIS_PER_SECOND)
7878
val newConversation = remoteRepository.createConversation(title, timestamp)
7979
if (newConversation != null) {
8080
_conversations.update {
8181
listOf(newConversation.session) + it
8282
}
83-
onResult(newConversation.session.id)
83+
onResult(newConversation.session)
8484
} else {
8585
_errorMessageId.update {
8686
R.string.conversation_screen_create_error_title

app/src/main/java/com/nextcloud/utils/date/DateFormatPattern.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,10 @@ enum class DateFormatPattern(val pattern: String) {
1616
/**
1717
* Aug 3
1818
*/
19-
MonthWithDate("MMM d")
19+
MonthWithDate("MMM d"),
20+
21+
/**
22+
* March 03, 2026 14:38
23+
*/
24+
MonthDayYearTime("MMMM dd, yyyy HH:mm")
2025
}

0 commit comments

Comments
 (0)