diff --git a/build.gradle b/build.gradle
index c698a56833c2..078c88b779c2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -184,7 +184,7 @@ dependencies {
/// dependencies for app building
implementation name: 'touch-image-view'
implementation 'com.android.support:multidex:1.0.2'
- compile 'com.github.nextcloud:android-library:1.0.30'
+ compile 'com.github.nextcloud:android-library:1.0.31'
implementation "com.android.support:support-v4:${supportLibraryVersion}"
implementation "com.android.support:design:${supportLibraryVersion}"
implementation 'com.jakewharton:disklrucache:2.0.2'
diff --git a/src/gplay/java/com/owncloud/android/utils/PushUtils.java b/src/gplay/java/com/owncloud/android/utils/PushUtils.java
index 908a8be7ed4e..9bc50f57818f 100644
--- a/src/gplay/java/com/owncloud/android/utils/PushUtils.java
+++ b/src/gplay/java/com/owncloud/android/utils/PushUtils.java
@@ -247,6 +247,10 @@ public static void pushRegistrationToServer() {
arbitraryDataProvider.storeOrUpdateKeyValue(account.name, KEY_PUSH,
gson.toJson(pushArbitraryData));
}
+ } else if (remoteOperationResult.getCode() ==
+ RemoteOperationResult.ResultCode.ACCOUNT_USES_STANDARD_PASSWORD) {
+ arbitraryDataProvider.storeOrUpdateKeyValue(account.name,
+ AccountUtils.ACCOUNT_USES_STANDARD_PASSWORD, "true");
}
} catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) {
Log_OC.d(TAG, "Failed to find an account");
diff --git a/src/main/java/com/owncloud/android/authentication/AccountUtils.java b/src/main/java/com/owncloud/android/authentication/AccountUtils.java
index 4dec94fa9c13..0d16f4c30c9f 100644
--- a/src/main/java/com/owncloud/android/authentication/AccountUtils.java
+++ b/src/main/java/com/owncloud/android/authentication/AccountUtils.java
@@ -52,6 +52,7 @@ public class AccountUtils {
public static final int ACCOUNT_VERSION = 1;
public static final int ACCOUNT_VERSION_WITH_PROPER_ID = 2;
+ public static final String ACCOUNT_USES_STANDARD_PASSWORD = "ACCOUNT_USES_STANDARD_PASSWORD";
/**
* Can be used to get the currently selected ownCloud {@link Account} in the
diff --git a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java
index b44ca5d8c058..e2567afb9694 100644
--- a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java
+++ b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java
@@ -30,6 +30,7 @@
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.support.design.widget.BottomNavigationView;
+import android.support.design.widget.Snackbar;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
@@ -44,6 +45,7 @@
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.datamodel.ArbitraryDataProvider;
import com.owncloud.android.lib.common.OwnCloudAccount;
import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
@@ -55,6 +57,7 @@
import com.owncloud.android.ui.adapter.NotificationListAdapter;
import com.owncloud.android.utils.AnalyticsUtils;
import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.PushUtils;
import com.owncloud.android.utils.ThemeUtils;
import java.io.IOException;
@@ -140,6 +143,32 @@ public void onRefresh() {
}
});
+ Context context = getApplicationContext();
+ String pushUrl = context.getResources().getString(R.string.push_server_url);
+
+ if (pushUrl.isEmpty()) {
+ Snackbar.make(emptyContentContainer, R.string.push_notifications_not_implemented,
+ Snackbar.LENGTH_INDEFINITE).show();
+ } else {
+ Account account = AccountUtils.getCurrentOwnCloudAccount(context);
+ ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(getContentResolver());
+
+ boolean usesOldLogin = arbitraryDataProvider.getBooleanValue(account.name,
+ AccountUtils.ACCOUNT_USES_STANDARD_PASSWORD);
+
+ if (usesOldLogin) {
+ Snackbar.make(emptyContentContainer, R.string.push_notifications_old_login,
+ Snackbar.LENGTH_INDEFINITE).show();
+ } else {
+ String pushValue = arbitraryDataProvider.getValue(account.name, PushUtils.KEY_PUSH);
+
+ if (pushValue == null || pushValue.isEmpty()) {
+ Snackbar.make(emptyContentContainer, R.string.push_notifications_temp_error,
+ Snackbar.LENGTH_INDEFINITE).show();
+ }
+ }
+ }
+
setupContent();
}
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 4cbd39d7fa3c..25ecd30a59d4 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -706,4 +706,7 @@
Get source code
License
GNU General Public License, version 2
+ Push notifications disabled due to dependencies on proprietary Google Play services.
+ No push notifications due to outdated login session. Please consider re-adding your account.
+ Push notifications currently not available.