Skip to content

Commit

Permalink
Fixes disabled state in combination with rewards
Browse files Browse the repository at this point in the history
  • Loading branch information
NejcZdovc committed Sep 4, 2019
1 parent 03068d6 commit 5ab1515
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 101 deletions.
21 changes: 4 additions & 17 deletions components/brave_rewards/browser/rewards_protocol_handler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,12 @@
#include "base/strings/string_util.h"
#include "base/task/post_task.h"
#include "brave/common/url_constants.h"
#include "brave/components/brave_rewards/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/escape.h"

namespace {

bool IsRewardsEnabled(content::BrowserContext* browser_context) {
Profile* profile = Profile::FromBrowserContext(browser_context);
if (!profile) {
return false;
}

return profile->GetPrefs()->GetBoolean(
brave_rewards::prefs::kBraveRewardsEnabled);
}

GURL TranslateUrl(const GURL& url) {
if (!url.is_valid()) {
return GURL();
Expand Down Expand Up @@ -74,11 +62,10 @@ void LoadRewardsURL(
return;
}

if (IsRewardsEnabled(web_contents->GetBrowserContext())) {
const auto new_url = TranslateUrl(url);
web_contents->GetController().LoadURL(new_url, content::Referrer(),
page_transition, std::string());
}
// we need to allow url to be processed even if rewards are off
const auto new_url = TranslateUrl(url);
web_contents->GetController().LoadURL(new_url, content::Referrer(),
page_transition, std::string());
}

} // namespace
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ export class RewardsPanel extends React.Component<Props, State> {
chrome.braveRewards.getAllNotifications((list: RewardsExtension.Notification[]) => {
this.props.actions.onAllNotifications(list)
})

if (!this.props.rewardsPanelData.enabledMain) {
const { externalWallet } = this.props.rewardsPanelData
utils.getExternalWallet(this.actions, externalWallet)
}
}

componentDidUpdate (prevProps: Props, prevState: State) {
Expand All @@ -66,6 +71,21 @@ export class RewardsPanel extends React.Component<Props, State> {
}
}

goToUphold = () => {
const { externalWallet } = this.props.rewardsPanelData

if (!externalWallet || !externalWallet.accountUrl) {
this.actions.getExternalWallet('uphold')
return
}

window.open(externalWallet.accountUrl, '_blank')
}

onDisconnectClick = () => {
chrome.braveRewards.disconnectWallet('uphold')
}

getTabData () {
chrome.tabs.query({
active: true,
Expand Down Expand Up @@ -165,9 +185,23 @@ export class RewardsPanel extends React.Component<Props, State> {
}

openRewardsAddFunds () {
chrome.tabs.create({
url: 'chrome://rewards/#add-funds'
})
const { externalWallet } = this.props.rewardsPanelData

if (!externalWallet) {
return
}

if (externalWallet.addUrl) {
chrome.tabs.create({
url: externalWallet.addUrl
})
return
}

if (externalWallet.verifyUrl) {
utils.handleUpholdLink(externalWallet.verifyUrl, externalWallet)
return
}
}

openTOS () {
Expand All @@ -192,7 +226,8 @@ export class RewardsPanel extends React.Component<Props, State> {
walletCreating,
walletProperties,
walletCorrupted,
balance
balance,
externalWallet
} = this.props.rewardsPanelData

const converted = utils.convertBalance(balance.total.toString(), balance.rates)
Expand Down Expand Up @@ -228,6 +263,11 @@ export class RewardsPanel extends React.Component<Props, State> {
grants={utils.getGrants(walletProperties.grants)}
converted={utils.formatConverted(converted)}
convertProbiToFixed={utils.convertProbiToFixed}
walletState={utils.getWalletStatus(externalWallet)}
onVerifyClick={utils.onVerifyClick.bind(this, this.actions)}
onDisconnectClick={this.onDisconnectClick}
goToUphold={this.goToUphold}
userName={utils.getUserName(externalWallet)}
actions={[
{
name: getMessage('addFunds'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { connect } from 'react-redux'
import { WalletAddIcon, BatColorIcon } from 'brave-ui/components/icons'
import { WalletWrapper, WalletSummary, WalletSummarySlider, WalletPanel } from 'brave-ui/features/rewards'
import { Provider } from 'brave-ui/features/rewards/profile'
import { NotificationType, WalletState } from 'brave-ui/features/rewards/walletWrapper'
import { NotificationType } from 'brave-ui/features/rewards/walletWrapper'
import { RewardsNotificationType } from '../constants/rewards_panel_types'
import { Type as AlertType } from 'brave-ui/features/rewards/alert'

Expand Down Expand Up @@ -70,7 +70,8 @@ export class Panel extends React.Component<Props, State> {
this.actions.OnPendingContributionsTotal(amount)
}))

this.getExternalWallet()
const { externalWallet } = this.props.rewardsPanelData
utils.getExternalWallet(this.actions, externalWallet)
}

componentDidUpdate (prevProps: Props, prevState: State) {
Expand Down Expand Up @@ -231,7 +232,7 @@ export class Panel extends React.Component<Props, State> {
}

if (externalWallet.verifyUrl) {
this.handleUpholdLink(externalWallet.verifyUrl)
utils.handleUpholdLink(externalWallet.verifyUrl, externalWallet)
return
}
}
Expand Down Expand Up @@ -548,70 +549,6 @@ export class Panel extends React.Component<Props, State> {
}
}

getExternalWallet = (open: boolean = false) => {
chrome.braveRewards.getExternalWallet('uphold', (result: number, wallet: RewardsExtension.ExternalWallet) => {
// EXPIRED TOKEN
if (result === 24) {
this.getExternalWallet(open)
return
}

this.actions.onExternalWallet(wallet)

if (open && wallet.verifyUrl) {
this.handleUpholdLink(wallet.verifyUrl)
}
})
}

handleUpholdLink = (link: string) => {
const { externalWallet } = this.props.rewardsPanelData

if (!externalWallet || (externalWallet && externalWallet.status === 0)) {
link = 'brave://rewards/#verify'
}

chrome.tabs.create({
url: link
})
}

onVerifyClick = () => {
const { externalWallet } = this.props.rewardsPanelData

if (!externalWallet || externalWallet.verifyUrl) {
this.getExternalWallet(true)
return
}

this.handleUpholdLink(externalWallet.verifyUrl)
}

getWalletStatus = (): WalletState => {
const { externalWallet } = this.props.rewardsPanelData

if (!externalWallet) {
return 'unverified'
}

switch (externalWallet.status) {
// ledger::WalletStatus::CONNECTED
case 1:
return 'connected'
// ledger::WalletStatus::VERIFIED
case 2:
return 'verified'
// ledger::WalletStatus::DISCONNECTED_NOT_VERIFIED
case 3:
return 'disconnected_unverified'
// ledger::WalletStatus::DISCONNECTED_VERIFIED
case 4:
return 'disconnected_verified'
default:
return 'unverified'
}
}

goToUphold = () => {
const { externalWallet } = this.props.rewardsPanelData

Expand All @@ -623,21 +560,12 @@ export class Panel extends React.Component<Props, State> {
window.open(externalWallet.accountUrl, '_blank')
}

getUserName = () => {
const { externalWallet } = this.props.rewardsPanelData
if (!externalWallet) {
return ''
}

return externalWallet.userName
}

onDisconnectClick = () => {
chrome.braveRewards.disconnectWallet('uphold')
}

render () {
const { pendingContributionTotal, enabledAC } = this.props.rewardsPanelData
const { pendingContributionTotal, enabledAC, externalWallet } = this.props.rewardsPanelData
const { total, rates } = this.props.rewardsPanelData.balance
const { grants } = this.props.rewardsPanelData.walletProperties
const publisher: RewardsExtension.Publisher | undefined = this.getPublisher()
Expand Down Expand Up @@ -702,11 +630,11 @@ export class Panel extends React.Component<Props, State> {
onFinish={this.onFinish}
convertProbiToFixed={utils.convertProbiToFixed}
grants={utils.getGrants(grants)}
walletState={this.getWalletStatus()}
onVerifyClick={this.onVerifyClick}
walletState={utils.getWalletStatus(externalWallet)}
onVerifyClick={utils.onVerifyClick.bind(this, this.actions)}
onDisconnectClick={this.onDisconnectClick}
goToUphold={this.goToUphold}
userName={this.getUserName()}
userName={utils.getUserName(externalWallet)}
{...notification}
>
<WalletSummarySlider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import BigNumber from 'bignumber.js'
import { getMessage } from './background/api/locale_api'
import { WalletState } from 'brave-ui/features/rewards/walletWrapper'

export const convertBalance = (tokens: string, rates: Record<string, number> | undefined, currency: string = 'USD'): string => {
const tokensNum = parseFloat(tokens)
Expand Down Expand Up @@ -98,3 +99,69 @@ export const isPublisherNotVerified = (status?: RewardsExtension.PublisherStatus

return status === 0
}

export const getWalletStatus = (externalWallet?: RewardsExtension.ExternalWallet): WalletState => {
if (!externalWallet) {
return 'unverified'
}

switch (externalWallet.status) {
// ledger::WalletStatus::CONNECTED
case 1:
return 'connected'
// ledger::WalletStatus::VERIFIED
case 2:
return 'verified'
// ledger::WalletStatus::DISCONNECTED_NOT_VERIFIED
case 3:
return 'disconnected_unverified'
// ledger::WalletStatus::DISCONNECTED_VERIFIED
case 4:
return 'disconnected_verified'
default:
return 'unverified'
}
}

export const getUserName = (externalWallet?: RewardsExtension.ExternalWallet) => {
if (!externalWallet) {
return ''
}

return externalWallet.userName
}

export const handleUpholdLink = (link: string, externalWallet?: RewardsExtension.ExternalWallet) => {
if (!externalWallet || (externalWallet && externalWallet.status === 0)) {
link = 'brave://rewards/#verify'
}

chrome.tabs.create({
url: link
})
}

export const getExternalWallet = (actions: any, externalWallet?: RewardsExtension.ExternalWallet, open: boolean = false) => {
chrome.braveRewards.getExternalWallet('uphold', (result: number, wallet: RewardsExtension.ExternalWallet) => {
// EXPIRED TOKEN
if (result === 24) {
getExternalWallet(actions, externalWallet, open)
return
}

actions.onExternalWallet(wallet)

if (open && wallet.verifyUrl) {
handleUpholdLink(wallet.verifyUrl)
}
})
}

export const onVerifyClick = (actions: any, externalWallet?: RewardsExtension.ExternalWallet) => {
if (!externalWallet || externalWallet.verifyUrl) {
getExternalWallet(actions, externalWallet, true)
return
}

handleUpholdLink(externalWallet.verifyUrl)
}

0 comments on commit 5ab1515

Please sign in to comment.