Achievements: Centralize profile URL building

pull/3766/head
Stenzek 1 week ago
parent 79c08b6486
commit 5d46613107
No known key found for this signature in database

@ -78,6 +78,7 @@ static constexpr const char* UNLOCK_SOUND_NAME = "sounds/achievements/unlock.wav
static constexpr const char* LBSUBMIT_SOUND_NAME = "sounds/achievements/lbsubmit.wav";
constexpr const char* const RA_LOGO_ICON_NAME = "images/ra-icon.webp";
constexpr const char* const RA_LOGO_SVG_ICON_NAME = "images/ra-icon.svg";
constexpr const char* const RA_REGISTER_URL = "https://retroachievements.org/createaccount.php";
static constexpr float LOGIN_NOTIFICATION_TIME = 5.0f;
static constexpr float ACHIEVEMENT_SUMMARY_NOTIFICATION_TIME = 5.0f;
@ -2234,6 +2235,11 @@ SmallString Achievements::GetLoggedInUserPointsSummary()
return ret;
}
std::string Achievements::GetProfileURL(std::string_view username)
{
return fmt::format("https://retroachievements.org/user/{}", Path::URLEncode(username));
}
u32 Achievements::GetPauseThrottleFrames()
{
if (!IsActive())

@ -177,6 +177,9 @@ const std::string& GetLoggedInUserIconURL();
/// Should be called with the lock held.
SmallString GetLoggedInUserPointsSummary();
/// Returns a URL for the given user's profile.
std::string GetProfileURL(std::string_view username);
/// Returns the URL for the specified game icon, using the game ID.
std::string GetGameBadgeURL(u32 game_id);
@ -190,6 +193,9 @@ u32 GetPendingUnlockCount();
extern const char* const RA_LOGO_ICON_NAME;
extern const char* const RA_LOGO_SVG_ICON_NAME;
/// URL for registering accounts.
extern const char* const RA_REGISTER_URL;
} // namespace Achievements
/// Functions implemented in the frontend.

@ -33,7 +33,6 @@ LOG_CHANNEL(FullscreenUI);
namespace FullscreenUI {
static constexpr const char* ACHEIVEMENT_DETAILS_URL_TEMPLATE = "https://retroachievements.org/achievement/{}";
static constexpr const char* PROFILE_DETAILS_URL_TEMPLATE = "https://retroachievements.org/user/{}";
static constexpr float WINDOW_ALPHA = 0.9f;
static constexpr float WINDOW_HEADING_ALPHA = 0.95f;
@ -2987,7 +2986,7 @@ bool FullscreenUI::DrawLeaderboardEntry(const rc_client_leaderboard_entry_t& ent
if (pressed)
{
const std::string url = fmt::format(fmt::runtime(PROFILE_DETAILS_URL_TEMPLATE), entry.user);
const std::string url = Achievements::GetProfileURL(entry.user);
INFO_LOG("Opening profile details: {}", url);
Host::OpenURL(url);
}

@ -374,7 +374,7 @@ void AchievementSettingsWidget::onLoginCompleted()
void AchievementSettingsWidget::onRegisterUserPressed()
{
QtUtils::OpenURL(this, QUrl(QStringLiteral("https://retroachievements.org/createaccount.php")));
QtUtils::OpenURL(this, QUrl(QString::fromLatin1(Achievements::RA_REGISTER_URL)));
}
void AchievementSettingsWidget::onViewProfilePressed()
@ -383,7 +383,5 @@ void AchievementSettingsWidget::onViewProfilePressed()
if (username.empty())
return;
const QByteArray encoded_username(QUrl::toPercentEncoding(QString::fromStdString(username)));
QtUtils::OpenURL(
this, QUrl(QStringLiteral("https://retroachievements.org/user/%1").arg(QString::fromUtf8(encoded_username))));
QtUtils::OpenURL(this, QUrl(QString::fromStdString(Achievements::GetProfileURL(username))));
}

Loading…
Cancel
Save