Skip to content

Commit 79a4aa8

Browse files
Merge pull request #1811 from nextcloud/busy
support busy status
2 parents bd13350 + b30c2ab commit 79a4aa8

File tree

7 files changed

+36
-12
lines changed

7 files changed

+36
-12
lines changed

library/src/androidTest/java/com/owncloud/android/GetCapabilitiesRemoteOperationIT.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,6 @@
99
*/
1010
package com.owncloud.android;
1111

12-
import static org.junit.Assert.assertEquals;
13-
import static org.junit.Assert.assertFalse;
14-
import static org.junit.Assert.assertNotNull;
15-
import static org.junit.Assert.assertNotSame;
16-
import static org.junit.Assert.assertSame;
17-
import static org.junit.Assert.assertTrue;
18-
1912
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
2013
import com.owncloud.android.lib.resources.status.CapabilityBooleanType;
2114
import com.owncloud.android.lib.resources.status.E2EVersion;
@@ -26,6 +19,13 @@
2619

2720
import org.junit.Test;
2821

22+
import static org.junit.Assert.assertEquals;
23+
import static org.junit.Assert.assertFalse;
24+
import static org.junit.Assert.assertNotNull;
25+
import static org.junit.Assert.assertNotSame;
26+
import static org.junit.Assert.assertSame;
27+
import static org.junit.Assert.assertTrue;
28+
2929
/**
3030
* Class to test GetRemoteCapabilitiesOperation
3131
*/
@@ -153,11 +153,16 @@ private void checkCapability(OCCapability capability, String userId) {
153153
}
154154

155155
// e2e
156-
assertNotSame(capability.getEndToEndEncryptionApiVersion(), E2EVersion.UNKNOWN);
156+
assertNotSame(E2EVersion.UNKNOWN, capability.getEndToEndEncryptionApiVersion());
157157

158158
// recommendations
159159
if (capability.getVersion().isNewerOrEqual(NextcloudVersion.nextcloud_31)) {
160160
assertTrue(capability.getRecommendations().isTrue());
161161
}
162+
163+
// busy
164+
if (capability.getVersion().isNewerOrEqual(NextcloudVersion.nextcloud_32)) {
165+
assertTrue(capability.getUserStatusSupportsBusy().isTrue());
166+
}
162167
}
163168
}

library/src/main/java/com/owncloud/android/lib/resources/status/GetCapabilitiesRemoteOperation.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public class GetCapabilitiesRemoteOperation extends RemoteOperation {
144144
private static final String NODE_USER_STATUS = "user_status";
145145
private static final String NODE_USER_STATUS_ENABLED = "enabled";
146146
private static final String NODE_USER_STATUS_SUPPORTS_EMOJI = "supports_emoji";
147+
private static final String NODE_USER_STATUS_SUPPORTS_BUSY = "supports_busy";
147148

148149
// groupfolders
149150
private static final String NODE_GROUPFOLDERS = "groupfolders";
@@ -697,9 +698,16 @@ private OCCapability parseResponse(String response) throws JSONException {
697698
} else {
698699
capability.setUserStatusSupportsEmoji(CapabilityBooleanType.FALSE);
699700
}
701+
702+
if (userStatusCapability.getBoolean(NODE_USER_STATUS_SUPPORTS_BUSY)) {
703+
capability.setUserStatusSupportsBusy(CapabilityBooleanType.TRUE);
704+
} else {
705+
capability.setUserStatusSupportsBusy(CapabilityBooleanType.FALSE);
706+
}
700707
} else {
701708
capability.setUserStatus(CapabilityBooleanType.FALSE);
702709
capability.setUserStatusSupportsEmoji(CapabilityBooleanType.FALSE);
710+
capability.setUserStatusSupportsBusy(CapabilityBooleanType.FALSE);
703711
}
704712

705713
// groupfolders

library/src/main/java/com/owncloud/android/lib/resources/status/NextcloudVersion.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ class NextcloudVersion : OwnCloudVersion {
4141

4242
@JvmField
4343
val nextcloud_31 = NextcloudVersion(0x1F000000) // 31.0
44+
45+
@JvmField
46+
val nextcloud_32 = NextcloudVersion(0x20000000) // 32.0
4447
}
4548

4649
constructor(string: String) : super(string)

library/src/main/java/com/owncloud/android/lib/resources/status/OCCapability.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ class OCCapability {
9292
// user status
9393
var userStatus = CapabilityBooleanType.UNKNOWN
9494
var userStatusSupportsEmoji = CapabilityBooleanType.UNKNOWN
95+
var userStatusSupportsBusy = CapabilityBooleanType.UNKNOWN
9596

9697
// Groupfolders
9798
var groupfolders = CapabilityBooleanType.UNKNOWN

library/src/main/java/com/owncloud/android/lib/resources/users/SetUserDefinedCustomStatusMessageRemoteOperation.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
import org.apache.commons.httpclient.HttpStatus;
1818

19+
import androidx.annotation.Nullable;
20+
1921
/**
2022
* Remote operation performing setting user defined custom status message
2123
*/
@@ -28,7 +30,7 @@ public class SetUserDefinedCustomStatusMessageRemoteOperation extends OCSRemoteO
2830
private final String statusIcon;
2931
private final Long clearAt;
3032

31-
public SetUserDefinedCustomStatusMessageRemoteOperation(String message, String statusIcon, Long clearAt) {
33+
public SetUserDefinedCustomStatusMessageRemoteOperation(String message, String statusIcon, @Nullable Long clearAt) {
3234
this.message = message;
3335
this.statusIcon = statusIcon;
3436
this.clearAt = clearAt;
@@ -46,7 +48,9 @@ public RemoteOperationResult<Void> run(NextcloudClient client) {
4648
// request body
4749
JSONRequestBody jsonRequestBody = new JSONRequestBody("message", message);
4850
jsonRequestBody.put("statusIcon", statusIcon);
49-
jsonRequestBody.put("clearAt", clearAt.toString());
51+
if (clearAt != null) {
52+
jsonRequestBody.put("clearAt", clearAt.toString());
53+
}
5054

5155
// remote request
5256
putMethod = new PutMethod(client.getBaseUri() + SET_STATUS_URL, true, jsonRequestBody.get());

library/src/main/java/com/owncloud/android/lib/resources/users/Status.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import android.os.Parcelable
1313
class Status(
1414
val status: StatusType,
1515
val message: String?,
16-
val icon: String,
16+
val icon: String?,
1717
val clearAt: Long
1818
) : Parcelable {
1919
constructor(parcel: Parcel) : this(

library/src/main/java/com/owncloud/android/lib/resources/users/StatusType.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,8 @@ enum class StatusType(
2525
AWAY("away"),
2626

2727
@SerializedName("invisible")
28-
INVISIBLE("invisible")
28+
INVISIBLE("invisible"),
29+
30+
@SerializedName("busy")
31+
BUSY("busy")
2932
}

0 commit comments

Comments
 (0)