Skip to content

Rewards tipping tablet UI #20223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions android/brave_java_resources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ brave_java_resources = [
"java/res/drawable-nodpi/fee_icon.png",
"java/res/drawable-nodpi/ic_quick_action_search_and_bookmark_widget_preview.png",
"java/res/drawable-nodpi/loader0_orange.png",
"java/res/drawable-sw600dp/bottomsheet_rewards_tipping_success_background.xml",
"java/res/drawable-xhdpi/brave_ads_launch_graphic.png",
"java/res/drawable-xhdpi/brave_sync_btn_laptop.png",
"java/res/drawable-xhdpi/btn_bat.png",
Expand Down Expand Up @@ -348,6 +349,7 @@ brave_java_resources = [
"java/res/drawable/blue_rounded_notification_bg.xml",
"java/res/drawable/bookmark_menu_bg.xml",
"java/res/drawable/bottomsheet_rewards_background.xml",
"java/res/drawable/bottomsheet_rewards_background_tablet.xml",
"java/res/drawable/bottomsheet_rewards_tipping_success_background.xml",
"java/res/drawable/bottomsheet_top_bar.xml",
"java/res/drawable/brave_badge_rewards_background_large.xml",
Expand Down Expand Up @@ -710,6 +712,7 @@ brave_java_resources = [
"java/res/drawable/tab_gradient_separator.xml",
"java/res/drawable/tab_selector.xml",
"java/res/drawable/tipping_background_success.xml",
"java/res/drawable/tipping_banner_tablet_ui_background.xml",
"java/res/drawable/tipping_banner_view_background.xml",
"java/res/drawable/tipping_default_background.xml",
"java/res/drawable/tipping_error_alert_message_background.xml",
Expand All @@ -723,6 +726,7 @@ brave_java_resources = [
"java/res/drawable/transparent_shadow_background.xml",
"java/res/drawable/unverified_48_rounded_bg.xml",
"java/res/drawable/upload_icon.xml",
"java/res/drawable/verification_tick_mark.xml",
"java/res/drawable/wallet_chip_outline.xml",
"java/res/drawable/wallet_radio_button_normal.xml",
"java/res/drawable/wallet_radio_button_selected.xml",
Expand All @@ -738,7 +742,11 @@ brave_java_resources = [
"java/res/layout-land/brave_shields_stats_row.xml",
"java/res/layout-land/verify_wallet_activity.xml",
"java/res/layout-sw600dp-land/brave_shields_stats_row.xml",
"java/res/layout-sw600dp/brave_rewards_tippingpanel_fragment.xml",
"java/res/layout-sw600dp/brave_rewards_tippingpanel_fragment_base.xml",
"java/res/layout-sw600dp/brave_shields_stats_row.xml",
"java/res/layout-sw600dp/rewards_tipping_banner_fragment.xml",
"java/res/layout-sw600dp/rewards_tipping_success_contribution_fragment.xml",
"java/res/layout/activity_account_detail.xml",
"java/res/layout/activity_account_details_with_qr.xml",
"java/res/layout/activity_account_private_key.xml",
Expand All @@ -758,6 +766,7 @@ brave_java_resources = [
"java/res/layout/activity_playlist_host.xml",
"java/res/layout/activity_split_tunnel.xml",
"java/res/layout/activity_tipping_banner_mobile.xml",
"java/res/layout/activity_tipping_banner_tablet.xml",
"java/res/layout/activity_welcome_onboarding.xml",
"java/res/layout/application_item_layout.xml",
"java/res/layout/approve_tx_bottom_sheet.xml",
Expand Down Expand Up @@ -800,7 +809,9 @@ brave_java_resources = [
"java/res/layout/brave_rewards_panel_tip_layout.xml",
"java/res/layout/brave_rewards_panel_unverified_layout.xml",
"java/res/layout/brave_rewards_reset_tab_content.xml",
"java/res/layout/brave_rewards_tippingpanel_bottomsheet.xml",
"java/res/layout/brave_rewards_tippingpanel_fragment.xml",
"java/res/layout/brave_rewards_tippingpanel_fragment_base.xml",
"java/res/layout/brave_set_default_browser_dialog.xml",
"java/res/layout/brave_shields_main_layout.xml",
"java/res/layout/brave_shields_option_layout.xml",
Expand Down Expand Up @@ -934,6 +945,7 @@ brave_java_resources = [
"java/res/layout/rewards_onboarding_location_choose.xml",
"java/res/layout/rewards_panel_vbat_expire_notice.xml",
"java/res/layout/rewards_response_modal.xml",
"java/res/layout/rewards_tipping_banner_fragment.xml",
"java/res/layout/rewards_tipping_success_contribution_fragment.xml",
"java/res/layout/rewards_you_are_not_earning_dialog.xml",
"java/res/layout/search_preference.xml",
Expand Down
5 changes: 4 additions & 1 deletion android/brave_java_sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -332,9 +332,12 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/rewards/onboarding/CountrySelectionSpinnerAdapter.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/onboarding/RewardsOnboarding.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/MonthlyContributionToolTip.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/PopupWindowTippingTabletUI.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingBannerActivity.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingBannerFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelBottomsheet.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingSuccessContributionFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingSuccessContribution.java",
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/TippingVerifiedCreatorToolTip.java",
"../../brave/android/java/org/chromium/chrome/browser/safe_browsing/settings/BraveStandardProtectionSettingsFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/safe_browsing/settings/NoGooglePlayServicesDialog.java",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
import org.chromium.chrome.browser.preferences.BravePref;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.rewards.onboarding.RewardsOnboarding;
import org.chromium.chrome.browser.rewards.tipping.PopupWindowTippingTabletUI;
import org.chromium.chrome.browser.rewards.tipping.RewardsTippingBannerActivity;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.BraveConstants;
Expand Down Expand Up @@ -162,7 +163,7 @@ public enum NotificationClickAction {
TURN_ON_ADS;
}

private boolean shouldShowOnboardingForConnectAccount;
private boolean mShouldShowOnboardingForConnectAccount;

private final View mAnchorView;
private final PopupWindow mPopupWindow;
Expand Down Expand Up @@ -203,7 +204,7 @@ public enum NotificationClickAction {
private View mNotificationLayout;
private View mNotificationPermissionLayout;
private boolean mClaimInProcess;
private boolean notificationShown;
private boolean mNotificationShown;

private View mBraveRewardsOnboardingModalView;
private View mRewardsResponseModal;
Expand All @@ -219,6 +220,8 @@ public enum NotificationClickAction {
private View mBalanceDataViewGroups;
private View mEstimatedToolTip;
private View mVbatUserdrainToolTip;
private PopupWindowTippingTabletUI mPopupWindowTippingTabletUI;
private boolean mIsTablet;

public BraveRewardsPanel(View anchorView) {
mCurrentNotificationId = "";
Expand Down Expand Up @@ -336,9 +339,9 @@ private void setUpViews() {
mPopupView = (ViewGroup) inflater.inflate(R.layout.brave_rewards_panel_layout, null);

int deviceWidth = ConfigurationUtils.getDisplayMetrics(mActivity).get("width");
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity);
mIsTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity);

mPopupWindow.setWidth((int) (isTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95)));
mPopupWindow.setWidth((int) (mIsTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95)));

mBravePanelShadow = mPopupView.findViewById(R.id.panel_shadow);
mBraveRewardsOnboardingView =
Expand Down Expand Up @@ -413,10 +416,17 @@ public void onClick(View v) {

TextView btnSendTip = mPopupView.findViewById(R.id.btn_send_tip);
btnSendTip.setOnClickListener(view -> {
Intent intent = new Intent(
ContextUtils.getApplicationContext(), RewardsTippingBannerActivity.class);
intent.putExtra(RewardsTippingBannerActivity.TAB_ID_EXTRA, mCurrentTabId);
mActivity.startActivityForResult(intent, BraveConstants.SITE_BANNER_REQUEST_CODE);
if (mIsTablet) {
mPopupWindowTippingTabletUI =
PopupWindowTippingTabletUI.newInstance(mAnchorView, mCurrentTabId);
mPopupWindowTippingTabletUI.show(mBraveActivity.getSupportFragmentManager(),
"PopupWindowTippingTabletUITag");
} else {
Intent intent = new Intent(
ContextUtils.getApplicationContext(), RewardsTippingBannerActivity.class);
intent.putExtra(RewardsTippingBannerActivity.TAB_ID_EXTRA, mCurrentTabId);
mActivity.startActivityForResult(intent, BraveConstants.SITE_BANNER_REQUEST_CODE);
}
});

mBtnTip = mPopupView.findViewById(R.id.tip_btn);
Expand Down Expand Up @@ -839,7 +849,7 @@ private void showNotification(String id, int type, long timestamp, String[] args
mRewardsMainLayout.setForeground(
new ColorDrawable(ContextCompat.getColor(mActivity, foregroundColor)));
enableControls(false, mRewardsMainLayout);
notificationShown = true;
mNotificationShown = true;
}

setNotificationButtoClickListener(notificationClickAction);
Expand Down Expand Up @@ -1197,8 +1207,8 @@ public void onBalance(boolean success) {

@Override
public void OnRewardsParameters() {
if (shouldShowOnboardingForConnectAccount) {
shouldShowOnboardingForConnectAccount = false;
if (mShouldShowOnboardingForConnectAccount) {
mShouldShowOnboardingForConnectAccount = false;
showBraveRewardsOnboarding(true);
} else if (mExternalWallet != null) {
if (mBraveRewardsNativeWorker.getVbatDeadline() > 0) {
Expand Down Expand Up @@ -1240,8 +1250,7 @@ private void showOnBoarding() {
try {
BraveActivity activity = BraveActivity.getBraveActivity();
int deviceWidth = ConfigurationUtils.getDisplayMetrics(activity).get("width");
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(activity);
deviceWidth = (int) (isTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95));
deviceWidth = (int) (mIsTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95));
RewardsOnboarding panel = new RewardsOnboarding(mAnchorView, deviceWidth);
panel.showLikePopDownMenu();
} catch (BraveActivity.BraveActivityNotFoundException e) {
Expand Down Expand Up @@ -1373,7 +1382,7 @@ private void clickOnCloseButtonOfNotificationPermission() {
View closeButton = mNotificationPermissionLayout.findViewById(R.id.close_text_button);
closeButton.setOnClickListener((v) -> {
mNotificationPermissionLayout.setVisibility(View.GONE);
if (!notificationShown) {
if (!mNotificationShown) {
mNotificationLayout.setVisibility(View.GONE);
}
});
Expand All @@ -1385,7 +1394,7 @@ private void clickOnTurnOnNotificationButton() {
turnOnNotification.setOnClickListener((v) -> {
mNotificationPermissionLayout.setVisibility(View.GONE);
BravePermissionUtils.notificationSettingPage(mAnchorView.getContext());
if (!notificationShown) {
if (!mNotificationShown) {
mNotificationLayout.setVisibility(View.GONE);
}
});
Expand Down Expand Up @@ -2171,6 +2180,11 @@ public void run() {

public void dismiss() {
mPopupWindow.dismiss();
if (mPopupWindowTippingTabletUI != null && mPopupWindowTippingTabletUI.getDialog() != null
&& mPopupWindowTippingTabletUI.getDialog().isShowing()
&& !mPopupWindowTippingTabletUI.isRemoving()) {
mPopupWindowTippingTabletUI.getDialog().dismiss();
}
}

public boolean isShowing() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/**
* Copyright (c) 2023 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at https://mozilla.org/MPL/2.0/.
*/

package org.chromium.chrome.browser.rewards.tipping;

import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.fragment.app.DialogFragment;

import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.util.ConfigurationUtils;

public class PopupWindowTippingTabletUI extends DialogFragment {
private static final String TAG = "TippingBanner";
private static final String ANCHOR_Y_POSITION = "y_position";

private int mCurrentTabId = -1;

public static PopupWindowTippingTabletUI newInstance(View anchorView, int currentTabId) {
int[] location = new int[2];
anchorView.getLocationOnScreen(location);
int popup_y_position = location[1] + anchorView.getHeight() - 40;
PopupWindowTippingTabletUI fragment = new PopupWindowTippingTabletUI();
Bundle args = new Bundle();
args.putInt(RewardsTippingBannerActivity.TAB_ID_EXTRA, currentTabId);
args.putInt(ANCHOR_Y_POSITION, popup_y_position);
fragment.setArguments(args);
return fragment;
}

@Override
public void onResume() {
super.onResume();
setDialogParams();
}

private void setDialogParams() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int mDeviceWidth = displayMetrics.widthPixels;
Window window = getDialog().getWindow();

WindowManager.LayoutParams params = window.getAttributes();
boolean isLandscape = ConfigurationUtils.isLandscape(getActivity());
double widthRatio = isLandscape ? 0.8 : 0.96;
params.width = (int) (widthRatio * mDeviceWidth);
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
if (getArguments() != null) {
params.y = getArguments().getInt(ANCHOR_Y_POSITION);
}

params.gravity = Gravity.TOP;
params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
window.setAttributes(params);
}

@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_tipping_banner_tablet, container, false);

if (getArguments() != null) {
mCurrentTabId = getArguments().getInt(RewardsTippingBannerActivity.TAB_ID_EXTRA);
}
replace();
updateTermsOfServicePlaceHolder(view);
return view;
}

private void updateTermsOfServicePlaceHolder(View view) {
Resources res = getResources();
TextView proceedTextView = view.findViewById(R.id.proceed_terms_of_service);
proceedTextView.setMovementMethod(LinkMovementMethod.getInstance());
String termsOfServiceText = String.format(res.getString(R.string.brave_rewards_tos_text),
res.getString(R.string.terms_of_service), res.getString(R.string.privacy_policy));

SpannableString spannableString = BraveRewardsHelper.tosSpannableString(
termsOfServiceText, R.color.terms_of_service_text_color);
proceedTextView.setText(spannableString);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setDialogParams();
}

public void replace() {
RewardsTippingBannerFragment tippingBannerFragment =
RewardsTippingBannerFragment.newInstance(mCurrentTabId);
getChildFragmentManager()
.beginTransaction()
.replace(R.id.tippingBannerFragment, tippingBannerFragment)
.commit();
RewardsTippingPanelFragment tippingPanelFragment =
RewardsTippingPanelFragment.newInstance(mCurrentTabId);
getChildFragmentManager()
.beginTransaction()
.replace(R.id.tippingPanelFragment2, tippingPanelFragment)
.commit();
}
}
Loading