Search in sources :

Example 1 with ChannelSubscribeTask

use of com.odysee.app.tasks.lbryinc.ChannelSubscribeTask in project odysee-android by OdyseeTeam.

the class FileViewFragment method doFollowUnfollow.

private void doFollowUnfollow(boolean isFollowing, View view) {
    Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
    if (actualClaim != null && actualClaim.getSigningChannel() != null) {
        Claim publisher = actualClaim.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);
    }
}
Also used : AttributeProviderContext(org.commonmark.renderer.html.AttributeProviderContext) Context(android.content.Context) ChannelSubscribeTask(com.odysee.app.tasks.lbryinc.ChannelSubscribeTask) CustomTabsIntent(androidx.browser.customtabs.CustomTabsIntent) Intent(android.content.Intent) Subscription(com.odysee.app.model.lbryinc.Subscription) Claim(com.odysee.app.model.Claim) LbryRequestException(com.odysee.app.exceptions.LbryRequestException) JSONException(org.json.JSONException) LbryUriException(com.odysee.app.exceptions.LbryUriException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) LbryResponseException(com.odysee.app.exceptions.LbryResponseException) LbryioRequestException(com.odysee.app.exceptions.LbryioRequestException) LbryioResponseException(com.odysee.app.exceptions.LbryioResponseException) ApiCallException(com.odysee.app.exceptions.ApiCallException)

Example 2 with ChannelSubscribeTask

use of com.odysee.app.tasks.lbryinc.ChannelSubscribeTask in project odysee-android by OdyseeTeam.

the class ChannelFragment method onCreateView.

public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.fragment_channel, container, false);
    layoutLoadingState = root.findViewById(R.id.channel_view_loading_state);
    layoutNothingAtLocation = root.findViewById(R.id.container_nothing_at_location);
    layoutDisplayArea = root.findViewById(R.id.channel_view_claim_display_area);
    layoutResolving = root.findViewById(R.id.channel_view_loading_container);
    imageCover = root.findViewById(R.id.channel_view_cover_image);
    imageThumbnail = root.findViewById(R.id.channel_view_thumbnail);
    noThumbnailView = root.findViewById(R.id.channel_view_no_thumbnail);
    textAlpha = root.findViewById(R.id.channel_view_icon_alpha);
    textTitle = root.findViewById(R.id.channel_view_title);
    textFollowerCount = root.findViewById(R.id.channel_view_follower_count);
    buttonEdit = root.findViewById(R.id.channel_view_edit);
    buttonDelete = root.findViewById(R.id.channel_view_delete);
    buttonShare = root.findViewById(R.id.channel_view_share);
    buttonTip = root.findViewById(R.id.channel_view_tip);
    buttonReport = root.findViewById(R.id.channel_view_report);
    buttonFollowUnfollow = root.findViewById(R.id.channel_view_follow_unfollow);
    textFollow = root.findViewById(R.id.channel_view_text_follow);
    iconFollow = root.findViewById(R.id.channel_view_icon_follow);
    iconUnfollow = root.findViewById(R.id.channel_view_icon_unfollow);
    buttonBell = root.findViewById(R.id.channel_view_subscribe_notify);
    iconBell = root.findViewById(R.id.channel_view_icon_bell);
    blockUnblock = root.findViewById(R.id.channel_view_block_unblock);
    blockUnblockText = root.findViewById(R.id.channel_view_block_unblock_text);
    blockUnblock.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            boolean blocked = Lbryio.isChannelBlocked(claim);
            Context context = getContext();
            if (context instanceof MainActivity) {
                if (blocked) {
                    // handle unblock
                    ((MainActivity) context).handleUnblockChannel(claim);
                } else {
                    ((MainActivity) context).handleBlockChannel(claim);
                }
            }
        }
    });
    tabPager = root.findViewById(R.id.channel_view_pager);
    tabLayout = root.findViewById(R.id.channel_view_tabs);
    tabPager.setSaveEnabled(false);
    buttonEdit.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (claim != null) {
                Context context = getContext();
                if (context instanceof MainActivity) {
                    ((MainActivity) context).openChannelForm(claim);
                }
            }
        }
    });
    buttonDelete.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (claim != null) {
                Context c = getContext();
                if (c != null) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(c).setTitle(R.string.delete_channel).setMessage(R.string.confirm_delete_channel).setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            deleteCurrentClaim();
                        }
                    }).setNegativeButton(R.string.no, null);
                    builder.show();
                }
            }
        }
    });
    buttonShare.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (claim != null) {
                try {
                    String shareUrl = LbryUri.parse(!Helper.isNullOrEmpty(claim.getCanonicalUrl()) ? claim.getCanonicalUrl() : (!Helper.isNullOrEmpty(claim.getShortUrl()) ? claim.getShortUrl() : claim.getPermanentUrl())).toOdyseeString();
                    Intent shareIntent = new Intent();
                    shareIntent.setAction(Intent.ACTION_SEND);
                    shareIntent.setType("text/plain");
                    shareIntent.putExtra(Intent.EXTRA_TEXT, shareUrl);
                    MainActivity.startingShareActivity = true;
                    Intent shareUrlIntent = Intent.createChooser(shareIntent, getString(R.string.share_lbry_content));
                    shareUrlIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(shareUrlIntent);
                } catch (LbryUriException ex) {
                // pass
                }
            }
        }
    });
    buttonTip.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            MainActivity activity = (MainActivity) getActivity();
            if (activity != null && activity.isSignedIn()) {
                if (claim != null) {
                    CreateSupportDialogFragment dialog = CreateSupportDialogFragment.newInstance(claim, (amount, isTip) -> {
                        double sentAmount = amount.doubleValue();
                        View view1 = getView();
                        if (view1 != null) {
                            String message = getResources().getQuantityString(isTip ? R.plurals.you_sent_a_tip : R.plurals.you_sent_a_support, sentAmount == 1.0 ? 1 : 2, new DecimalFormat("#,###.##").format(sentAmount));
                            Snackbar.make(view1, message, Snackbar.LENGTH_LONG).show();
                        }
                    });
                    Context context = getContext();
                    if (context instanceof MainActivity) {
                        dialog.show(((MainActivity) context).getSupportFragmentManager(), CreateSupportDialogFragment.TAG);
                    }
                }
            } else {
                if (activity != null) {
                    activity.simpleSignIn(0);
                }
            }
        }
    });
    buttonReport.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (claim != null) {
                Context context = getContext();
                CustomTabColorSchemeParams.Builder ctcspb = new CustomTabColorSchemeParams.Builder();
                ctcspb.setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary));
                CustomTabColorSchemeParams ctcsp = ctcspb.build();
                CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder().setDefaultColorSchemeParams(ctcsp);
                CustomTabsIntent intent = builder.build();
                intent.launchUrl(context, Uri.parse(String.format("https://odysee.com/$/report_content?claimId=%s", claim.getClaimId())));
            }
        }
    });
    buttonBell.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (claim != null) {
                boolean isNotificationsDisabled = Lbryio.isNotificationsDisabled(claim);
                final Subscription subscription = Subscription.fromClaim(claim);
                subscription.setNotificationsDisabled(!isNotificationsDisabled);
                view.setEnabled(false);
                Context context = getContext();
                new ChannelSubscribeTask(context, claim.getClaimId(), subscription, false, new ChannelSubscribeTask.ChannelSubscribeHandler() {

                    @Override
                    public void onSuccess() {
                        view.setEnabled(true);
                        Lbryio.updateSubscriptionNotificationsDisabled(subscription);
                        Context context = getContext();
                        if (context instanceof MainActivity) {
                            ((MainActivity) context).showMessage(subscription.isNotificationsDisabled() ? R.string.receive_no_notifications : R.string.receive_all_notifications);
                        }
                        checkIsFollowing();
                        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);
            }
        }
    });
    buttonFollowUnfollow.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            MainActivity activity = (MainActivity) getActivity();
            if (activity != null && activity.isSignedIn()) {
                if (claim != null) {
                    if (subscribing) {
                        return;
                    }
                    boolean isFollowing = Lbryio.isFollowing(claim);
                    if (isFollowing) {
                        Context context = getContext();
                        if (context != null) {
                            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);
                    }
                }
            } else {
                if (activity != null) {
                    activity.simpleSignIn(0);
                }
            }
        }
    });
    return root;
}
Also used : Context(android.content.Context) AlertDialog(androidx.appcompat.app.AlertDialog) Bundle(android.os.Bundle) SneakyThrows(lombok.SneakyThrows) NonNull(androidx.annotation.NonNull) ChannelSubscribeTask(com.odysee.app.tasks.lbryinc.ChannelSubscribeTask) Uri(android.net.Uri) ImageView(android.widget.ImageView) CustomTabsIntent(androidx.browser.customtabs.CustomTabsIntent) FetchChannelsListener(com.odysee.app.listener.FetchChannelsListener) Handler(android.os.Handler) Map(java.util.Map) Fragment(androidx.fragment.app.Fragment) View(android.view.View) CreateSupportDialogFragment(com.odysee.app.dialog.CreateSupportDialogFragment) ContextCompat(androidx.core.content.ContextCompat) AsyncTask(android.os.AsyncTask) TabLayout(com.google.android.material.tabs.TabLayout) AbandonHandler(com.odysee.app.tasks.claim.AbandonHandler) Helper(com.odysee.app.utils.Helper) Claim(com.odysee.app.model.Claim) ViewGroup(android.view.ViewGroup) Lbryio(com.odysee.app.utils.Lbryio) List(java.util.List) ClaimCacheKey(com.odysee.app.model.ClaimCacheKey) TextView(android.widget.TextView) BaseFragment(com.odysee.app.ui.BaseFragment) Subscription(com.odysee.app.model.lbryinc.Subscription) Snackbar(com.google.android.material.snackbar.Snackbar) Context(android.content.Context) AlertDialog(androidx.appcompat.app.AlertDialog) ResolveTask(com.odysee.app.tasks.claim.ResolveTask) UrlSuggestion(com.odysee.app.model.UrlSuggestion) ClaimListResultHandler(com.odysee.app.tasks.claim.ClaimListResultHandler) Lbry(com.odysee.app.utils.Lbry) SolidIconView(com.odysee.app.ui.controls.SolidIconView) Intent(android.content.Intent) ViewPager2(androidx.viewpager2.widget.ViewPager2) LbryUriException(com.odysee.app.exceptions.LbryUriException) NumberFormat(java.text.NumberFormat) FragmentActivity(androidx.fragment.app.FragmentActivity) FragmentStateAdapter(androidx.viewpager2.adapter.FragmentStateAdapter) MainActivity(com.odysee.app.MainActivity) OutlineIconView(com.odysee.app.ui.controls.OutlineIconView) LbryUri(com.odysee.app.utils.LbryUri) FollowingFragment(com.odysee.app.ui.findcontent.FollowingFragment) DialogInterface(android.content.DialogInterface) CustomTabColorSchemeParams(androidx.browser.customtabs.CustomTabColorSchemeParams) RequestOptions(com.bumptech.glide.request.RequestOptions) LayoutInflater(android.view.LayoutInflater) DecimalFormat(java.text.DecimalFormat) FetchStatCountTask(com.odysee.app.tasks.lbryinc.FetchStatCountTask) Color(android.graphics.Color) Glide(com.bumptech.glide.Glide) LbryAnalytics(com.odysee.app.utils.LbryAnalytics) Collections(java.util.Collections) AbandonChannelTask(com.odysee.app.tasks.claim.AbandonChannelTask) TabLayoutMediator(com.google.android.material.tabs.TabLayoutMediator) R(com.odysee.app.R) DialogInterface(android.content.DialogInterface) CustomTabColorSchemeParams(androidx.browser.customtabs.CustomTabColorSchemeParams) DecimalFormat(java.text.DecimalFormat) CustomTabsIntent(androidx.browser.customtabs.CustomTabsIntent) Intent(android.content.Intent) MainActivity(com.odysee.app.MainActivity) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) SolidIconView(com.odysee.app.ui.controls.SolidIconView) OutlineIconView(com.odysee.app.ui.controls.OutlineIconView) LbryUriException(com.odysee.app.exceptions.LbryUriException) CreateSupportDialogFragment(com.odysee.app.dialog.CreateSupportDialogFragment) CustomTabsIntent(androidx.browser.customtabs.CustomTabsIntent) LbryUriException(com.odysee.app.exceptions.LbryUriException) ChannelSubscribeTask(com.odysee.app.tasks.lbryinc.ChannelSubscribeTask) Subscription(com.odysee.app.model.lbryinc.Subscription)

Example 3 with ChannelSubscribeTask

use of com.odysee.app.tasks.lbryinc.ChannelSubscribeTask in project odysee-android by OdyseeTeam.

the class FollowingFragment method onChannelItemDeselected.

public void onChannelItemDeselected(Claim claim) {
    // unsubscribe
    Subscription subscription = Subscription.fromClaim(claim);
    String channelClaimId = claim.getClaimId();
    ChannelSubscribeTask task = new ChannelSubscribeTask(getContext(), channelClaimId, subscription, true, new ChannelSubscribeTask.ChannelSubscribeHandler() {

        @Override
        public void onSuccess() {
            Lbryio.removeSubscription(subscription);
            Lbryio.removeCachedResolvedSubscription(claim);
            resetClaimSearchContent = true;
            fetchLoadedSubscriptions(subscriptionsShown);
            saveSharedUserState();
        }

        @Override
        public void onError(Exception error) {
        }
    });
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    updateSuggestedDoneButtonText();
}
Also used : ChannelSubscribeTask(com.odysee.app.tasks.lbryinc.ChannelSubscribeTask) Subscription(com.odysee.app.model.lbryinc.Subscription) JSONException(org.json.JSONException) LbryUriException(com.odysee.app.exceptions.LbryUriException)

Example 4 with ChannelSubscribeTask

use of com.odysee.app.tasks.lbryinc.ChannelSubscribeTask in project odysee-android by OdyseeTeam.

the class ChannelFragment method doFollowUnfollow.

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);
}
Also used : Context(android.content.Context) ChannelSubscribeTask(com.odysee.app.tasks.lbryinc.ChannelSubscribeTask) CustomTabsIntent(androidx.browser.customtabs.CustomTabsIntent) Intent(android.content.Intent) Subscription(com.odysee.app.model.lbryinc.Subscription) LbryUriException(com.odysee.app.exceptions.LbryUriException)

Example 5 with ChannelSubscribeTask

use of com.odysee.app.tasks.lbryinc.ChannelSubscribeTask in project odysee-android by OdyseeTeam.

the class FollowingFragment method onChannelItemSelected.

public void onChannelItemSelected(Claim claim) {
    // subscribe
    Subscription subscription = Subscription.fromClaim(claim);
    String channelClaimId = claim.getClaimId();
    ChannelSubscribeTask task = new ChannelSubscribeTask(getContext(), channelClaimId, subscription, false, new ChannelSubscribeTask.ChannelSubscribeHandler() {

        @Override
        public void onSuccess() {
            Lbryio.addSubscription(subscription);
            Lbryio.addCachedResolvedSubscription(claim);
            resetClaimSearchContent = true;
            fetchLoadedSubscriptions(subscriptionsShown);
            saveSharedUserState();
        }

        @Override
        public void onError(Exception error) {
        }
    });
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    updateSuggestedDoneButtonText();
}
Also used : ChannelSubscribeTask(com.odysee.app.tasks.lbryinc.ChannelSubscribeTask) Subscription(com.odysee.app.model.lbryinc.Subscription) JSONException(org.json.JSONException) LbryUriException(com.odysee.app.exceptions.LbryUriException)

Aggregations

LbryUriException (com.odysee.app.exceptions.LbryUriException)5 Subscription (com.odysee.app.model.lbryinc.Subscription)5 ChannelSubscribeTask (com.odysee.app.tasks.lbryinc.ChannelSubscribeTask)5 Context (android.content.Context)3 Intent (android.content.Intent)3 CustomTabsIntent (androidx.browser.customtabs.CustomTabsIntent)3 JSONException (org.json.JSONException)3 Claim (com.odysee.app.model.Claim)2 DialogInterface (android.content.DialogInterface)1 Color (android.graphics.Color)1 Uri (android.net.Uri)1 AsyncTask (android.os.AsyncTask)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 LayoutInflater (android.view.LayoutInflater)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 ImageView (android.widget.ImageView)1 TextView (android.widget.TextView)1 NonNull (androidx.annotation.NonNull)1