Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f5ddc45 authored by Andy Scherzinger's avatar Andy Scherzinger Committed by GitHub
Browse files

Merge pull request #90 from nextcloud/pushWarning

Support for checking if old login is used
parents 5805bdbe a98a1cc6
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -122,7 +122,8 @@ public class RemoteOperationResult implements Serializable {
        NOT_AVAILABLE,
        MAINTENANCE_MODE,
        LOCK_FAILED,
        DELAYED_IN_POWER_SAVE_MODE
        DELAYED_IN_POWER_SAVE_MODE,
        ACCOUNT_USES_STANDARD_PASSWORD
    }

    private boolean mSuccess = false;
+16 −2
Original line number Diff line number Diff line
@@ -55,10 +55,12 @@ public class RegisterAccountDeviceForNotificationsOperation extends RemoteOperat
    // JSON Node names
    private static final String NODE_OCS = "ocs";
    private static final String NODE_DATA = "data";
    private static final String MESSAGE = "message";

    private static final String PUSH_TOKEN_HASH = "pushTokenHash";
    private static final String DEVICE_PUBLIC_KEY = "devicePublicKey";
    private static final String PROXY_SERVER = "proxyServer";
    private static final String INVALID_SESSION_TOKEN = "INVALID_SESSION_TOKEN";

    private String pushTokenHash;
    private String devicePublicKey;
@@ -100,9 +102,13 @@ public class RegisterAccountDeviceForNotificationsOperation extends RemoteOperat
                // Parse the response
                pushResponse = parseResult(response);
                result.setPushResponseData(pushResponse);
            } else {
                if (isInvalidSessionToken(response)) {
                    result = new RemoteOperationResult(RemoteOperationResult.ResultCode.ACCOUNT_USES_STANDARD_PASSWORD);
                } else {
                    result = new RemoteOperationResult(false, status, post.getResponseHeaders());
                }
            }

        } catch (Exception e) {
            result = new RemoteOperationResult(e);
@@ -127,6 +133,14 @@ public class RegisterAccountDeviceForNotificationsOperation extends RemoteOperat
        return gson.fromJson(jsonDataObject, pushResponseType);
    }

    private boolean isInvalidSessionToken(String response) {
        JsonParser jsonParser = new JsonParser();
        JsonObject jsonObject = (JsonObject)jsonParser.parse(response);
        String message = jsonObject.getAsJsonObject(NODE_OCS).getAsJsonObject(NODE_DATA).get(MESSAGE).getAsString();

        return INVALID_SESSION_TOKEN.equals(message);
    }

    private boolean isSuccess(int status) {
        return (status == HttpStatus.SC_OK || status == HttpStatus.SC_CREATED);
    }