diff --git a/browser/ui/webui/brave_tip_ui.cc b/browser/ui/webui/brave_tip_ui.cc index fe00015a726..170d5f2510e 100644 --- a/browser/ui/webui/brave_tip_ui.cc +++ b/browser/ui/webui/brave_tip_ui.cc @@ -363,8 +363,11 @@ void RewardsTipDOMHandler::TweetTip(const base::ListValue *args) { // Share the tip comment/compliment on Twitter. std::string comment = l10n_util::GetStringFUTF8( IDS_BRAVE_REWARDS_LOCAL_COMPLIMENT_TWEET, base::UTF8ToUTF16(name)); + std::string hashtag = l10n_util::GetStringUTF8( + IDS_BRAVE_REWARDS_LOCAL_COMPLIMENT_TWEET_HASHTAG); std::map share_url_args; share_url_args["comment"] = comment; + share_url_args["hashtag"] = hashtag; share_url_args["name"] = name.erase(0, 1); share_url_args["tweet_id"] = tweet_id; rewards_service_->GetShareURL( diff --git a/components/resources/brave_components_strings.grd b/components/resources/brave_components_strings.grd index 748a1dc83e3..038dde2a912 100644 --- a/components/resources/brave_components_strings.grd +++ b/components/resources/brave_components_strings.grd @@ -262,6 +262,7 @@ I just tipped $1user using the Brave Browser. Check it out at https://brave.com/tips. + TipWithBrave Amount: diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.cc index 5d7a7f3b1e6..4cf7e8a75db 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.cc @@ -114,11 +114,12 @@ void BatGetMedia::SaveMediaInfo(const std::string& type, } } +// static std::string BatGetMedia::GetShareURL( const std::string& type, const std::map& args) { if (type == TWITTER_MEDIA_TYPE) - return media_twitter_->GetShareURL(args); + return braveledger_media::MediaTwitter::GetShareURL(args); return std::string(); } diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.h b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.h index aac83616228..bfdf632f99f 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_get_media.h @@ -45,8 +45,9 @@ class BatGetMedia { const std::map& data, ledger::PublisherInfoCallback callback); - std::string GetShareURL(const std::string& type, - const std::map& args); + static std::string GetShareURL( + const std::string& type, + const std::map& args); private: void OnMediaActivityError(const ledger::VisitData& visit_data, diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.cc index 833e418052f..715dc4a0957 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.cc @@ -211,14 +211,21 @@ void MediaTwitter::SaveMediaInfo(const std::map& data, _2)); } +// static std::string MediaTwitter::GetShareURL( const std::map& args) { auto comment = args.find("comment"); auto name = args.find("name"); auto tweet_id = args.find("tweet_id"); - if (comment == args.end() || name == args.end() || tweet_id == args.end()) + auto hashtag = args.find("hashtag"); + if (comment == args.end() || name == args.end() || hashtag == args.end()) return std::string(); + // Append hashtag to comment ("%20%23" = percent-escaped space and + // number sign) + std::string comment_with_hashtag = + comment->second + "%20%23" + hashtag->second; + // If a tweet ID was specified, then quote the original tweet along // with the supplied comment; otherwise, just tweet the comment. std::string share_url; @@ -226,12 +233,12 @@ std::string MediaTwitter::GetShareURL( std::string quoted_tweet_url = base::StringPrintf("https://twitter.com/%s/status/%s", name->second.c_str(), tweet_id->second.c_str()); - share_url = - base::StringPrintf("https://twitter.com/intent/tweet?url=%s&text=%s", - quoted_tweet_url.c_str(), comment->second.c_str()); + share_url = base::StringPrintf( + "https://twitter.com/intent/tweet?text=%s&url=%s", + comment_with_hashtag.c_str(), quoted_tweet_url.c_str()); } else { share_url = base::StringPrintf("https://twitter.com/intent/tweet?text=%s", - comment->second.c_str()); + comment_with_hashtag.c_str()); } return share_url; } diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.h b/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.h index a7e2ac6fb1b..f31ed4523ed 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter.h @@ -6,9 +6,10 @@ #ifndef BRAVELEDGER_MEDIA_TWITTER_H_ #define BRAVELEDGER_MEDIA_TWITTER_H_ +#include + #include #include -#include #include #include "base/gtest_prod_util.h" @@ -30,7 +31,8 @@ class MediaTwitter : public ledger::LedgerCallbackHandler { void SaveMediaInfo(const std::map& data, ledger::PublisherInfoCallback callback); - std::string GetShareURL(const std::map& args); + static std::string GetShareURL( + const std::map& args); void ProcessActivityFromUrl(uint64_t window_id, const ledger::VisitData& visit_data); diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter_unittest.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter_unittest.cc index ba6450ed688..8ccd72cc6df 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter_unittest.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/media/twitter_unittest.cc @@ -33,6 +33,36 @@ TEST(MediaTwitterTest, GetProfileImageURL) { ASSERT_EQ(result, "https://twitter.com/emerick/profile_image?size=original"); } +TEST(MediaTwitterTest, GetShareURLWithoutQuotedTweet) { + std::map args; + args["comment"] = + "I just tipped @emerick using the Brave browser. Check it out at " + "https://brave.com/tips."; + args["name"] = "emerick"; + args["hashtag"] = "TipWithBrave"; + std::string result = braveledger_media::MediaTwitter::GetShareURL(args); + ASSERT_EQ(result, + "https://twitter.com/intent/tweet?text=I just tipped @emerick " + "using the Brave browser. Check it out at " + "https://brave.com/tips.%20%23TipWithBrave"); +} + +TEST(MediaTwitterTest, GetShareURLWithQuotedTweet) { + std::map args; + args["comment"] = + "I just tipped @emerick using the Brave browser. Check it out at " + "https://brave.com/tips."; + args["name"] = "emerick"; + args["hashtag"] = "TipWithBrave"; + args["tweet_id"] = "215559040011481088"; + std::string result = braveledger_media::MediaTwitter::GetShareURL(args); + ASSERT_EQ(result, + "https://twitter.com/intent/tweet?text=I just tipped @emerick " + "using the Brave browser. Check it out at " + "https://brave.com/tips.%20%23TipWithBrave&url=https://twitter.com/" + "emerick/status/215559040011481088"); +} + TEST(MediaTwitterTest, GetPublisherKey) { // key is empty std::string result = braveledger_media::MediaTwitter::GetPublisherKey("");