Browse Source

Merge pull request #2150 from nextcloud/fix-push-once-again

Fix push
Andy Scherzinger 7 years ago
parent
commit
23d7b96e6b

+ 11 - 0
src/generic/java/com/owncloud/android/utils/PushUtils.java

@@ -20,10 +20,21 @@
 
 package com.owncloud.android.utils;
 
+import android.content.Context;
+
+import com.owncloud.android.MainApp;
+import com.owncloud.android.db.PreferenceManager;
+
 public class PushUtils {
     public static final String KEY_PUSH = "push";
 
     public static void pushRegistrationToServer() {
         // do nothing
     }
+
+    public static void reinitKeys() {
+        Context context = MainApp.getAppContext();
+        PreferenceManager.setKeysReInit(context);
+    }
+
 }

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

@@ -48,6 +48,7 @@ import com.owncloud.android.lib.resources.notifications.UnregisterAccountDeviceF
 import com.owncloud.android.lib.resources.notifications.models.PushResponse;
 
 import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.io.FileUtils;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -339,6 +340,24 @@ public class PushUtils {
         return -1;
     }
 
+    public static void reinitKeys() {
+        Context context = MainApp.getAppContext();
+        Account[] accounts = AccountUtils.getAccounts(context);
+        for (Account account : accounts) {
+            deleteRegistrationForAccount(account);
+        }
+
+        String keyPath = context.getDir("nc-keypair", Context.MODE_PRIVATE).getAbsolutePath();
+        File privateKeyFile = new File(keyPath, "push_key.priv");
+        File publicKeyFile = new File(keyPath, "push_key.pub");
+
+        FileUtils.deleteQuietly(privateKeyFile);
+        FileUtils.deleteQuietly(publicKeyFile);
+
+        pushRegistrationToServer();
+        PreferenceManager.setKeysReInit(context);
+    }
+
     private static void migratePushKeys() {
         Context context = MainApp.getAppContext();
 

+ 9 - 0
src/main/java/com/owncloud/android/db/PreferenceManager.java

@@ -55,6 +55,7 @@ public abstract class PreferenceManager {
     private static final String PREF__LEGACY_CLEAN = "legacyClean";
     public static final String PREF__KEYS_MIGRATION = "keysMigration";
     private static final String PREF__FIX_STORAGE_PATH = "storagePathFix";
+    private static final String PREF__KEYS_REINIT = "keysReinit";
     private static final String PREF__AUTO_UPLOAD_UPDATE_PATH = "autoUploadPathUpdate";
     private static final String PREF__PUSH_TOKEN = "pushToken";
     private static final String PREF__AUTO_UPLOAD_SPLIT_OUT = "autoUploadEntriesSplitOut";
@@ -63,6 +64,14 @@ public abstract class PreferenceManager {
     private static final String PREF__FOLDER_LAYOUT = "folder_layout";
     private static final String KEY_FAB_EVER_CLICKED = "FAB_EVER_CLICKED";
 
+    public static void setKeysReInit(Context context) {
+        saveBooleanPreference(context, PREF__KEYS_REINIT, true);
+    }
+
+    public static boolean getKeysReInit(Context context) {
+        return getDefaultSharedPreferences(context).getBoolean(PREF__KEYS_REINIT, false);
+    }
+
     public static void setPushToken(Context context, String pushToken) {
         saveStringPreferenceNow(context, PREF__PUSH_TOKEN, pushToken);
     }

+ 5 - 2
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -60,7 +60,6 @@ import android.view.ViewTreeObserver;
 import android.widget.EditText;
 import android.widget.ImageView;
 
-import com.getbase.floatingactionbutton.AddFloatingActionButton;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -2197,7 +2196,11 @@ public class FileDisplayActivity extends HookActivity
 
     @Subscribe(threadMode = ThreadMode.BACKGROUND)
     public void onMessageEvent(TokenPushEvent event) {
-        PushUtils.pushRegistrationToServer();
+        if (!PreferenceManager.getKeysReInit(getApplicationContext())) {
+            PushUtils.reinitKeys();
+        } else {
+            PushUtils.pushRegistrationToServer();
+        }
     }
 
     @Override

+ 10 - 0
src/versionDev/java/com/owncloud/android/utils/PushUtils.java

@@ -20,10 +20,20 @@
 
 package com.owncloud.android.utils;
 
+import android.content.Context;
+
+import com.owncloud.android.MainApp;
+import com.owncloud.android.db.PreferenceManager;
+
 public class PushUtils {
     public static final String KEY_PUSH = "push";
 
     public static void pushRegistrationToServer() {
         // do nothing
     }
+
+    public static void reinitKeys() {
+        Context context = MainApp.getAppContext();
+        PreferenceManager.setKeysReInit(context);
+    }
 }