diff --git a/library/src/main/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperation.java b/library/src/main/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperation.java index bbc81109a2..bd5622d16b 100644 --- a/library/src/main/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperation.java +++ b/library/src/main/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperation.java @@ -70,6 +70,11 @@ public GetActivitiesRemoteOperation(long fileId, long lastGiven) { this.lastGiven = lastGiven; } + /** + * @deprecated an int cannot hold all activity IDs, use {@link #GetActivitiesRemoteOperation(long, long)} + * with a fileId of -1 instead + */ + @Deprecated public GetActivitiesRemoteOperation(int lastGiven) { this.lastGiven = lastGiven; } diff --git a/library/src/main/java/com/owncloud/android/lib/resources/activities/model/Activity.kt b/library/src/main/java/com/owncloud/android/lib/resources/activities/model/Activity.kt index 4e1399590f..3db5262395 100644 --- a/library/src/main/java/com/owncloud/android/lib/resources/activities/model/Activity.kt +++ b/library/src/main/java/com/owncloud/android/lib/resources/activities/model/Activity.kt @@ -16,8 +16,9 @@ import java.util.Date * Activity Data Model */ data class Activity( + // Accepts both a JSON number and a numeric string; Snowflake IDs need more than 32 bits @SerializedName("activity_id") - val activityId: Int, + val activityId: Long, val datetime: Date, // legacy purposes val date: Date, diff --git a/library/src/test/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperationTest.java b/library/src/test/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperationTest.java index d2ca51a63e..ccfea49514 100644 --- a/library/src/test/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperationTest.java +++ b/library/src/test/java/com/owncloud/android/lib/resources/activities/GetActivitiesRemoteOperationTest.java @@ -43,6 +43,22 @@ public void testParseActivities() { assertEquals("0", firstItem.getObjectId()); } + @Test + public void testParseActivityIdsBeyondInt() { + String activities = "{\"ocs\":{\"meta\":{\"status\":\"ok\",\"statuscode\":200,\"message\":\"OK\"}," + + "\"data\":[{\"activity_id\":130000000000000123,\"user\":\"test\"}," + + "{\"activity_id\":\"130000000000000124\",\"user\":\"test\"}," + + "{\"activity_id\":\"42\",\"user\":\"test\"}]}}"; + + GetActivitiesRemoteOperation sut = new GetActivitiesRemoteOperation(); + ArrayList activityList = sut.parseResult(activities); + + assertEquals(3, activityList.size()); + assertEquals(130000000000000123L, activityList.get(0).getActivityId()); + assertEquals(130000000000000124L, activityList.get(1).getActivityId()); + assertEquals(42L, activityList.get(2).getActivityId()); + } + @Test public void testEmptyString() { String activities = "";