diff --git a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailFragment.kt index ee3a5268b50e..f02c2236eb06 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailFragment.kt @@ -185,6 +185,7 @@ class ActivityLogDetailFragment : Fragment(R.layout.activity_log_item_detail) { setActorIcon(activityLogModel?.actorIconUrl, activityLogModel?.showJetpackIcon) uiHelpers.setTextOrHide(activityActorName, activityLogModel?.actorName) uiHelpers.setTextOrHide(activityActorRole, activityLogModel?.actorRole) + uiHelpers.setTextOrHide(activityActorMetadata, activityLogModel?.actorMetadata) val spannable = activityLogModel?.content?.let { notificationsUtilsWrapper.getSpannableContentForRanges( diff --git a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailModel.kt index e9fd7bf83779..e49b1a8df00d 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/detail/ActivityLogDetailModel.kt @@ -10,6 +10,7 @@ data class ActivityLogDetailModel( val isRewindButtonVisible: Boolean, val actorName: String? = null, val actorRole: String? = null, + val actorMetadata: String? = null, val content: FormattableContent? = null, val summary: String? = null, val createdDate: String = "", diff --git a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogAdapter.kt b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogAdapter.kt index cc173266b2da..21ab3091e902 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogAdapter.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogAdapter.kt @@ -62,7 +62,9 @@ class ActivityLogAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ActivityLogViewHolder { return when (viewType) { ViewType.PROGRESS.id -> ProgressItemViewHolder(parent) - ViewType.EVENT.id -> EventItemViewHolder(parent, itemClickListener, secondaryActionClickListener) + ViewType.EVENT.id -> EventItemViewHolder( + parent, itemClickListener, secondaryActionClickListener, uiHelpers + ) ViewType.HEADER.id -> HeaderItemViewHolder(parent) ViewType.FOOTER.id -> FooterItemViewHolder(parent) ViewType.LOADING.id -> LoadingItemViewHolder(parent) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogListItem.kt b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogListItem.kt index 33f963428f4e..c71d3549a78b 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogListItem.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogListItem.kt @@ -31,7 +31,8 @@ sealed class ActivityLogListItem(val type: ViewType) { val date: Date, override val isButtonVisible: Boolean, val buttonIcon: Icon, - val isRestoreHidden: Boolean + val isRestoreHidden: Boolean, + val actorMetadata: String? = null ) : ActivityLogListItem(EVENT), IActionableItem { val formattedDate: String = date.toFormattedDateString() val icon = Icon.fromValue(gridIcon) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/EventItemViewHolder.kt b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/EventItemViewHolder.kt index d01fc9093468..cbada1494b87 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/EventItemViewHolder.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/EventItemViewHolder.kt @@ -12,19 +12,23 @@ import android.widget.TextView import org.wordpress.android.R import org.wordpress.android.ui.activitylog.list.ActivityLogListItem.Event import org.wordpress.android.ui.activitylog.list.ActivityLogListItem.SecondaryAction +import org.wordpress.android.ui.utils.UiHelpers import org.wordpress.android.util.ColorUtils import org.wordpress.android.util.extensions.getColorResIdFromAttribute class EventItemViewHolder( parent: ViewGroup, private val itemClickListener: (ActivityLogListItem) -> Unit, - private val secondaryActionClickListener: (SecondaryAction, ActivityLogListItem) -> Boolean + private val secondaryActionClickListener: (SecondaryAction, ActivityLogListItem) -> Boolean, + private val uiHelpers: UiHelpers ) : ActivityLogViewHolder(parent, R.layout.activity_log_list_event_item) { private val summary: TextView = itemView.findViewById(R.id.action_summary) private val text: TextView = itemView.findViewById(R.id.action_text) private val thumbnail: ImageView = itemView.findViewById(R.id.action_icon) private val container: View = itemView.findViewById(R.id.activity_content_container) private val actionButton: ImageButton = itemView.findViewById(R.id.action_button) + private val metadataSeparator: TextView = itemView.findViewById(R.id.action_metadata_separator) + private val metadata: TextView = itemView.findViewById(R.id.action_metadata) override fun updateChanges(bundle: Bundle) { if (bundle.containsKey(ActivityLogDiffCallback.LIST_ITEM_BUTTON_VISIBILITY_KEY)) { @@ -41,6 +45,11 @@ class EventItemViewHolder( summary.text = activity.title text.text = activity.description + uiHelpers.setTextOrHide(metadata, activity.actorMetadata) + uiHelpers.updateVisibility( + metadataSeparator, activity.actorMetadata != null + ) + ColorUtils.setImageResourceWithTint( actionButton, activity.buttonIcon.drawable, diff --git a/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityActorExtensions.kt b/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityActorExtensions.kt new file mode 100644 index 000000000000..59d93df9f67d --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityActorExtensions.kt @@ -0,0 +1,18 @@ +package org.wordpress.android.viewmodel.activitylog + +import org.wordpress.android.R +import org.wordpress.android.fluxc.model.activity.ActivityLogModel +import org.wordpress.android.viewmodel.ResourceProvider + +fun ActivityLogModel.ActivityActor.formattedMcpMetadata( + resourceProvider: ResourceProvider +): String? { + val client = mcpClient + return if (isMCPAgent && !client.isNullOrEmpty()) { + resourceProvider.getString( + R.string.activity_log_mcp_agent_label, client + ) + } else { + null + } +} diff --git a/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModel.kt b/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModel.kt index 48cc26a42d39..873c58a2e510 100644 --- a/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModel.kt @@ -113,7 +113,7 @@ class ActivityLogDetailViewModel @Inject constructor( ?.toActivityLogDetailModel() ?.let { _item.value = it - }?: findAndPostActivityLogItemDetailViaDashboardCardsIfNeeded() + } ?: findAndPostActivityLogItemDetailViaDashboardCardsIfNeeded() } private fun findAndPostActivityLogItemDetailViaDashboardCardsIfNeeded() { @@ -138,20 +138,23 @@ class ActivityLogDetailViewModel @Inject constructor( } } - private fun ActivityLogModel.toActivityLogDetailModel() = - ActivityLogDetailModel( + private fun ActivityLogModel.toActivityLogDetailModel(): ActivityLogDetailModel { + val actorSnapshot = actor + return ActivityLogDetailModel( activityID = activityID, rewindId = rewindID, - actorIconUrl = actor?.avatarURL, - showJetpackIcon = actor?.showJetpackIcon(), + actorIconUrl = actorSnapshot?.avatarURL, + showJetpackIcon = actorSnapshot?.showJetpackIcon(), isRewindButtonVisible = rewindable ?: false, - actorName = actor?.displayName, - actorRole = actor?.role, + actorName = actorSnapshot?.displayName, + actorRole = actorSnapshot?.role, + actorMetadata = actorSnapshot?.formattedMcpMetadata(resourceProvider), content = content, summary = summary, createdDate = published.toFormattedDateString(), createdTime = published.toFormattedTimeString() ) + } private fun getMultisiteMessage(): SpannableString { val clickableText = resourceProvider.getString(R.string.activity_log_visit_our_documentation_page) diff --git a/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModel.kt b/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModel.kt index b5bf6b0d4f2b..e689441992ae 100644 --- a/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModel.kt @@ -204,7 +204,14 @@ class ActivityLogViewModel @Inject constructor( model = model, rewindDisabled = withRestoreProgressItem || withBackupDownloadProgressItem, isRestoreHidden = restoreEvent.isRestoreHidden - ) + ).let { event -> + val metadata = model.actor?.formattedMcpMetadata(resourceProvider) + if (metadata != null) { + event.copy(actorMetadata = metadata) + } else { + event + } + } val lastItem = items.lastOrNull() as? ActivityLogListItem.Event if (lastItem == null || lastItem.formattedDate != currentItem.formattedDate) { items.add(ActivityLogListItem.Header(currentItem.formattedDate)) diff --git a/WordPress/src/main/res/layout/activity_log_item_detail.xml b/WordPress/src/main/res/layout/activity_log_item_detail.xml index f522881a0cf9..ef32b426faa1 100644 --- a/WordPress/src/main/res/layout/activity_log_item_detail.xml +++ b/WordPress/src/main/res/layout/activity_log_item_detail.xml @@ -37,10 +37,9 @@ + + - + android:orientation="horizontal"> + + + + + + + + diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml index 7ea1fbe5214c..c7280f431075 100644 --- a/WordPress/src/main/res/values/strings.xml +++ b/WordPress/src/main/res/values/strings.xml @@ -1253,6 +1253,9 @@ Activity Log + + via %1$s + \u00B7 Activity icon Event Activity Log action button diff --git a/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModelTest.kt index 570021d43672..6a9c686e858f 100644 --- a/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogDetailViewModelTest.kt @@ -16,9 +16,11 @@ import org.mockito.ArgumentMatchers.anyInt import org.mockito.Mock import org.mockito.junit.MockitoJUnitRunner import org.mockito.kotlin.any +import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.whenever import org.wordpress.android.BaseUnitTest +import org.wordpress.android.R import org.wordpress.android.fluxc.Dispatcher import org.wordpress.android.fluxc.model.SiteModel import org.wordpress.android.fluxc.model.activity.ActivityLogModel @@ -461,6 +463,75 @@ class ActivityLogDetailViewModelTest : BaseUnitTest() { } } + @Test + fun `given mcp agent with client, when view model starts, then metadata is shown`() { + val mcpLabel = "via Claude" + val mcpActivity = activityLogModel.copy( + actor = activityLogModel.actor?.copy( + isMCPAgent = true, + mcpClient = "Claude" + ) + ) + whenever(activityLogStore.getActivityLogForSite(site)) + .thenReturn(listOf(mcpActivity)) + whenever( + resourceProvider.getString( + eq(R.string.activity_log_mcp_agent_label), any() + ) + ).thenReturn(mcpLabel) + + startViewModel() + + assertNotNull(lastEmittedItem) + assertEquals(mcpLabel, lastEmittedItem?.actorMetadata) + } + + @Test + fun `given mcp agent with empty client, when view model starts, then metadata is null`() { + val mcpActivity = activityLogModel.copy( + actor = activityLogModel.actor?.copy( + isMCPAgent = true, + mcpClient = "" + ) + ) + whenever(activityLogStore.getActivityLogForSite(site)) + .thenReturn(listOf(mcpActivity)) + + startViewModel() + + assertNotNull(lastEmittedItem) + assertNull(lastEmittedItem?.actorMetadata) + } + + @Test + fun `given non-mcp agent with client, when view model starts, then metadata is null`() { + val mcpActivity = activityLogModel.copy( + actor = activityLogModel.actor?.copy( + isMCPAgent = false, + mcpClient = "Claude" + ) + ) + whenever(activityLogStore.getActivityLogForSite(site)) + .thenReturn(listOf(mcpActivity)) + + startViewModel() + + assertNotNull(lastEmittedItem) + assertNull(lastEmittedItem?.actorMetadata) + } + + @Test + fun `given no actor, when view model starts, then metadata is null`() { + val noActorActivity = activityLogModel.copy(actor = null) + whenever(activityLogStore.getActivityLogForSite(site)) + .thenReturn(listOf(noActorActivity)) + + startViewModel() + + assertNotNull(lastEmittedItem) + assertNull(lastEmittedItem?.actorMetadata) + } + private fun startViewModel( site: SiteModel = this.site, activityID: String = this.activityID, diff --git a/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModelTest.kt index 97172760d576..19e270141b3b 100644 --- a/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/viewmodel/activitylog/ActivityLogViewModelTest.kt @@ -1455,6 +1455,72 @@ class ActivityLogViewModelTest : BaseUnitTest() { assertEquals(snackbarMessages.firstOrNull(), BACKED_UP_NO_DATE) } + /* MCP METADATA */ + + @Test + fun `given mcp agent activity, when events loaded, then event has metadata`() = test { + val mcpLabel = "via Claude" + val mcpActivity = activity().copy( + actor = ActivityLogModel.ActivityActor( + displayName = "Bot", + type = "Application", + wpcomUserID = null, + avatarURL = null, + role = "admin", + isMCPAgent = true, + mcpClient = "Claude" + ) + ) + whenever(store.getActivityLogForSite(site, false, rewindableOnly)) + .thenReturn(listOf(mcpActivity)) + whenever( + resourceProvider.getString( + eq(R.string.activity_log_mcp_agent_label), any() + ) + ).thenReturn(mcpLabel) + + viewModel.reloadEvents(done = true) + + val eventItems = viewModel.events.value + ?.filterIsInstance() + assertNotNull(eventItems) + assertEquals(mcpLabel, eventItems?.first()?.actorMetadata) + } + + @Test + fun `given non-mcp activity, when events loaded, then event has no metadata`() = test { + viewModel.reloadEvents(done = true) + + val eventItems = viewModel.events.value + ?.filterIsInstance() + assertNotNull(eventItems) + assertNull(eventItems?.first()?.actorMetadata) + } + + @Test + fun `given mcp agent with empty client, when events loaded, then event has no metadata`() = test { + val mcpActivity = activity().copy( + actor = ActivityLogModel.ActivityActor( + displayName = "Bot", + type = "Application", + wpcomUserID = null, + avatarURL = null, + role = "admin", + isMCPAgent = true, + mcpClient = "" + ) + ) + whenever(store.getActivityLogForSite(site, false, rewindableOnly)) + .thenReturn(listOf(mcpActivity)) + + viewModel.reloadEvents(done = true) + + val eventItems = viewModel.events.value + ?.filterIsInstance() + assertNotNull(eventItems) + assertNull(eventItems?.first()?.actorMetadata) + } + /* PRIVATE */ private fun firstActivity() = activity() diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/activity/ActivityLogModel.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/activity/ActivityLogModel.kt index afb6d71a06ee..cce4d528e880 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/activity/ActivityLogModel.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/activity/ActivityLogModel.kt @@ -21,6 +21,8 @@ data class ActivityLogModel( val type: String?, val wpcomUserID: Long?, val avatarURL: String?, - val role: String? + val role: String?, + val isMCPAgent: Boolean = false, + val mcpClient: String? = null ) } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClient.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClient.kt index a87bf811b2b5..64f6a1a8a302 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClient.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClient.kt @@ -341,7 +341,9 @@ class ActivityLogRestClient @Inject constructor( it.type, it.wpcom_user_id, it.icon?.url, - it.role + it.role, + it.is_mcp_agent ?: false, + it.mcp_client ) } ) @@ -455,13 +457,16 @@ class ActivityLogRestClient @Inject constructor( val activity_id: String? ) + @Suppress("LongParameterList") class Actor( val type: String?, val name: String?, val external_user_id: Long?, val wpcom_user_id: Long?, val icon: Icon?, - val role: String? + val role: String?, + val is_mcp_agent: Boolean?, + val mcp_client: String? ) class Icon(val type: String?, val url: String?, val width: Int?, val height: Int?) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClient.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClient.kt index af923415365a..637afab2d4c2 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClient.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClient.kt @@ -280,7 +280,9 @@ fun ActivitiesResponse.toActivityCardModel(): ActivityCardModel { act.type, act.wpcom_user_id, act.icon?.url, - act.role + act.role, + act.is_mcp_agent ?: false, + act.mcp_client ) } ) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/ActivityLogSqlUtils.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/ActivityLogSqlUtils.kt index 73bfcc7010fc..77cf491843ab 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/ActivityLogSqlUtils.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/ActivityLogSqlUtils.kt @@ -196,7 +196,9 @@ class ActivityLogSqlUtils @Inject constructor(private val formattableContentMapp actorType = this.actor?.type, wpcomUserID = this.actor?.wpcomUserID, avatarURL = this.actor?.avatarURL, - role = this.actor?.role + role = this.actor?.role, + mcpAgent = this.actor?.isMCPAgent, + mcpClient = this.actor?.mcpClient ) } @@ -267,7 +269,9 @@ class ActivityLogSqlUtils @Inject constructor(private val formattableContentMapp @Column var actorType: String? = null, @Column var wpcomUserID: Long? = null, @Column var avatarURL: String? = null, - @Column var role: String? = null + @Column var role: String? = null, + @Column var mcpAgent: Boolean? = null, + @Column var mcpClient: String? = null ) : Identifiable { constructor() : this(-1, 0, 0, "", "", "", published = 0) @@ -286,7 +290,10 @@ class ActivityLogSqlUtils @Inject constructor(private val formattableContentMapp avatarURL != null || role != null ) { - ActivityLogModel.ActivityActor(displayName, actorType, wpcomUserID, avatarURL, role) + ActivityLogModel.ActivityActor( + displayName, actorType, wpcomUserID, avatarURL, role, + mcpAgent ?: false, mcpClient + ) } else { null } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/WellSqlConfig.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/WellSqlConfig.kt index a8f18b82a34f..1be581dfd347 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/WellSqlConfig.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/WellSqlConfig.kt @@ -41,7 +41,7 @@ open class WellSqlConfig : DefaultWellConfig { annotation class AddOn override fun getDbVersion(): Int { - return 211 + return 212 } override fun getDbName(): String { @@ -2089,6 +2089,11 @@ open class WellSqlConfig : DefaultWellConfig { 210 -> { db.execSQL("ALTER TABLE TermModel ADD IS_HIERARCHICAL BOOLEAN") } + + 211 -> { + db.execSQL("ALTER TABLE ActivityLog ADD MCP_AGENT BOOLEAN") + db.execSQL("ALTER TABLE ActivityLog ADD MCP_CLIENT TEXT") + } } } db.setTransactionSuccessful() diff --git a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityFixtures.kt b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityFixtures.kt index ae079ffeb8ec..0674aa6f6d2c 100644 --- a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityFixtures.kt +++ b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityFixtures.kt @@ -15,7 +15,9 @@ val ACTIVITY_RESPONSE = ActivityLogRestClient.ActivitiesResponse.ActivityRespons "dog.jpg", 100, 100), - "admin"), + "admin", + null, + null), "create a blog", Date(), ActivityLogRestClient.ActivitiesResponse.Generator(10.3f, 123), diff --git a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt index b846362c5629..9ea0c566fadc 100644 --- a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt +++ b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt @@ -159,7 +159,9 @@ private val ACTIVITY_RESPONSE_ACTOR = ActivitiesResponse.Actor( 10, 15, ACTIVITY_RESPONSE_ICON, - "admin" + "admin", + null, + null ) private val ACTIVITY_RESPONSE_GENERATOR = ActivitiesResponse.Generator(10.3f, 123) private val ACTIVITY_RESPONSE_PAGE = ActivitiesResponse.ActivityResponse( diff --git a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/store/dashboard/CardsStoreTest.kt b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/store/dashboard/CardsStoreTest.kt index 7e15e7b5c933..23a433419d38 100644 --- a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/store/dashboard/CardsStoreTest.kt +++ b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/store/dashboard/CardsStoreTest.kt @@ -183,7 +183,9 @@ private val ACTIVITY_RESPONSE_ACTOR = ActivitiesResponse.Actor( ACTIVITY_ACTOR_EXTERNAL_USER_ID, ACTIVITY_ACTOR_WPCOM_USER_ID, ACTIVITY_RESPONSE_ICON, - ACTIVITY_ACTOR_ROLE + ACTIVITY_ACTOR_ROLE, + null, + null ) private val ACTIVITY_RESPONSE_GENERATOR = ActivitiesResponse.Generator(10.3f, 123) private val ACTIVITY_RESPONSE_PAGE = ActivitiesResponse.ActivityResponse(