Skip to content

Commit

Permalink
Add support for opening usercards by ID (#4934)
Browse files Browse the repository at this point in the history
Co-authored-by: nerix <[email protected]>
  • Loading branch information
Mm2PL and Nerixyz authored Nov 6, 2023
1 parent 5209e47 commit f943f70
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- Minor: The account switcher is now styled to match your theme. (#4817)
- Minor: Add an invisible resize handle to the bottom of frameless user info popups and reply thread popups. (#4795)
- Minor: The installer now checks for the VC Runtime version and shows more info when it's outdated. (#4847)
- Minor: The `/usercard` command now accepts user ids. (#4934)
- Minor: Add menu actions to reply directly to a message or the original thread root. (#4923)
- Minor: The `/reply` command now replies to the latest message of the user. (#4919)
- Bugfix: Fixed an issue where certain emojis did not send to Twitch chat correctly. (#4840)
Expand Down
3 changes: 2 additions & 1 deletion src/controllers/commands/CommandController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -856,7 +856,8 @@ void CommandController::initialize(Settings &, Paths &paths)
if (words.size() < 2)
{
channel->addMessage(
makeSystemMessage("Usage: /usercard <user> [channel]"));
makeSystemMessage("Usage: /usercard <username> [channel] or "
"/usercard id:<id> [channel]"));
return "";
}

Expand Down
39 changes: 35 additions & 4 deletions src/widgets/dialogs/UserInfoPopup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,18 @@ void UserInfoPopup::setData(const QString &name,
const ChannelPtr &contextChannel,
const ChannelPtr &openingChannel)
{
this->userName_ = name;
const QStringView idPrefix = u"id:";
bool isId = name.startsWith(idPrefix);
if (isId)
{
this->userId_ = name.mid(idPrefix.size());
this->userName_ = "";
}
else
{
this->userName_ = name;
}

this->channel_ = openingChannel;

if (!contextChannel->isEmpty())
Expand All @@ -723,7 +734,11 @@ void UserInfoPopup::setData(const QString &name,

this->userStateChanged_.invoke();

this->updateLatestMessages();
if (!isId)
{
this->updateLatestMessages();
}
// If we're opening by ID, this will be called as soon as we get the information from twitch
}

void UserInfoPopup::updateLatestMessages()
Expand Down Expand Up @@ -792,6 +807,14 @@ void UserInfoPopup::updateUserData()
return;
}

// Correct for when being opened with ID
if (this->userName_.isEmpty())
{
this->userName_ = user.login;
// Ensure recent messages are shown
this->updateLatestMessages();
}

this->userId_ = user.id;
this->avatarUrl_ = user.profileImageUrl;

Expand Down Expand Up @@ -909,8 +932,16 @@ void UserInfoPopup::updateUserData()
[] {});
};

getHelix()->getUserByName(this->userName_, onUserFetched,
onUserFetchFailed);
if (!this->userId_.isEmpty())
{
getHelix()->getUserById(this->userId_, onUserFetched,
onUserFetchFailed);
}
else
{
getHelix()->getUserByName(this->userName_, onUserFetched,
onUserFetchFailed);
}

this->ui_.block->setEnabled(false);
this->ui_.ignoreHighlights->setEnabled(false);
Expand Down

0 comments on commit f943f70

Please sign in to comment.