From 6c44e503db3956959797bb68bdceec15db8d0921 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Thu, 25 Jun 2020 21:16:41 +0100 Subject: [PATCH] fix subscriptions sync (#947) --- .../java/io/lbry/browser/MainActivity.java | 17 ++++++++--- .../io/lbry/browser/data/DatabaseHelper.java | 4 +++ .../browser/tasks/MergeSubscriptionsTask.java | 29 +++++++++++++------ 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/io/lbry/browser/MainActivity.java b/app/src/main/java/io/lbry/browser/MainActivity.java index 65809429..a31597de 100644 --- a/app/src/main/java/io/lbry/browser/MainActivity.java +++ b/app/src/main/java/io/lbry/browser/MainActivity.java @@ -47,9 +47,7 @@ import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.BitmapImageViewTarget; import com.bumptech.glide.request.target.CustomTarget; -import com.bumptech.glide.request.target.ImageViewTarget; import com.bumptech.glide.request.transition.Transition; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.SimpleExoPlayer; @@ -109,7 +107,6 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -296,6 +293,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener public static final String PREFERENCE_KEY_INTERNAL_WALLET_RECEIVE_ADDRESS = "io.lbry.browser.preference.internal.WalletReceiveAddress"; public static final String PREFERENCE_KEY_INTERNAL_REWARDS_NOT_INTERESTED = "io.lbry.browser.preference.internal.RewardsNotInterested"; public static final String PREFERENCE_KEY_INTERNAL_NEW_ANDROID_REWARD_CLAIMED = "io.lbry.browser.preference.internal.NewAndroidRewardClaimed"; + public static final String PREFERENCE_KEY_INTERNAL_INITIAL_SUBSCRIPTION_MERGE_DONE = "io.lbry.browser.preference.internal.InitialSubscriptionMergeDone"; public static final String PREFERENCE_KEY_INTERNAL_FIRST_RUN_COMPLETED = "io.lbry.browser.preference.internal.FirstRunCompleted"; public static final String PREFERENCE_KEY_INTERNAL_FIRST_AUTH_COMPLETED = "io.lbry.browser.preference.internal.FirstAuthCompleted"; @@ -554,6 +552,11 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener return sp.getBoolean(PREFERENCE_KEY_BACKGROUND_PLAYBACK, false); } + public boolean initialSubscriptionMergeDone() { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); + return sp.getBoolean(PREFERENCE_KEY_INTERNAL_INITIAL_SUBSCRIPTION_MERGE_DONE, false); + } + private void initSpecialRouteMap() { specialRouteFragmentClassMap = new HashMap<>(); specialRouteFragmentClassMap.put("about", AboutFragment.class); @@ -1780,13 +1783,19 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener // reload subscriptions if wallet fragment is FollowingFragment //openNavFragments.get MergeSubscriptionsTask mergeTask = new MergeSubscriptionsTask( - subscriptions, MainActivity.this, new MergeSubscriptionsTask.MergeSubscriptionsHandler() { + subscriptions, + !initialSubscriptionMergeDone(), + MainActivity.this, new MergeSubscriptionsTask.MergeSubscriptionsHandler() { @Override public void onSuccess(List subscriptions, List diff) { Lbryio.subscriptions = new ArrayList<>(subscriptions); if (diff != null && diff.size() > 0) { saveSharedUserState(); } + + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); + sp.edit().putBoolean(PREFERENCE_KEY_INTERNAL_INITIAL_SUBSCRIPTION_MERGE_DONE, true).apply(); + for (Fragment fragment : openNavFragments.values()) { if (fragment instanceof FollowingFragment) { // reload local subscriptions diff --git a/app/src/main/java/io/lbry/browser/data/DatabaseHelper.java b/app/src/main/java/io/lbry/browser/data/DatabaseHelper.java index 2087a7ff..e755b10b 100644 --- a/app/src/main/java/io/lbry/browser/data/DatabaseHelper.java +++ b/app/src/main/java/io/lbry/browser/data/DatabaseHelper.java @@ -64,6 +64,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { }; private static final String SQL_INSERT_SUBSCRIPTION = "REPLACE INTO subscriptions (channel_name, url) VALUES (?, ?)"; + private static final String SQL_CLEAR_SUBSCRIPTIONS = "DELETE FROM subscriptions"; private static final String SQL_DELETE_SUBSCRIPTION = "DELETE FROM subscriptions WHERE url = ?"; private static final String SQL_GET_SUBSCRIPTIONS = "SELECT channel_name, url FROM subscriptions"; @@ -230,6 +231,9 @@ public class DatabaseHelper extends SQLiteOpenHelper { public static void deleteSubscription(Subscription subscription, SQLiteDatabase db) { db.execSQL(SQL_DELETE_SUBSCRIPTION, new Object[] { subscription.getUrl() }); } + public static void clearSubscriptions(SQLiteDatabase db) { + db.execSQL(SQL_CLEAR_SUBSCRIPTIONS, null); + } public static List getSubscriptions(SQLiteDatabase db) { List subscriptions = new ArrayList<>(); Cursor cursor = null; diff --git a/app/src/main/java/io/lbry/browser/tasks/MergeSubscriptionsTask.java b/app/src/main/java/io/lbry/browser/tasks/MergeSubscriptionsTask.java index 3d3a49c8..c82d728a 100644 --- a/app/src/main/java/io/lbry/browser/tasks/MergeSubscriptionsTask.java +++ b/app/src/main/java/io/lbry/browser/tasks/MergeSubscriptionsTask.java @@ -34,9 +34,11 @@ public class MergeSubscriptionsTask extends AsyncTask diff; private MergeSubscriptionsHandler handler; private Exception error; + private boolean replaceLocal; - public MergeSubscriptionsTask(List base, Context context, MergeSubscriptionsHandler handler) { + public MergeSubscriptionsTask(List base, boolean replaceLocal, Context context, MergeSubscriptionsHandler handler) { this.base = base; + this.replaceLocal = replaceLocal; this.context = context; this.handler = handler; } @@ -53,10 +55,17 @@ public class MergeSubscriptionsTask extends AsyncTask