From 8ee19b3f5c15fbb35fc13c30d5010ccd680c6c0f Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Tue, 21 Jul 2020 19:49:22 +0100 Subject: [PATCH] Sub sync fix (#965) * improve sub sync merge handling logic * do not try to re-subscribe local syncs remotely whhen merging --- .../java/io/lbry/browser/MainActivity.java | 5 +-- .../browser/tasks/MergeSubscriptionsTask.java | 45 +++++++++---------- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/io/lbry/browser/MainActivity.java b/app/src/main/java/io/lbry/browser/MainActivity.java index a6abf1c..cb523fc 100644 --- a/app/src/main/java/io/lbry/browser/MainActivity.java +++ b/app/src/main/java/io/lbry/browser/MainActivity.java @@ -2644,7 +2644,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener LbryAnalytics.logEvent(LbryAnalytics.EVENT_LBRY_NOTIFICATION_OPEN, bundle); } - private void registerServiceActionsReceiver() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(DownloadManager.ACTION_DOWNLOAD_EVENT); @@ -2806,9 +2805,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener JSONObject startupStatus = status.getJSONObject("startup_status"); sdkReady = startupStatus.getBoolean("file_manager") && startupStatus.getBoolean("wallet"); } - } catch (ConnectException ex) { - // pass - } catch (JSONException ex) { + } catch (ConnectException | JSONException ex) { // pass } 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 c82d728..ff48f5d 100644 --- a/app/src/main/java/io/lbry/browser/tasks/MergeSubscriptionsTask.java +++ b/app/src/main/java/io/lbry/browser/tasks/MergeSubscriptionsTask.java @@ -60,12 +60,12 @@ public class MergeSubscriptionsTask extends AsyncTask remoteUnsubs = new ArrayList<>(); + List finalRemoteSubs = new ArrayList<>(); + if (remoteSubs.size() > 0) { + for (int i = 0; i < remoteSubs.size(); i++) { + Subscription sub = remoteSubs.get(i); + if (!combined.contains(sub)) { Map options = new HashMap<>(); - String channelClaimId = uri.getChannelClaimId(); - String channelName = Helper.normalizeChannelName(local.getChannelName()); - if (!Helper.isNullOrEmpty(channelClaimId) && !Helper.isNullOrEmpty(channelName)) { - options.put("claim_id", channelClaimId); - options.put("channel_name", channelName); - Lbryio.parseResponse(Lbryio.call("subscription", "new", options, context)); + LbryUri uri = LbryUri.tryParse(sub.getUrl()); + if (uri != null) { + options.put("claim_id", uri.getChannelClaimId()); + Lbryio.parseResponse(Lbryio.call("subscription", "delete", options, context)); + remoteUnsubs.add(sub); + } else { + finalRemoteSubs.add(sub); } - } catch (LbryUriException | LbryioRequestException | LbryioResponseException ex) { - // pass - Log.e(TAG, String.format("subscription/new failed: %s", ex.getMessage()), ex); } } } @@ -115,8 +114,8 @@ public class MergeSubscriptionsTask extends AsyncTask