Browse Source

Merge pull request #1560 from nextcloud/pushWarning

Show info messages for push
Andy Scherzinger 7 years ago
parent
commit
f2cdedd15c

+ 1 - 1
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'

+ 4 - 0
src/gplay/java/com/owncloud/android/utils/PushUtils.java

@@ -247,6 +247,10 @@ public class PushUtils {
                                     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");

+ 1 - 0
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

+ 29 - 0
src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java

@@ -30,6 +30,7 @@ import android.content.Intent;
 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 android.widget.TextView;
 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.lib.resources.notifications.models.Notification;
 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 class NotificationsActivity extends FileActivity {
             }
         });
 
+        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();
     }
 

+ 3 - 0
src/main/res/values/strings.xml

@@ -706,4 +706,7 @@
     <string name="prefs_sourcecode">Get source code</string>
     <string name="prefs_license">License</string>
     <string name="prefs_gpl_v2" translatable="false">GNU General Public License, version 2</string>
+    <string name="push_notifications_not_implemented">Push notifications disabled due to dependencies on proprietary Google Play services.</string>
+    <string name="push_notifications_old_login">No push notifications due to outdated login session. Please consider re-adding your account.</string>
+    <string name="push_notifications_temp_error">Push notifications currently not available.</string>
 </resources>