sdk 0.87.0. Show confirmation for unfollow.

This commit is contained in:
Akinwale Ariwodola 2020-12-29 06:45:29 +01:00
parent ee1d090e62
commit b1e0b9af33
5 changed files with 114 additions and 61 deletions

View file

@ -131,8 +131,8 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
__32bitImplementation 'io.lbry:lbrysdk32:0.86.1' __32bitImplementation 'io.lbry:lbrysdk32:0.87.0'
__64bitImplementation 'io.lbry:lbrysdk64:0.86.1' __64bitImplementation 'io.lbry:lbrysdk64:0.87.0'
} }
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'

View file

@ -3091,6 +3091,17 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
String action = intent.getAction(); String action = intent.getAction();
if (LbrynetService.ACTION_STOP_SERVICE.equals(action)) { if (LbrynetService.ACTION_STOP_SERVICE.equals(action)) {
MainActivity.this.receivedStopService = true; 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(); MainActivity.this.finish();
} else if (LbrynetService.LBRY_SDK_SERVICE_STARTED.equals(action)) { } else if (LbrynetService.LBRY_SDK_SERVICE_STARTED.equals(action)) {
// Rebuild the service notification // Rebuild the service notification

View file

@ -252,37 +252,22 @@ public class ChannelFragment extends BaseFragment implements FetchChannelsListen
return; return;
} }
subscribing = true;
boolean isFollowing = Lbryio.isFollowing(claim); boolean isFollowing = Lbryio.isFollowing(claim);
Subscription subscription = Subscription.fromClaim(claim); if (isFollowing) {
view.setEnabled(false); Context context = getContext();
new ChannelSubscribeTask(getContext(), claim.getClaimId(), subscription, isFollowing, new ChannelSubscribeTask.ChannelSubscribeHandler() { AlertDialog.Builder builder = new AlertDialog.Builder(context).
@Override setTitle(R.string.confirm_unfollow).
public void onSuccess() { setMessage(R.string.confirm_unfollow_message)
if (isFollowing) { .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
Lbryio.removeSubscription(subscription); @Override
Lbryio.removeCachedResolvedSubscription(claim); public void onClick(DialogInterface dialogInterface, int i) {
} else { doFollowUnfollow(isFollowing, view);
Lbryio.addSubscription(subscription); }
Lbryio.addCachedResolvedSubscription(claim); }).setNegativeButton(R.string.no, null);
} builder.show();
buttonFollowUnfollow.setEnabled(true); } else {
subscribing = false; doFollowUnfollow(isFollowing, view);
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);
} }
} }
}); });
@ -290,6 +275,39 @@ public class ChannelFragment extends BaseFragment implements FetchChannelsListen
return root; 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() { private void deleteCurrentClaim() {
if (claim != null) { if (claim != null) {
Helper.setViewVisibility(layoutDisplayArea, View.GONE); Helper.setViewVisibility(layoutDisplayArea, View.GONE);

View file

@ -824,42 +824,64 @@ public class FileViewFragment extends BaseFragment implements
private View.OnClickListener followUnfollowListener = new View.OnClickListener() { private View.OnClickListener followUnfollowListener = new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(final View view) {
if (claim != null && claim.getSigningChannel() != null) { if (claim != null && claim.getSigningChannel() != null) {
Claim publisher = claim.getSigningChannel(); Claim publisher = claim.getSigningChannel();
boolean isFollowing = Lbryio.isFollowing(publisher); boolean isFollowing = Lbryio.isFollowing(publisher);
Subscription subscription = Subscription.fromClaim(publisher); if (isFollowing) {
view.setEnabled(false); // show unfollow confirmation
Context context = getContext(); Context context = getContext();
new ChannelSubscribeTask(context, publisher.getClaimId(), subscription, isFollowing, new ChannelSubscribeTask.ChannelSubscribeHandler() { AlertDialog.Builder builder = new AlertDialog.Builder(context).
@Override setTitle(R.string.confirm_unfollow).
public void onSuccess() { setMessage(R.string.confirm_unfollow_message)
if (isFollowing) { .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
Lbryio.removeSubscription(subscription); @Override
Lbryio.removeCachedResolvedSubscription(publisher); public void onClick(DialogInterface dialogInterface, int i) {
} else { doFollowUnfollow(isFollowing, view);
Lbryio.addSubscription(subscription); }
Lbryio.addCachedResolvedSubscription(publisher); }).setNegativeButton(R.string.no, null);
} builder.show();
view.setEnabled(true); } else {
checkIsFollowing(); doFollowUnfollow(isFollowing, view);
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 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) { private void resolveUrl(String url) {
resolving = true; resolving = true;
Helper.setViewVisibility(layoutDisplayArea, View.INVISIBLE); Helper.setViewVisibility(layoutDisplayArea, View.INVISIBLE);

View file

@ -111,6 +111,8 @@
<string name="reposted">reposted</string> <string name="reposted">reposted</string>
<string name="receive_all_notifications">You will receive all notifications</string> <string name="receive_all_notifications">You will receive all notifications</string>
<string name="receive_no_notifications">You will not receive notifications for this channel</string> <string name="receive_no_notifications">You will not receive notifications for this channel</string>
<string name="confirm_unfollow">Stop following channel?</string>
<string name="confirm_unfollow_message">Are you sure you want to stop following this channel?</string>
<plurals name="follower_count"> <plurals name="follower_count">
<item quantity="one">%1$s follower</item> <item quantity="one">%1$s follower</item>
<item quantity="other">%1$s followers</item> <item quantity="other">%1$s followers</item>