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

Inline tipping media data is now generalized #2723

Merged
merged 1 commit into from
Jul 22, 2019
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
92 changes: 48 additions & 44 deletions browser/extensions/api/brave_rewards_api.cc
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,11 @@ BraveRewardsTipTwitterUserFunction::Run() {
if (rewards_service) {
AddRef();
std::map<std::string, std::string> args;
args["user_id"] = params->tweet_meta_data.user_id;
args["name"] = params->tweet_meta_data.name;
args["screen_name"] = params->tweet_meta_data.screen_name;
rewards_service->SaveTwitterPublisherInfo(
args["user_id"] = params->media_meta_data.user_id;
args["twitter_name"] = params->media_meta_data.twitter_name;
args["screen_name"] = params->media_meta_data.screen_name;
rewards_service->SaveInlineMediaInfo(
params->media_meta_data.media_type,
args,
base::Bind(&BraveRewardsTipTwitterUserFunction::
OnTwitterPublisherInfoSaved,
Expand Down Expand Up @@ -143,10 +144,11 @@ ExtensionFunction::ResponseAction BraveRewardsTipRedditUserFunction::Run() {
if (rewards_service) {
AddRef();
std::map<std::string, std::string> args;
args["user_name"] = params->reddit_meta_data.user_name;
args["post_text"] = params->reddit_meta_data.post_text;
args["post_rel_date"] = params->reddit_meta_data.post_rel_date;
rewards_service->SaveRedditPublisherInfo(
args["user_name"] = params->media_meta_data.user_name;
args["post_text"] = params->media_meta_data.post_text;
args["post_rel_date"] = params->media_meta_data.post_rel_date;
rewards_service->SaveInlineMediaInfo(
params->media_meta_data.media_type,
args,
base::Bind(
&BraveRewardsTipRedditUserFunction::OnRedditPublisherInfoSaved,
Expand Down Expand Up @@ -184,17 +186,20 @@ void BraveRewardsTipTwitterUserFunction::OnTwitterPublisherInfoSaved(
params_dict->SetString("publisherKey", publisher_info->id);
params_dict->SetString("url", publisher_info->url);

auto tweet_meta_data_dict = std::make_unique<base::DictionaryValue>();
tweet_meta_data_dict->SetString("name", publisher_info->name);
tweet_meta_data_dict->SetString("screenName",
params->tweet_meta_data.screen_name);
tweet_meta_data_dict->SetString("userId", params->tweet_meta_data.user_id);
tweet_meta_data_dict->SetString("tweetId", params->tweet_meta_data.tweet_id);
tweet_meta_data_dict->SetInteger("tweetTimestamp",
params->tweet_meta_data.tweet_timestamp);
tweet_meta_data_dict->SetString("tweetText",
params->tweet_meta_data.tweet_text);
params_dict->SetDictionary("tweetMetaData", std::move(tweet_meta_data_dict));
base::Value media_meta_data_dict(base::Value::Type::DICTIONARY);
media_meta_data_dict.SetStringKey("twitter_name", publisher_info->name);
media_meta_data_dict.SetStringKey("mediaType",
params->media_meta_data.media_type);
media_meta_data_dict.SetStringKey("screenName",
params->media_meta_data.screen_name);
media_meta_data_dict.SetStringKey("userId", params->media_meta_data.user_id);
media_meta_data_dict.SetStringKey("tweetId",
params->media_meta_data.tweet_id);
media_meta_data_dict.SetDoubleKey("tweetTimestamp",
params->media_meta_data.tweet_timestamp);
media_meta_data_dict.SetStringKey("tweetText",
params->media_meta_data.tweet_text);
params_dict->SetPath("mediaMetaData", std::move(media_meta_data_dict));

::brave_rewards::OpenTipDialog(contents, std::move(params_dict));

Expand All @@ -213,31 +218,30 @@ void BraveRewardsTipRedditUserFunction::OnRedditPublisherInfoSaved(

content::WebContents* contents = nullptr;
if (!ExtensionTabUtil::GetTabById(
params->tab_id,
Profile::FromBrowserContext(browser_context()),
false,
nullptr,
nullptr,
&contents,
nullptr)) {
return;
}

std::unique_ptr<base::DictionaryValue> params_dict =
std::make_unique<base::DictionaryValue>();
params_dict->SetStringKey("publisherKey", publisher_info->id);
params_dict->SetStringKey("url", publisher_info->url);

base::Value reddit_meta_data_dict(base::Value::Type::DICTIONARY);
reddit_meta_data_dict.SetStringKey("name", publisher_info->name);
reddit_meta_data_dict.SetStringKey(
"userName", params->reddit_meta_data.user_name);
reddit_meta_data_dict.SetStringKey(
"postText", params->reddit_meta_data.post_text);
reddit_meta_data_dict.SetStringKey(
"postRelDate", params->reddit_meta_data.post_rel_date);
params_dict->SetPath(
"redditMetaData", std::move(reddit_meta_data_dict));
params->tab_id,
Profile::FromBrowserContext(browser_context()),
false,
nullptr,
nullptr,
&contents,
nullptr)) {
return;
}

auto params_dict = std::make_unique<base::DictionaryValue>();
params_dict->SetString("publisherKey", publisher_info->id);
params_dict->SetString("url", publisher_info->url);

base::Value media_meta_data_dict(base::Value::Type::DICTIONARY);
media_meta_data_dict.SetStringKey("mediaType",
params->media_meta_data.media_type);
media_meta_data_dict.SetStringKey("userName",
params->media_meta_data.user_name);
media_meta_data_dict.SetStringKey("postText",
params->media_meta_data.post_text);
media_meta_data_dict.SetStringKey("postRelDate",
params->media_meta_data.post_rel_date);
params_dict->SetPath("mediaMetaData", std::move(media_meta_data_dict));

::brave_rewards::OpenTipDialog(
contents, std::move(params_dict));
Expand Down
14 changes: 11 additions & 3 deletions common/extensions/api/brave_rewards.json
Original file line number Diff line number Diff line change
Expand Up @@ -396,14 +396,18 @@
"type": "integer"
},
{
"name": "tweetMetaData",
"name": "mediaMetaData",
"type": "object",
"properties": {
"mediaType": {
"type": "string",
"description": "description used in UI to identify the media type"
},
"userId": {
"type": "string",
"description": "User ID of tweet author"
},
"name": {
"twitterName": {
"type": "string",
"description": "Name of tweet author"
Copy link
Contributor

Choose a reason for hiding this comment

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

Does this description need an update as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't think so. This is still going to a twitter designated function.

Copy link
Contributor

Choose a reason for hiding this comment

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

I see, I misread that diff!

},
Expand Down Expand Up @@ -437,9 +441,13 @@
"type": "integer"
},
{
"name": "redditMetaData",
"name": "mediaMetaData",
"type": "object",
"properties": {
"mediaType": {
"type": "string",
"description": "description used in UI to identify the media type"
},
"userName": {
"type": "string",
"description": "User name of the Reddit post/comment author"
Expand Down
5 changes: 3 additions & 2 deletions components/brave_ads/browser/ads_service_impl_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,9 @@ class MockRewardsService : public RewardsService {
brave_rewards::RefreshPublisherCallback));
MOCK_METHOD0(GetAllNotifications,
const brave_rewards::RewardsNotificationService::RewardsNotificationsMap&());
MOCK_METHOD2(SaveTwitterPublisherInfo,
void(const std::map<std::string, std::string>&,
MOCK_METHOD3(SaveInlineMediaInfo,
void(const std::string&,
const std::map<std::string, std::string>&,
brave_rewards::SaveMediaInfoCallback));
MOCK_METHOD2(SetInlineTipSetting,
void(const std::string& key, bool enabled));
Expand Down
6 changes: 2 additions & 4 deletions components/brave_rewards/browser/rewards_service.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,10 +225,8 @@ class RewardsService : public KeyedService {
virtual const RewardsNotificationService::RewardsNotificationsMap&
GetAllNotifications() = 0;

virtual void SaveTwitterPublisherInfo(
const std::map<std::string, std::string>& args,
SaveMediaInfoCallback callback) = 0;
virtual void SaveRedditPublisherInfo(
virtual void SaveInlineMediaInfo(
const std::string& media_type,
const std::map<std::string, std::string>& args,
SaveMediaInfoCallback callback) = 0;

Expand Down
41 changes: 5 additions & 36 deletions components/brave_rewards/browser/rewards_service_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2214,39 +2214,7 @@ void RewardsServiceImpl::SaveRecurringTip(
AsWeakPtr()));
}

void RewardsServiceImpl::OnTwitterPublisherInfoSaved(
SaveMediaInfoCallback callback,
int32_t result,
ledger::PublisherInfoPtr publisher) {
if (!Connected()) {
std::move(callback).Run(nullptr);
return;
}
if (Connected()) {
ledger::Result result_converted = static_cast<ledger::Result>(result);
std::unique_ptr<brave_rewards::ContentSite> site;

if (result_converted == ledger::Result::LEDGER_OK) {
site = std::make_unique<brave_rewards::ContentSite>(
PublisherInfoToContentSite(*publisher));
}

std::move(callback).Run(std::move(site));
}
}

void RewardsServiceImpl::SaveTwitterPublisherInfo(
const std::map<std::string, std::string>& args,
SaveMediaInfoCallback callback) {
bat_ledger_->SaveMediaInfo(
"twitter",
mojo::MapToFlatMap(args),
base::BindOnce(&RewardsServiceImpl::OnTwitterPublisherInfoSaved,
AsWeakPtr(),
std::move(callback)));
}

void RewardsServiceImpl::OnRedditPublisherInfoSaved(
void RewardsServiceImpl::OnMediaInlineInfoSaved(
SaveMediaInfoCallback callback,
int32_t result,
ledger::PublisherInfoPtr publisher) {
Expand All @@ -2265,13 +2233,14 @@ void RewardsServiceImpl::OnRedditPublisherInfoSaved(
std::move(callback).Run(std::move(site));
}

void RewardsServiceImpl::SaveRedditPublisherInfo(
void RewardsServiceImpl::SaveInlineMediaInfo(
const std::string& media_type,
const std::map<std::string, std::string>& args,
SaveMediaInfoCallback callback) {
bat_ledger_->SaveMediaInfo(
"reddit",
media_type,
mojo::MapToFlatMap(args),
base::BindOnce(&RewardsServiceImpl::OnRedditPublisherInfoSaved,
base::BindOnce(&RewardsServiceImpl::OnMediaInlineInfoSaved,
AsWeakPtr(),
std::move(callback)));
}
Expand Down
12 changes: 3 additions & 9 deletions components/brave_rewards/browser/rewards_service_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,8 @@ class RewardsServiceImpl : public RewardsService,

void SetContributionAmount(const double amount) const override;

void SaveTwitterPublisherInfo(
const std::map<std::string, std::string>& args,
SaveMediaInfoCallback callback) override;

void SaveRedditPublisherInfo(
void SaveInlineMediaInfo(
const std::string& media_type,
const std::map<std::string, std::string>& args,
SaveMediaInfoCallback callback) override;

Expand Down Expand Up @@ -562,10 +559,7 @@ class RewardsServiceImpl : public RewardsService,
RefreshPublisherCallback callback,
const std::string& publisher_key,
bool verified);
void OnTwitterPublisherInfoSaved(SaveMediaInfoCallback callback,
int32_t result,
ledger::PublisherInfoPtr publisher);
void OnRedditPublisherInfoSaved(
void OnMediaInlineInfoSaved(
SaveMediaInfoCallback callback,
int32_t result,
ledger::PublisherInfoPtr publisher);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ chrome.runtime.onConnect.addListener(function () {
})
})

const tipTwitterUser = (tweetMetaData: RewardsTip.TweetMetaData) => {
const tipTwitterMedia = (mediaMetaData: RewardsTip.MediaMetaData) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

can we merge tipTwitterMedia and tipTwitterMedia?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

see comment

mediaMetaData.mediaType = 'twitter'
chrome.tabs.query({
active: true,
windowId: chrome.windows.WINDOW_ID_CURRENT
Expand All @@ -91,11 +92,12 @@ const tipTwitterUser = (tweetMetaData: RewardsTip.TweetMetaData) => {
if (tabId === undefined) {
return
}
chrome.braveRewards.tipTwitterUser(tabId, tweetMetaData)
chrome.braveRewards.tipTwitterUser(tabId, mediaMetaData)
})
}

const tipRedditUser = (redditMetaData: RewardsTip.RedditMetaData) => {
const tipRedditMedia = (mediaMetaData: RewardsTip.MediaMetaData) => {
mediaMetaData.mediaType = 'reddit'
chrome.tabs.query({
active: true,
windowId: chrome.windows.WINDOW_ID_CURRENT
Expand All @@ -107,19 +109,22 @@ const tipRedditUser = (redditMetaData: RewardsTip.RedditMetaData) => {
if (tabId === undefined) {
return
}
chrome.braveRewards.tipRedditUser(tabId, redditMetaData)
chrome.braveRewards.tipRedditUser(tabId, mediaMetaData)
})
}

chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
const action = typeof msg === 'string' ? msg : msg.type
switch (action) {
case 'tipTwitterUser': {
tipTwitterUser(msg.tweetMetaData)
return false
}
case 'tipRedditUser': {
tipRedditUser(msg.redditMetaData)
case 'tipInlineMedia': {
switch (msg.mediaMetaData.mediaType) {
case 'twitter':
tipTwitterMedia(msg.mediaMetaData)
break
case 'reddit':
tipRedditMedia(msg.mediaMetaData)
break
}
return false
}
case 'rewardsEnabled': {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const isOldReddit = () => {
redditUrl.hostname.startsWith('np')
}

const getOldRedditMetaData = (redditPost: Element): RewardsTip.RedditMetaData | null => {
const getOldRedditMetaData = (redditPost: Element): RewardsTip.MediaMetaData | null => {
if (!redditPost) {
return null
}
Expand Down Expand Up @@ -55,13 +55,14 @@ const getOldRedditMetaData = (redditPost: Element): RewardsTip.RedditMetaData |
}

return {
mediaType: 'reddit',
userName: userName,
postText: postText || '',
postRelDate: postRelDate || ''
}
}

const getRedditMetaData = (redditPost: Element): RewardsTip.RedditMetaData | null => {
const getRedditMetaData = (redditPost: Element): RewardsTip.MediaMetaData | null => {
if (!redditPost) {
return null
}
Expand Down Expand Up @@ -117,6 +118,7 @@ const getRedditMetaData = (redditPost: Element): RewardsTip.RedditMetaData | nul
}

return {
mediaType: 'reddit',
userName: userName,
postText: postText || '',
postRelDate: postRelDate
Expand Down Expand Up @@ -284,7 +286,7 @@ const createBraveTipActionForOld = (redditPost: Element) => {
braveTipButton.onclick = function (event) {
const redditMetaData = getOldRedditMetaData(redditPost)
if (redditMetaData) {
const msg = { type: 'tipRedditUser', redditMetaData: redditMetaData }
const msg = { type: 'tipInlineMedia', mediaMetaData: redditMetaData }
chrome.runtime.sendMessage(msg)
}
event.stopPropagation()
Expand All @@ -308,7 +310,7 @@ const createBraveTipAction = (redditPost: Element, isPost: boolean) => {
braveTipButton.onclick = function (event) {
const redditMetaData = getRedditMetaData(redditPost)
if (redditMetaData) {
const msg = { type: 'tipRedditUser', redditMetaData: redditMetaData }
const msg = { type: 'tipInlineMedia', mediaMetaData: redditMetaData }
chrome.runtime.sendMessage(msg)
}
event.stopPropagation()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { getMessage } from '../background/api/locale_api'

let timeout: any = null

const getTweetMetaData = (tweet: Element): RewardsTip.TweetMetaData | null => {
const getTweetMetaData = (tweet: Element): RewardsTip.MediaMetaData | null => {
if (!tweet) {
return null
}
Expand All @@ -27,7 +27,8 @@ const getTweetMetaData = (tweet: Element): RewardsTip.TweetMetaData | null => {
const tweetTimestamp = tweetTimestampElements[0].getAttribute('data-time') || ''

return {
name: tweet.getAttribute('data-name') || '',
mediaType: 'twitter',
twitterName: tweet.getAttribute('data-name') || '',
screenName: tweet.getAttribute('data-screen-name') || '',
userId: tweet.getAttribute('data-user-id') || '',
tweetId: tweet.getAttribute('data-tweet-id') || '',
Expand Down Expand Up @@ -61,7 +62,7 @@ const createBraveTipAction = (tweet: Element) => {
braveTipButton.onclick = function (event) {
const tweetMetaData = getTweetMetaData(tweet)
if (tweetMetaData) {
const msg = { type: 'tipTwitterUser', tweetMetaData: tweetMetaData }
const msg = { type: 'tipInlineMedia', mediaMetaData: tweetMetaData }
chrome.runtime.sendMessage(msg)
}
event.stopPropagation()
Expand Down
Loading