From b1e0b9af33bbb12e35e3545ebee1b3c460fc1264 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Tue, 29 Dec 2020 06:45:29 +0100 Subject: [PATCH] sdk 0.87.0. Show confirmation for unfollow. --- app/build.gradle | 4 +- .../java/io/lbry/browser/MainActivity.java | 11 +++ .../browser/ui/channel/ChannelFragment.java | 78 +++++++++++------- .../ui/findcontent/FileViewFragment.java | 80 ++++++++++++------- app/src/main/res/values/strings.xml | 2 + 5 files changed, 114 insertions(+), 61 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 628b0cc6..d5ad5f52 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -131,8 +131,8 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' - __32bitImplementation 'io.lbry:lbrysdk32:0.86.1' - __64bitImplementation 'io.lbry:lbrysdk64:0.86.1' + __32bitImplementation 'io.lbry:lbrysdk32:0.87.0' + __64bitImplementation 'io.lbry:lbrysdk64:0.87.0' } apply plugin: 'com.google.gms.google-services' diff --git a/app/src/main/java/io/lbry/browser/MainActivity.java b/app/src/main/java/io/lbry/browser/MainActivity.java index 991ce942..2c060485 100644 --- a/app/src/main/java/io/lbry/browser/MainActivity.java +++ b/app/src/main/java/io/lbry/browser/MainActivity.java @@ -3091,6 +3091,17 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener String action = intent.getAction(); if (LbrynetService.ACTION_STOP_SERVICE.equals(action)) { MainActivity.this.receivedStopService = true; + + // STOP is meant to close everything, + // So destroy the player at this point (even with background play enabled) + if (appPlayer != null) { + playerNotificationManager.setPlayer(null); + stopExoplayer(); + nowPlayingClaim = null; + nowPlayingClaimUrl = null; + nowPlayingClaimBitmap = null; + } + MainActivity.this.finish(); } else if (LbrynetService.LBRY_SDK_SERVICE_STARTED.equals(action)) { // Rebuild the service notification diff --git a/app/src/main/java/io/lbry/browser/ui/channel/ChannelFragment.java b/app/src/main/java/io/lbry/browser/ui/channel/ChannelFragment.java index 75750775..f7bb34e3 100644 --- a/app/src/main/java/io/lbry/browser/ui/channel/ChannelFragment.java +++ b/app/src/main/java/io/lbry/browser/ui/channel/ChannelFragment.java @@ -252,37 +252,22 @@ public class ChannelFragment extends BaseFragment implements FetchChannelsListen return; } - subscribing = true; boolean isFollowing = Lbryio.isFollowing(claim); - Subscription subscription = Subscription.fromClaim(claim); - view.setEnabled(false); - new ChannelSubscribeTask(getContext(), claim.getClaimId(), subscription, isFollowing, new ChannelSubscribeTask.ChannelSubscribeHandler() { - @Override - public void onSuccess() { - if (isFollowing) { - Lbryio.removeSubscription(subscription); - Lbryio.removeCachedResolvedSubscription(claim); - } else { - Lbryio.addSubscription(subscription); - Lbryio.addCachedResolvedSubscription(claim); - } - buttonFollowUnfollow.setEnabled(true); - subscribing = false; - checkIsFollowing(); - FollowingFragment.resetClaimSearchContent = true; - - Context context = getContext(); - if (context != null) { - context.sendBroadcast(new Intent(MainActivity.ACTION_SAVE_SHARED_USER_STATE)); - } - } - - @Override - public void onError(Exception exception) { - buttonFollowUnfollow.setEnabled(true); - subscribing = false; - } - }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + if (isFollowing) { + Context context = getContext(); + AlertDialog.Builder builder = new AlertDialog.Builder(context). + setTitle(R.string.confirm_unfollow). + setMessage(R.string.confirm_unfollow_message) + .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + doFollowUnfollow(isFollowing, view); + } + }).setNegativeButton(R.string.no, null); + builder.show(); + } else { + doFollowUnfollow(isFollowing, view); + } } } }); @@ -290,6 +275,39 @@ public class ChannelFragment extends BaseFragment implements FetchChannelsListen return root; } + private void doFollowUnfollow(boolean isFollowing, View view) { + subscribing = true; + Subscription subscription = Subscription.fromClaim(claim); + view.setEnabled(false); + new ChannelSubscribeTask(getContext(), claim.getClaimId(), subscription, isFollowing, new ChannelSubscribeTask.ChannelSubscribeHandler() { + @Override + public void onSuccess() { + if (isFollowing) { + Lbryio.removeSubscription(subscription); + Lbryio.removeCachedResolvedSubscription(claim); + } else { + Lbryio.addSubscription(subscription); + Lbryio.addCachedResolvedSubscription(claim); + } + buttonFollowUnfollow.setEnabled(true); + subscribing = false; + checkIsFollowing(); + FollowingFragment.resetClaimSearchContent = true; + + Context context = getContext(); + if (context != null) { + context.sendBroadcast(new Intent(MainActivity.ACTION_SAVE_SHARED_USER_STATE)); + } + } + + @Override + public void onError(Exception exception) { + buttonFollowUnfollow.setEnabled(true); + subscribing = false; + } + }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + private void deleteCurrentClaim() { if (claim != null) { Helper.setViewVisibility(layoutDisplayArea, View.GONE); diff --git a/app/src/main/java/io/lbry/browser/ui/findcontent/FileViewFragment.java b/app/src/main/java/io/lbry/browser/ui/findcontent/FileViewFragment.java index 805c21f1..3c52114b 100644 --- a/app/src/main/java/io/lbry/browser/ui/findcontent/FileViewFragment.java +++ b/app/src/main/java/io/lbry/browser/ui/findcontent/FileViewFragment.java @@ -824,42 +824,64 @@ public class FileViewFragment extends BaseFragment implements private View.OnClickListener followUnfollowListener = new View.OnClickListener() { @Override - public void onClick(View view) { + public void onClick(final View view) { if (claim != null && claim.getSigningChannel() != null) { Claim publisher = claim.getSigningChannel(); boolean isFollowing = Lbryio.isFollowing(publisher); - Subscription subscription = Subscription.fromClaim(publisher); - view.setEnabled(false); - Context context = getContext(); - new ChannelSubscribeTask(context, publisher.getClaimId(), subscription, isFollowing, new ChannelSubscribeTask.ChannelSubscribeHandler() { - @Override - public void onSuccess() { - if (isFollowing) { - Lbryio.removeSubscription(subscription); - Lbryio.removeCachedResolvedSubscription(publisher); - } else { - Lbryio.addSubscription(subscription); - Lbryio.addCachedResolvedSubscription(publisher); - } - view.setEnabled(true); - checkIsFollowing(); - FollowingFragment.resetClaimSearchContent = true; - - // Save shared user state - if (context != null) { - context.sendBroadcast(new Intent(MainActivity.ACTION_SAVE_SHARED_USER_STATE)); - } - } - - @Override - public void onError(Exception exception) { - view.setEnabled(true); - } - }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + if (isFollowing) { + // show unfollow confirmation + Context context = getContext(); + AlertDialog.Builder builder = new AlertDialog.Builder(context). + setTitle(R.string.confirm_unfollow). + setMessage(R.string.confirm_unfollow_message) + .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + doFollowUnfollow(isFollowing, view); + } + }).setNegativeButton(R.string.no, null); + builder.show(); + } else { + doFollowUnfollow(isFollowing, view); + } } } }; + private void doFollowUnfollow(boolean isFollowing, View view) { + if (claim != null && claim.getSigningChannel() != null) { + Claim publisher = claim.getSigningChannel(); + Subscription subscription = Subscription.fromClaim(publisher); + view.setEnabled(false); + Context context = getContext(); + new ChannelSubscribeTask(context, publisher.getClaimId(), subscription, isFollowing, new ChannelSubscribeTask.ChannelSubscribeHandler() { + @Override + public void onSuccess() { + if (isFollowing) { + Lbryio.removeSubscription(subscription); + Lbryio.removeCachedResolvedSubscription(publisher); + } else { + Lbryio.addSubscription(subscription); + Lbryio.addCachedResolvedSubscription(publisher); + } + view.setEnabled(true); + checkIsFollowing(); + FollowingFragment.resetClaimSearchContent = true; + + // Save shared user state + if (context != null) { + context.sendBroadcast(new Intent(MainActivity.ACTION_SAVE_SHARED_USER_STATE)); + } + } + + @Override + public void onError(Exception exception) { + view.setEnabled(true); + } + }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + } + private void resolveUrl(String url) { resolving = true; Helper.setViewVisibility(layoutDisplayArea, View.INVISIBLE); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fba9edfa..c900a781 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -111,6 +111,8 @@ reposted You will receive all notifications You will not receive notifications for this channel + Stop following channel? + Are you sure you want to stop following this channel? %1$s follower %1$s followers