Search in sources :

Example 41 with MainActivity

use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.

the class FileViewFragment method postComment.

private void postComment() {
    if (postingComment) {
        return;
    }
    Comment comment = buildPostComment();
    beforePostComment();
    AccountManager am = AccountManager.get(getContext());
    Account odyseeAccount = Helper.getOdyseeAccount(am.getAccounts());
    CommentCreateTask task = new CommentCreateTask(comment, am.peekAuthToken(odyseeAccount, "auth_token_type"), progressPostComment, new CommentCreateTask.CommentCreateWithTipHandler() {

        @Override
        public void onSuccess(Comment createdComment) {
            inputComment.setText(null);
            clearReplyToComment();
            final boolean thisIsFirstComment = commentListAdapter == null;
            ensureCommentListAdapterCreated(new ArrayList<Comment>());
            if (commentListAdapter != null) {
                createdComment.setPoster(comment.getPoster());
                if (!Helper.isNullOrEmpty(createdComment.getParentId())) {
                    commentListAdapter.addReply(createdComment);
                } else {
                    commentListAdapter.insert(0, createdComment);
                }
            }
            afterPostComment();
            checkNoComments();
            if (thisIsFirstComment) {
                expandButton.performClick();
            }
            singleCommentRoot.setVisibility(View.GONE);
            Bundle bundle = new Bundle();
            bundle.putString("claim_id", fileClaim != null ? fileClaim.getClaimId() : null);
            bundle.putString("claim_name", fileClaim != null ? fileClaim.getName() : null);
            LbryAnalytics.logEvent(LbryAnalytics.EVENT_COMMENT_CREATE, bundle);
            Context context = getContext();
            if (context instanceof MainActivity) {
                ((MainActivity) context).showMessage(R.string.comment_posted);
            }
        }

        @Override
        public void onError(Exception error) {
            try {
                showError(error != null ? error.getMessage() : getString(R.string.comment_error));
            } catch (IllegalStateException ex) {
            // pass
            }
            afterPostComment();
        }
    });
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
Also used : AttributeProviderContext(org.commonmark.renderer.html.AttributeProviderContext) Context(android.content.Context) Comment(com.odysee.app.model.Comment) ReactToComment(com.odysee.app.runnable.ReactToComment) Account(android.accounts.Account) CommentCreateTask(com.odysee.app.tasks.CommentCreateTask) Bundle(android.os.Bundle) ArrayList(java.util.ArrayList) AccountManager(android.accounts.AccountManager) MainActivity(com.odysee.app.MainActivity) TrackSelectionOverride(com.google.android.exoplayer2.trackselection.TrackSelectionOverrides.TrackSelectionOverride) 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 42 with MainActivity

use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.

the class ChannelFragment method deleteCurrentClaim.

private void deleteCurrentClaim() {
    if (claim != null) {
        Helper.setViewVisibility(layoutDisplayArea, View.GONE);
        Helper.setViewVisibility(layoutLoadingState, View.VISIBLE);
        AbandonChannelTask task = new AbandonChannelTask(Collections.singletonList(claim.getClaimId()), layoutResolving, Lbryio.AUTH_TOKEN, new AbandonHandler() {

            @Override
            public void onComplete(List<String> successfulClaimIds, List<String> failedClaimIds, List<Exception> errors) {
                Context context = getContext();
                if (context instanceof MainActivity) {
                    if (failedClaimIds.size() == 0) {
                        MainActivity activity = (MainActivity) context;
                        activity.showMessage(R.string.channel_deleted);
                        activity.onBackPressed();
                    } else {
                        View root = getView();
                        if (root != null) {
                            Snackbar.make(root, R.string.channel_failed_delete, Snackbar.LENGTH_LONG).setBackgroundTint(Color.RED).setTextColor(Color.WHITE).show();
                        }
                    }
                }
            }
        });
        task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    }
}
Also used : Context(android.content.Context) AbandonChannelTask(com.odysee.app.tasks.claim.AbandonChannelTask) AbandonHandler(com.odysee.app.tasks.claim.AbandonHandler) 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)

Example 43 with MainActivity

use of com.odysee.app.MainActivity 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 44 with MainActivity

use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.

the class ChannelFragment method onStop.

public void onStop() {
    Context context = getContext();
    if (context instanceof MainActivity) {
        MainActivity activity = (MainActivity) context;
        activity.resetCurrentDisplayFragment();
    }
    super.onStop();
}
Also used : Context(android.content.Context) MainActivity(com.odysee.app.MainActivity)

Example 45 with MainActivity

use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.

the class ChannelFragment method onResume.

public void onResume() {
    super.onResume();
    Context context = getContext();
    Map<String, Object> params = getParams();
    String url = params != null && params.containsKey("url") ? (String) params.get("url") : null;
    Helper.setWunderbarValue(url, context);
    if (context instanceof MainActivity) {
        MainActivity activity = (MainActivity) context;
        activity.updateCurrentDisplayFragment(this);
        activity.addFetchChannelsListener(this);
        activity.updateMiniPlayerMargins(false);
        LbryAnalytics.setCurrentScreen(activity, "Channel", "Channel");
    }
    checkParams();
    checkOwnChannel();
    checkChannelBlocked();
}
Also used : Context(android.content.Context) MainActivity(com.odysee.app.MainActivity)

Aggregations

MainActivity (com.odysee.app.MainActivity)138 Context (android.content.Context)119 Claim (com.odysee.app.model.Claim)39 View (android.view.View)31 TextView (android.widget.TextView)30 RecyclerView (androidx.recyclerview.widget.RecyclerView)26 AttributeProviderContext (org.commonmark.renderer.html.AttributeProviderContext)25 ArrayList (java.util.ArrayList)21 TrackSelectionOverride (com.google.android.exoplayer2.trackselection.TrackSelectionOverrides.TrackSelectionOverride)19 ImageView (android.widget.ImageView)18 SuppressLint (android.annotation.SuppressLint)15 AdapterView (android.widget.AdapterView)14 NestedScrollView (androidx.core.widget.NestedScrollView)14 JSONException (org.json.JSONException)13 JSONObject (org.json.JSONObject)13 SolidIconView (com.odysee.app.ui.controls.SolidIconView)12 HashMap (java.util.HashMap)12 ClaimListAdapter (com.odysee.app.adapter.ClaimListAdapter)11 ApiCallException (com.odysee.app.exceptions.ApiCallException)11 WebView (android.webkit.WebView)10