diff --git a/.gitignore b/.gitignore
index 89567d4d81..3fd54201d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
/local.properties
/configuration.properties
/github.properties
+/apikeys.properties
.idea/*
!.idea/copyright
.DS_Store
@@ -11,4 +12,4 @@
/captures
.externalNativeBuild
ktlint
-.idea/*.xml
\ No newline at end of file
+.idea/*.xml
diff --git a/app/src/androidTest/java/com/anytypeio/anytype/features/relations/ObjectRelationListTest.kt b/app/src/androidTest/java/com/anytypeio/anytype/features/relations/ObjectRelationListTest.kt
index b2db74085e..0af2e552f2 100644
--- a/app/src/androidTest/java/com/anytypeio/anytype/features/relations/ObjectRelationListTest.kt
+++ b/app/src/androidTest/java/com/anytypeio/anytype/features/relations/ObjectRelationListTest.kt
@@ -21,6 +21,8 @@ import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.config.Gateway
import com.anytypeio.anytype.domain.dataview.interactor.ObjectRelationList
import com.anytypeio.anytype.domain.misc.UrlBuilder
+import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
+import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.mocking.MockDataFactory
import com.anytypeio.anytype.presentation.page.Editor
import com.anytypeio.anytype.presentation.page.editor.DetailModificationManager
@@ -64,6 +66,8 @@ class ObjectRelationListTest {
private lateinit var objectRelationList: ObjectRelationList
private lateinit var updateDetail: UpdateDetail
+ private lateinit var addToFeaturedRelations: AddToFeaturedRelations
+ private lateinit var removeFromFeaturedRelations: RemoveFromFeaturedRelations
private val ctx = MockDataFactory.randomUuid()
private val storage = Editor.Storage()
@@ -76,13 +80,17 @@ class ObjectRelationListTest {
urlBuilder = UrlBuilder(gateway)
objectRelationList = ObjectRelationList(repo)
updateDetail = UpdateDetail(repo)
+ addToFeaturedRelations = AddToFeaturedRelations(repo)
+ removeFromFeaturedRelations = RemoveFromFeaturedRelations(repo)
TestRelationListFragment.testVmFactory = ObjectRelationListViewModelFactory(
stores = storage,
urlBuilder = urlBuilder,
objectRelationList = objectRelationList,
dispatcher = dispatcher,
detailModificationManager = detailModificationManager,
- updateDetail = updateDetail
+ updateDetail = updateDetail,
+ addToFeaturedRelations = addToFeaturedRelations,
+ removeFromFeaturedRelations = removeFromFeaturedRelations
)
}
diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/DashboardDi.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/DashboardDi.kt
index b15c53f5b4..9cc0fd3da7 100644
--- a/app/src/main/java/com/anytypeio/anytype/di/feature/DashboardDi.kt
+++ b/app/src/main/java/com/anytypeio/anytype/di/feature/DashboardDi.kt
@@ -60,7 +60,8 @@ object HomeDashboardModule {
searchRecentObjects: SearchRecentObjects,
searchInboxObjects: SearchInboxObjects,
searchObjectSets: SearchObjectSets,
- getFlavourConfig: GetFlavourConfig
+ getFlavourConfig: GetFlavourConfig,
+ urlBuilder: UrlBuilder
): HomeDashboardViewModelFactory = HomeDashboardViewModelFactory(
getProfile = getProfile,
openDashboard = openDashboard,
@@ -76,7 +77,8 @@ object HomeDashboardModule {
searchInboxObjects = searchInboxObjects,
searchObjectSets = searchObjectSets,
analytics = analytics,
- getFlavourConfig = getFlavourConfig
+ getFlavourConfig = getFlavourConfig,
+ urlBuilder = urlBuilder
)
@JvmStatic
diff --git a/app/src/main/java/com/anytypeio/anytype/ui/desktop/DashboardAdapter.kt b/app/src/main/java/com/anytypeio/anytype/ui/desktop/DashboardAdapter.kt
index e248695504..1cd896038a 100644
--- a/app/src/main/java/com/anytypeio/anytype/ui/desktop/DashboardAdapter.kt
+++ b/app/src/main/java/com/anytypeio/anytype/ui/desktop/DashboardAdapter.kt
@@ -15,10 +15,8 @@ import com.anytypeio.anytype.core_utils.ext.invisible
import com.anytypeio.anytype.core_utils.ext.shift
import com.anytypeio.anytype.core_utils.ext.typeOf
import com.anytypeio.anytype.core_utils.ext.visible
-import com.anytypeio.anytype.emojifier.Emojifier
+import com.anytypeio.anytype.presentation.`object`.ObjectIcon
import com.anytypeio.anytype.presentation.desktop.DashboardView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.facebook.shimmer.ShimmerFrameLayout
import kotlinx.android.synthetic.main.item_dashboard_card_default.view.*
import kotlinx.android.synthetic.main.item_desktop_archive.view.*
@@ -137,8 +135,7 @@ class DashboardAdapter(
with(holder) {
bindTitle(item.title)
bindSubtitle(item.typeName)
- bindEmoji(item.emoji)
- bindImage(item.image, item.layout, item.title)
+ bindIcon(item.icon)
bindLoading(item.isLoading)
}
}
@@ -159,7 +156,7 @@ class DashboardAdapter(
with(holder) {
val item = data[position] as DashboardView.ObjectSet
bindTitle(item.title)
- bindEmoji(item.emoji)
+ bindIcon(item.icon)
bindLoading(item.isLoading)
}
}
@@ -217,10 +214,10 @@ class DashboardAdapter(
bindTitle(item.title)
}
if (payload.emojiChanged()) {
- bindEmoji(item.emoji)
+ bindIcon(item.icon)
}
if (payload.imageChanged()) {
- bindImage(item.image, item.layout, item.title)
+ bindIcon(item.icon)
}
if (payload.isLoadingChanged) {
bindLoading(item.isLoading)
@@ -259,10 +256,6 @@ class DashboardAdapter(
private val tvTitle = itemView.title
private val tvSubtitle = itemView.typeTitle
- private val ivEmoji = itemView.emojiIcon
- private val circleImage = itemView.circleImage
- private val rectangleImage = itemView.rectangleImage
- private val avatar = itemView.avatar
private val shimmer = itemView.shimmer
fun bindTitle(title: String?) {
@@ -276,6 +269,10 @@ class DashboardAdapter(
tvSubtitle.text = subtitle
}
+ fun bindIcon(icon: ObjectIcon) {
+ itemView.iconWidget.bind(icon)
+ }
+
fun bindLoading(isLoading: Boolean) {
if (isLoading) {
tvTitle.invisible()
@@ -287,65 +284,6 @@ class DashboardAdapter(
tvTitle.visible()
}
}
-
- fun bindEmoji(emoji: String?) {
- try {
- emoji?.let { unicode ->
- Glide
- .with(ivEmoji)
- .load(Emojifier.uri(unicode))
- .diskCacheStrategy(DiskCacheStrategy.ALL)
- .into(ivEmoji)
- } ?: run {
- ivEmoji.setImageDrawable(null)
- }
- } catch (e: Throwable) {
- Timber.e(e, "Could not set emoji icon")
- }
- }
-
- fun bindImage(
- image: String?,
- layout: ObjectType.Layout?,
- name: String?
- ) {
- when (layout) {
- ObjectType.Layout.BASIC -> bindRectangleImage(image)
- ObjectType.Layout.PROFILE -> {
- if (image != null) {
- avatar.invisible()
- bindCircleImage(image)
- } else {
- rectangleImage.invisible()
- avatar.visible()
- avatar.bind(name.orEmpty())
- }
- }
- else -> Timber.d("Skipping image bound")
- }
- }
-
- private fun bindCircleImage(image: String?) {
- image?.let { url ->
- Glide
- .with(circleImage)
- .load(url)
- .centerInside()
- .circleCrop()
- .into(circleImage)
- } ?: run { circleImage.setImageDrawable(null) }
- }
-
- private fun bindRectangleImage(image: String?) {
- Timber.d("Binding rectangle image: $image")
- image?.let { url ->
- Glide
- .with(rectangleImage)
- .load(url)
- .centerCrop()
- .into(rectangleImage)
- } ?: run { rectangleImage.setImageDrawable(null) }
- }
}
class DocumentWithoutIconViewHolder(parent: ViewGroup) : ViewHolder(
@@ -430,7 +368,6 @@ class DashboardAdapter(
class ObjectSetHolder(itemView: View) : ViewHolder(itemView) {
private val tvTitle = itemView.title
- private val ivEmoji = itemView.emojiIcon
private val shimmer = itemView.shimmer
fun bindLoading(isLoading: Boolean) {
@@ -452,18 +389,8 @@ class DashboardAdapter(
tvTitle.text = title
}
- fun bindEmoji(emoji: String?) {
- try {
- emoji?.let { unicode ->
- Glide
- .with(ivEmoji)
- .load(Emojifier.uri(unicode))
- .diskCacheStrategy(DiskCacheStrategy.ALL)
- .into(ivEmoji)
- }
- } catch (e: Throwable) {
- Timber.e(e, "Could not set emoji icon")
- }
+ fun bindIcon(icon: ObjectIcon) {
+ itemView.iconWidget.bind(icon)
}
}
}
diff --git a/app/src/main/res/layout/item_dashboard_card_default.xml b/app/src/main/res/layout/item_dashboard_card_default.xml
index cbba1daa5b..e2687e6a19 100644
--- a/app/src/main/res/layout/item_dashboard_card_default.xml
+++ b/app/src/main/res/layout/item_dashboard_card_default.xml
@@ -8,59 +8,18 @@
android:background="@drawable/ripple_dashboard_card"
app:cardElevation="0dp">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_marginTop="16dp"/>
32dp
68dp
124dp
+ 48dp
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 1862a637dd..e80a7fa181 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -154,6 +154,7 @@
- end
- @color/black
- 13sp
+ - 3