Skip to content
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

Show Bottomsheet when no notification permission #17002

Merged
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
4 changes: 4 additions & 0 deletions android/brave_java_resources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -630,6 +630,7 @@ brave_java_resources = [
"java/res/drawable/ic_refresh_20.xml",
"java/res/drawable/ic_reward_drop_down.xml",
"java/res/drawable/ic_rewards.xml",
"java/res/drawable/ic_rewards_noti_warning_circle.xml",
"java/res/drawable/ic_rocket.xml",
"java/res/drawable/ic_safe.xml",
"java/res/drawable/ic_search.xml",
Expand Down Expand Up @@ -747,6 +748,7 @@ brave_java_resources = [
"java/res/drawable/wallet_verify_button.xml",
"java/res/drawable/white_rounded_holo_button_thin.xml",
"java/res/drawable/yearly_selector.xml",
"java/res/drawable/you_are_not_earning_rewards_background.xml",
"java/res/font/poppins_300.ttf",
"java/res/font/poppins_400.ttf",
"java/res/font/poppins_500.ttf",
Expand Down Expand Up @@ -930,8 +932,10 @@ brave_java_resources = [
"java/res/layout/radio_button_group_ddns_resolve_method_preference.xml",
"java/res/layout/recovery_phrase_item_layout.xml",
"java/res/layout/report_broken_site_layout.xml",
"java/res/layout/rewards_notification_permission_request.xml",
"java/res/layout/rewards_panel_vbat_expire_notice.xml",
"java/res/layout/rewards_response_modal.xml",
"java/res/layout/rewards_you_are_not_earning_dialog.xml",
"java/res/layout/search_preference.xml",
"java/res/layout/swap_bottom_sheet.xml",
"java/res/layout/toolbar_space.xml",
Expand Down
1 change: 1 addition & 0 deletions android/brave_java_sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/notifications/BraveNotificationWarningDialog.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/BraveOnboardingNotification.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/BravePermissionUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/RewardsYouAreNotEarningDialog.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/permissions/BraveNotificationPermissionRationaleDialog.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/permissions/BraveNotificationPermissionRationaleDialogController.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/retention/RetentionNotification.java",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/* 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.notifications;

import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
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.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveDialogFragment;

public class RewardsYouAreNotEarningDialog extends BraveDialogFragment {
public static final String RewardsYouAreNotEarningDialogTAG =
"RewardsYouAreNotEarningDialogTag";

public static RewardsYouAreNotEarningDialog newInstance() {
RewardsYouAreNotEarningDialog fragment = new RewardsYouAreNotEarningDialog();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.rewards_you_are_not_earning_dialog, container, false);
if (getDialog() != null && getDialog().getWindow() != null) {
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
Window window = getDialog().getWindow();
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.y = 50;
wlp.gravity = Gravity.BOTTOM;
wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
window.setAttributes(wlp);
}
return view;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
clickOnCloseButton(view);
clickOnTurnOnButton(view);
}

private void clickOnCloseButton(View view) {
ImageView closeButton = view.findViewById(R.id.notification_disabled_close_button);
closeButton.setOnClickListener((v) -> { dismiss(); });
}

private void clickOnTurnOnButton(View view) {
TextView turnOnButton = view.findViewById(R.id.turn_on_button);
turnOnButton.setOnClickListener((v) -> {
dismiss();
BravePermissionUtils.notificationSettingPage(getContext());
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,9 @@ public enum NotificationClickAction {
private BraveRewardsExternalWallet mExternalWallet;

private View mNotificationLayout;
private View mNotificationPermissionLayout;
private boolean mClaimInProcess;
private boolean notificationShown;

private View mBraveRewardsOnboardingModalView;
private View mRewardsResponseModal;
Expand Down Expand Up @@ -336,6 +338,8 @@ private void setUpViews() {
mPopupView.findViewById(R.id.brave_rewards_onboarding_modal_id);
mNotificationLayout =
mPopupView.findViewById(R.id.brave_rewards_panel_notification_layout_id);
mNotificationPermissionLayout =
mPopupView.findViewById(R.id.brave_rewards_notification_permission_id);
mRewardsResponseModal = mPopupView.findViewById(R.id.rewards_response_modal_id);
mConnectAccountModal = mPopupView.findViewById(R.id.connect_account_layout_id);
mBraveRewardsUnverifiedView =
Expand Down Expand Up @@ -774,6 +778,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;
}

setNotificationButtoClickListener(notificationClickAction);
Expand Down Expand Up @@ -1237,6 +1242,40 @@ private void existingUserViewChanges() {
mBraveRewardsNativeWorker.GetAllNotifications();
setVerifyWalletButton();
showRewardsFromAdsSummary();
mayBeShowNotitionPermissionDialog();
}

private void mayBeShowNotitionPermissionDialog() {
clickOnCloseButtonOfNotificationPermission();
clickOnTurnOnNotificationButton();
if ((!BravePermissionUtils.hasNotificationPermission(mAnchorView.getContext()))
|| BraveNotificationWarningDialog.shouldShowRewardWarningDialog(
mAnchorView.getContext())) {
mNotificationLayout.setVisibility(View.VISIBLE);
mNotificationPermissionLayout.setVisibility(View.VISIBLE);
}
}

private void clickOnCloseButtonOfNotificationPermission() {
View closeButton = mNotificationPermissionLayout.findViewById(R.id.close_text_button);
closeButton.setOnClickListener((v) -> {
mNotificationPermissionLayout.setVisibility(View.GONE);
if (!notificationShown) {
mNotificationLayout.setVisibility(View.GONE);
}
});
}

private void clickOnTurnOnNotificationButton() {
View turnOnNotification =
mNotificationPermissionLayout.findViewById(R.id.turnOnNotification);
turnOnNotification.setOnClickListener((v) -> {
mNotificationPermissionLayout.setVisibility(View.GONE);
BravePermissionUtils.notificationSettingPage(mAnchorView.getContext());
if (!notificationShown) {
mNotificationLayout.setVisibility(View.GONE);
}
});
}

private void showUnverifiedLayout() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@
import org.chromium.chrome.browser.local_database.BraveStatsTable;
import org.chromium.chrome.browser.local_database.DatabaseHelper;
import org.chromium.chrome.browser.local_database.SavedBandwidthTable;
import org.chromium.chrome.browser.notifications.BraveNotificationWarningDialog;
import org.chromium.chrome.browser.notifications.BravePermissionUtils;
import org.chromium.chrome.browser.notifications.RewardsYouAreNotEarningDialog;
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.omnibox.LocationBarCoordinator;
Expand Down Expand Up @@ -487,6 +490,15 @@ public void onPageLoadFinished(final Tab tab, GURL url) {
}
}

if (mBraveShieldsButton != null && mBraveShieldsButton.isShown()
&& mBraveShieldsHandler != null && !mBraveShieldsHandler.isShowing()
&& url.getSpec().contains("rewards")
&& ((!BravePermissionUtils.hasNotificationPermission(getContext()))
|| BraveNotificationWarningDialog.shouldShowRewardWarningDialog(
getContext()))) {
showNotificationNotEarningDialog();
}

String countryCode = Locale.getDefault().getCountry();
if (countryCode.equals(BraveConstants.INDIA_COUNTRY_CODE)
&& url.domainIs(YOUTUBE_DOMAIN)
Expand All @@ -497,6 +509,17 @@ public void onPageLoadFinished(final Tab tab, GURL url) {
}
}

private void showNotificationNotEarningDialog() {
if (BraveActivity.getBraveActivity() != null) {
RewardsYouAreNotEarningDialog rewardsYouAreNotEarningDialog =
RewardsYouAreNotEarningDialog.newInstance();
rewardsYouAreNotEarningDialog.setCancelable(false);
rewardsYouAreNotEarningDialog.show(
BraveActivity.getBraveActivity().getSupportFragmentManager(),
RewardsYouAreNotEarningDialog.RewardsYouAreNotEarningDialogTAG);
}
}

@Override
public void onDidFinishNavigationInPrimaryMainFrame(
Tab tab, NavigationHandle navigation) {
Expand Down
10 changes: 10 additions & 0 deletions android/java/res/drawable/ic_rewards_noti_warning_circle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="40dp"
android:height="40dp"
android:viewportWidth="40"
android:viewportHeight="40">
<path
android:pathData="M20,40C8.972,40 0,31.028 0,20C0,8.972 8.972,0 20,0C31.028,0 40,8.972 40,20C40,31.028 31.028,40 20,40ZM20,3.333C10.81,3.333 3.333,10.81 3.333,20C3.333,29.19 10.81,36.667 20,36.667C29.19,36.667 36.667,29.19 36.667,20C36.667,10.81 29.19,3.333 20,3.333ZM20,31.667C19.567,31.667 19.133,31.483 18.817,31.183C18.515,30.867 18.333,30.433 18.333,30C18.333,29.55 18.515,29.133 18.817,28.817C19.433,28.2 20.55,28.2 21.183,28.817C21.483,29.133 21.667,29.55 21.667,30C21.667,30.433 21.483,30.867 21.183,31.183C20.867,31.483 20.433,31.667 20,31.667ZM20,25C19.078,25 18.333,24.253 18.333,23.333V10C18.333,9.08 19.078,8.333 20,8.333C20.922,8.333 21.667,9.08 21.667,10V23.333C21.667,24.253 20.922,25 20,25Z"
android:fillColor="#EA3A0D"
android:fillType="evenOdd"/>
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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/.
-->

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/you_are_not_earning_rewards_bg_color" />
<corners android:radius="16dp" />
</shape>
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
app:cardCornerRadius="16dp"
app:cardElevation="2dp">

<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
Expand Down Expand Up @@ -123,7 +128,15 @@
android:layout_marginHorizontal="8dp"
android:fontFamily="@font/poppins_600"
android:layout_gravity="center_horizontal" />

</LinearLayout>

</androidx.cardview.widget.CardView>
<include
android:id="@+id/brave_rewards_notification_permission_id"
layout="@layout/rewards_notification_permission_request"
android:visibility="gone"
/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit : remove new line


</FrameLayout>

</androidx.cardview.widget.CardView>
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:background="@drawable/notification_rationale_dialog_background"
>

<ImageView
android:id="@+id/notification_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_rewards_noti_warning_circle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/notification_permission_title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="8dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/poppins_500"
android:text="@string/notifications_are_disabled"
android:textAlignment="center"
android:textColor="@color/rewards_panel_notification_text_color"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/notification_img" />

<TextView
android:id="@+id/notification_permission_subtitle_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="8dp"
android:fontFamily="@font/poppins_400"
android:text="@string/brave_rewards_may_not_work_while_notifications_are_disabled"
android:textAlignment="center"
android:textColor="@color/rewards_panel_notification_secondary_text_color"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/notification_permission_title_text" />

<TextView
android:id="@+id/turnOnNotification"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="16dp"
android:background="@drawable/blue_48_rounded_bg"
android:clickable="true"
android:focusable="true"
android:fontFamily="@font/poppins_600"
android:gravity="center"
android:text="@string/stats_notification_on"
android:textColor="@color/rewards_panel_notification_action_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/notification_permission_subtitle_text" />

<TextView
android:id="@+id/close_text_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="32dp"
android:fontFamily="@font/poppins_400"
android:text="@string/close_text"
android:textColor="@color/rewards_panel_notification_secondary_text_color"
android:textSize="16sp"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/turnOnNotification"
app:layout_constraintTop_toBottomOf="@+id/turnOnNotification" />

</androidx.constraintlayout.widget.ConstraintLayout>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit : new line

Loading