Skip to content

Commit 6979085

Browse files
committed
2 parents 6e30541 + 076289e commit 6979085

File tree

41 files changed

+1650
-260
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1650
-260
lines changed

analytics/src/main/java/com/anytypeio/anytype/analytics/props/UserProperty.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@ sealed class UserProperty {
88
val tier: String
99
get() = when (tierId) {
1010
0 -> "None"
11+
4 -> "Builder"
12+
5 -> "Co-Creator"
1113
20 -> "Explorer"
1214
21 -> "Starter"
1315
22 -> "Pioneer"
14-
4 -> "Builder"
15-
5 -> "Co-Creator"
16+
31 -> "Free"
17+
40 -> "Plus"
18+
41 -> "PlusMonthly"
19+
42 -> "Pro"
20+
43 -> "ProMonthly"
21+
44 -> "Ultra"
22+
45 -> "UltraMonthly"
1623
else -> "Custom"
1724
}
1825
}

app/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
version.versionMajor=0
22
version.versionMinor=42
3-
version.versionPatch=3
3+
version.versionPatch=5
44
version.useDatedVersionName=false

app/src/main/java/com/anytypeio/anytype/di/feature/PrimitivesObjectTypeDI.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.anytypeio.anytype.domain.relations.CreateRelation
3232
import com.anytypeio.anytype.domain.resources.StringResourceProvider
3333
import com.anytypeio.anytype.domain.search.SubscriptionEventChannel
3434
import com.anytypeio.anytype.domain.types.CreateObjectType
35+
import com.anytypeio.anytype.domain.workspace.SpaceManager
3536
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeVmParams
3637
import com.anytypeio.anytype.feature_object_type.viewmodel.CreateObjectTypeVMFactory
3738
import com.anytypeio.anytype.feature_object_type.viewmodel.CreateTypeVmParams
@@ -196,6 +197,7 @@ interface ObjectTypeDependencies : ComponentDependencies {
196197
fun provideEventChannel(): EventChannel
197198
fun provideStringResourceProvider(): StringResourceProvider
198199
fun dispatcher(): Dispatcher<Payload>
200+
fun spaceManager(): SpaceManager
199201
}
200202

201203
//region Space Types Screen
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
package com.anytypeio.anytype.ui.home
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.clickable
5+
import androidx.compose.foundation.layout.Arrangement
6+
import androidx.compose.foundation.layout.Column
7+
import androidx.compose.foundation.layout.Row
8+
import androidx.compose.foundation.layout.Spacer
9+
import androidx.compose.foundation.layout.fillMaxWidth
10+
import androidx.compose.foundation.layout.height
11+
import androidx.compose.foundation.layout.padding
12+
import androidx.compose.foundation.layout.size
13+
import androidx.compose.foundation.layout.width
14+
import androidx.compose.foundation.shape.RoundedCornerShape
15+
import androidx.compose.material.Text
16+
import androidx.compose.runtime.Composable
17+
import androidx.compose.ui.Alignment
18+
import androidx.compose.ui.Modifier
19+
import androidx.compose.ui.res.colorResource
20+
import androidx.compose.ui.res.stringResource
21+
import androidx.compose.ui.text.style.TextOverflow
22+
import androidx.compose.ui.unit.dp
23+
import androidx.compose.ui.unit.sp
24+
import com.anytypeio.anytype.R
25+
import com.anytypeio.anytype.core_models.ObjectWrapper
26+
import com.anytypeio.anytype.core_models.Relations
27+
import com.anytypeio.anytype.core_models.chats.Chat
28+
import com.anytypeio.anytype.core_models.chats.NotificationState
29+
import com.anytypeio.anytype.core_ui.views.BodySemiBold
30+
import com.anytypeio.anytype.core_ui.views.PreviewTitle2Medium
31+
import com.anytypeio.anytype.core_ui.views.Relations2
32+
import com.anytypeio.anytype.core_ui.views.Relations3
33+
import com.anytypeio.anytype.core_ui.views.Title3
34+
import com.anytypeio.anytype.core_ui.widgets.ListWidgetObjectIcon
35+
import com.anytypeio.anytype.data.auth.repo.config.GatewayProvider
36+
import com.anytypeio.anytype.domain.config.ConfigStorage
37+
import com.anytypeio.anytype.domain.misc.UrlBuilder
38+
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
39+
import com.anytypeio.anytype.domain.objects.getTypeOfObject
40+
import com.anytypeio.anytype.domain.primitives.FieldParser
41+
import com.anytypeio.anytype.other.BasicLogger
42+
import com.anytypeio.anytype.presentation.mapper.objectIcon
43+
import com.anytypeio.anytype.presentation.objects.ObjectIcon
44+
import com.anytypeio.anytype.presentation.vault.VaultSpaceView
45+
import com.anytypeio.anytype.ui.vault.UnreadIndicatorsRow
46+
import com.anytypeio.anytype.ui.vault.buildChatContentWithInlineIcons
47+
import com.anytypeio.anytype.ui.vault.getChatTextColor
48+
49+
/**
50+
* Compact chat widget card for home screen and widgets.
51+
*
52+
* Features:
53+
* - 72dp height (compact vs 96dp vault cards)
54+
* - 40dp icon size (compact vs 64dp vault cards)
55+
* - Chat object icon (not space icon)
56+
* - Unread counts from chat preview state (not space-aggregated)
57+
* - Single-line message preview with creator name
58+
* - Unread badges (message count + mention icon)
59+
*
60+
*/
61+
@Composable
62+
fun ChatWidgetCard(
63+
modifier: Modifier = Modifier,
64+
chatIcon: ObjectIcon,
65+
chatName: String,
66+
creatorName: String? = null,
67+
messageText: String? = null,
68+
messageTime: String? = null,
69+
attachmentPreviews: List<VaultSpaceView.AttachmentPreview> = emptyList(),
70+
unreadMessageCount: Int,
71+
unreadMentionCount: Int,
72+
chatNotificationState: NotificationState,
73+
onClick: () -> Unit
74+
) {
75+
76+
Row(
77+
modifier = modifier
78+
.fillMaxWidth()
79+
.height(72.dp)
80+
.background(
81+
color = colorResource(id = R.color.background_secondary),
82+
shape = RoundedCornerShape(16.dp)
83+
)
84+
.clickable(onClick = onClick)
85+
.padding(vertical = 12.dp),
86+
verticalAlignment = Alignment.CenterVertically
87+
) {
88+
// Chat icon (40dp)
89+
ListWidgetObjectIcon(
90+
icon = chatIcon,
91+
modifier = Modifier
92+
.padding(start = 16.dp)
93+
.size(48.dp),
94+
iconSize = 48.dp
95+
)
96+
97+
Spacer(modifier = Modifier.width(12.dp))
98+
99+
// Chat content
100+
Column(
101+
modifier = Modifier
102+
.weight(1f)
103+
.padding(end = 16.dp),
104+
verticalArrangement = Arrangement.spacedBy(2.dp)
105+
) {
106+
// Line 1: Chat Name + Time
107+
Row(
108+
modifier = Modifier.fillMaxWidth(),
109+
verticalAlignment = Alignment.CenterVertically
110+
) {
111+
// Determine text color for chat name
112+
val chatNameColor = getChatTextColor(
113+
notificationMode = chatNotificationState,
114+
unreadMessageCount = unreadMessageCount,
115+
unreadMentionCount = unreadMentionCount
116+
)
117+
118+
Text(
119+
text = chatName,
120+
style = PreviewTitle2Medium,
121+
color = chatNameColor,
122+
maxLines = 1,
123+
overflow = TextOverflow.Ellipsis,
124+
modifier = Modifier.weight(1f)
125+
)
126+
127+
if (messageTime != null) {
128+
Spacer(modifier = Modifier.width(6.dp))
129+
Text(
130+
text = messageTime,
131+
style = Relations3,
132+
color = colorResource(id = R.color.text_secondary)
133+
)
134+
}
135+
}
136+
137+
// Line 2: Message Preview + Indicators
138+
Row(
139+
modifier = Modifier.fillMaxWidth(),
140+
verticalAlignment = Alignment.CenterVertically
141+
) {
142+
// Determine text color for message preview
143+
val textColor = getChatTextColor(
144+
notificationMode = chatNotificationState,
145+
unreadMessageCount = unreadMessageCount,
146+
unreadMentionCount = unreadMentionCount
147+
)
148+
149+
val (chatText, inlineContent) = buildChatContentWithInlineIcons(
150+
creatorName = creatorName,
151+
messageText = messageText,
152+
attachmentPreviews = attachmentPreviews,
153+
fallbackSubtitle = "", // Empty fallback for now
154+
singleLineFormat = true,
155+
textColor = textColor
156+
)
157+
158+
Text(
159+
text = chatText,
160+
inlineContent = inlineContent,
161+
modifier = Modifier.weight(1f),
162+
maxLines = 1,
163+
lineHeight = 18.sp,
164+
overflow = TextOverflow.Ellipsis,
165+
color = textColor
166+
)
167+
168+
// Unread indicators (mention icon + message count badge)
169+
if (unreadMessageCount > 0 || unreadMentionCount > 0) {
170+
Spacer(modifier = Modifier.width(6.dp))
171+
UnreadIndicatorsRow(
172+
unreadMessageCount = unreadMessageCount,
173+
unreadMentionCount = unreadMentionCount,
174+
notificationMode = chatNotificationState,
175+
isPinned = false
176+
)
177+
}
178+
}
179+
}
180+
}
181+
}
182+

0 commit comments

Comments
 (0)