Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*/
package com.owncloud.android.ui.activities.data.activities

import androidx.annotation.VisibleForTesting
import com.nextcloud.client.account.UserAccountManager
import com.nextcloud.common.NextcloudClient
import com.owncloud.android.MainApp
Expand Down Expand Up @@ -59,13 +60,7 @@ class ActivitiesServiceApiImpl(private val accountManager: UserAccountManager) :
val client = OwnCloudClientManagerFactory.getDefaultSingleton()
.getNextcloudClientFor(ocAccount, context)

val operation = if (lastGiven > 0) {
GetActivitiesRemoteOperation(lastGiven)
} else {
GetActivitiesRemoteOperation()
}

val result = operation.execute(client)
val result = createOperation(lastGiven).execute(client)

if (result.isSuccess && result.getData() != null) {
val data = result.getData()
Expand All @@ -87,5 +82,15 @@ class ActivitiesServiceApiImpl(private val accountManager: UserAccountManager) :

companion object {
private val TAG: String = ActivitiesServiceApiImpl::class.java.simpleName

// Without a file ID the operation does not filter the activities by file
private const val NO_FILE_ID = -1L

@VisibleForTesting
internal fun createOperation(lastGiven: Long): GetActivitiesRemoteOperation = if (lastGiven > 0) {
GetActivitiesRemoteOperation(NO_FILE_ID, lastGiven)
} else {
GetActivitiesRemoteOperation()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

package com.owncloud.android.ui.activities.data.activities

import com.owncloud.android.lib.resources.activities.GetActivitiesRemoteOperation
import org.junit.Assert.assertEquals
import org.junit.Test

class ActivitiesServiceApiImplTest {

private fun GetActivitiesRemoteOperation.longField(name: String): Long =
GetActivitiesRemoteOperation::class.java.getDeclaredField(name).let {
it.isAccessible = true
it.getLong(this)
}

@Test
fun firstPageHasNoFilter() {
val operation = ActivitiesServiceApiImpl.createOperation(0)

assertEquals(-1L, operation.longField("fileId"))
assertEquals(-1L, operation.longField("lastGiven"))
}

@Test
fun nextPageKeepsTheFullActivityIdWithoutFilteringByFile() {
val operation = ActivitiesServiceApiImpl.createOperation(SNOWFLAKE_ACTIVITY_ID)

assertEquals(-1L, operation.longField("fileId"))
assertEquals(SNOWFLAKE_ACTIVITY_ID, operation.longField("lastGiven"))
}

companion object {
// Snowflake IDs need more than 32 bits
private const val SNOWFLAKE_ACTIVITY_ID = 130_000_000_000_000_123L
}
}
Loading