Skip to content

Commit e84664a

Browse files
authored
Feature: Support channel, lecture and exercise mentioning (#14)
* Support exercise and lecture mentioning. * Support channel mentioning. Closes #9 * Filter exercise lecture and channel references by query. Update popup ui.
1 parent 396be49 commit e84664a

File tree

6 files changed

+228
-42
lines changed

6 files changed

+228
-42
lines changed

feature/metis/conversation/src/main/kotlin/de/tum/informatics/www1/artemis/native_app/feature/metis/conversation/conversation_module.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ val conversationModule = module {
4141
get(),
4242
get(),
4343
get(),
44+
get(),
4445
get()
4546
)
4647
}
@@ -60,6 +61,7 @@ val conversationModule = module {
6061
get(),
6162
get(),
6263
get(),
64+
get(),
6365
get()
6466
)
6567
}

feature/metis/conversation/src/main/kotlin/de/tum/informatics/www1/artemis/native_app/feature/metis/conversation/ui/chatlist/MetisListViewModel.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.paging.insertSeparators
1010
import androidx.paging.map
1111
import de.tum.informatics.www1.artemis.native_app.core.common.flatMapLatest
1212
import de.tum.informatics.www1.artemis.native_app.core.data.service.network.AccountDataService
13+
import de.tum.informatics.www1.artemis.native_app.core.data.service.network.CourseService
1314
import de.tum.informatics.www1.artemis.native_app.core.datastore.AccountService
1415
import de.tum.informatics.www1.artemis.native_app.core.datastore.ServerConfigurationService
1516
import de.tum.informatics.www1.artemis.native_app.core.datastore.authToken
@@ -68,6 +69,7 @@ internal class MetisListViewModel(
6869
networkStatusProvider: NetworkStatusProvider,
6970
conversationService: ConversationService,
7071
replyTextStorageService: ReplyTextStorageService,
72+
courseService: CourseService,
7173
private val coroutineContext: CoroutineContext = EmptyCoroutineContext
7274
) : MetisContentViewModel(
7375
initialMetisContext,
@@ -80,6 +82,7 @@ internal class MetisListViewModel(
8082
networkStatusProvider,
8183
conversationService,
8284
replyTextStorageService,
85+
courseService,
8386
coroutineContext
8487
) {
8588
private val _filter = MutableStateFlow<List<MetisFilter>>(emptyList())

feature/metis/conversation/src/main/kotlin/de/tum/informatics/www1/artemis/native_app/feature/metis/conversation/ui/reply/ReplyAutoCompletePopup.kt

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package de.tum.informatics.www1.artemis.native_app.feature.metis.conversation.ui
33
import androidx.compose.foundation.background
44
import androidx.compose.foundation.clickable
55
import androidx.compose.foundation.layout.Box
6+
import androidx.compose.foundation.layout.Column
67
import androidx.compose.foundation.layout.fillMaxSize
78
import androidx.compose.foundation.layout.fillMaxWidth
9+
import androidx.compose.foundation.layout.height
810
import androidx.compose.foundation.layout.heightIn
911
import androidx.compose.foundation.layout.padding
1012
import androidx.compose.foundation.layout.width
@@ -16,6 +18,7 @@ import androidx.compose.material3.Text
1618
import androidx.compose.runtime.Composable
1719
import androidx.compose.ui.Modifier
1820
import androidx.compose.ui.res.stringResource
21+
import androidx.compose.ui.text.style.TextAlign
1922
import androidx.compose.ui.tooling.preview.Preview
2023
import androidx.compose.ui.unit.Dp
2124
import androidx.compose.ui.unit.dp
@@ -42,7 +45,9 @@ internal fun ReplyAutoCompletePopup(
4245
onDismissRequest = onDismissRequest
4346
) {
4447
ReplyAutoCompletePopupBody(
45-
modifier = Modifier.heightIn(max = maxHeight).width(targetWidth),
48+
modifier = Modifier
49+
.heightIn(max = maxHeight)
50+
.width(targetWidth),
4651
autoCompleteCategories = autoCompleteCategories,
4752
performAutoComplete = performAutoComplete
4853
)
@@ -63,7 +68,7 @@ private fun ReplyAutoCompletePopupBody(
6368
)
6469
.padding(top = 8.dp)
6570
) {
66-
autoCompleteCategories.forEach { category ->
71+
autoCompleteCategories.forEachIndexed { categoryIndex, category ->
6772
item {
6873
AutoCompleteCategoryComposable(
6974
modifier = Modifier.fillMaxWidth(),
@@ -84,6 +89,16 @@ private fun ReplyAutoCompletePopupBody(
8489
item { Divider() }
8590
}
8691
}
92+
93+
if (categoryIndex != autoCompleteCategories.lastIndex) {
94+
item {
95+
Column {
96+
Divider()
97+
98+
Box(modifier = Modifier.height(8.dp))
99+
}
100+
}
101+
}
87102
}
88103
}
89104
}
@@ -96,7 +111,8 @@ private fun AutoCompleteCategoryComposable(modifier: Modifier, name: String) {
96111
.fillMaxWidth()
97112
.padding(horizontal = HintHorizontalPadding),
98113
text = name,
99-
style = MaterialTheme.typography.titleSmall
114+
style = MaterialTheme.typography.labelLarge,
115+
textAlign = TextAlign.Center
100116
)
101117
}
102118
}
@@ -125,11 +141,31 @@ private fun ReplyAutoCompletePopupBodyPreview() {
125141
autoCompleteCategories = listOf(
126142
AutoCompleteCategory(
127143
name = R.string.markdown_textfield_autocomplete_category_users,
128-
items = (0 until 10).map {
144+
items = (0 until 1).map {
145+
AutoCompleteHint(
146+
hint = "Hint $it",
147+
replacementText = "",
148+
id = it.toString() + "a"
149+
)
150+
}
151+
),
152+
AutoCompleteCategory(
153+
name = R.string.markdown_textfield_autocomplete_category_users,
154+
items = (0 until 1).map {
155+
AutoCompleteHint(
156+
hint = "Hint $it",
157+
replacementText = "",
158+
id = it.toString() + "b"
159+
)
160+
}
161+
),
162+
AutoCompleteCategory(
163+
name = R.string.markdown_textfield_autocomplete_category_users,
164+
items = (0 until 1).map {
129165
AutoCompleteHint(
130166
hint = "Hint $it",
131167
replacementText = "",
132-
id = it.toString()
168+
id = it.toString() + "c"
133169
)
134170
}
135171
)

0 commit comments

Comments
 (0)