Merge 6a7e48e9c34590d79a757e16538b6453803624d8 into 963aa9f3e5ce81a4682c6ca3d136cddda614db33

This commit is contained in:
Panda Soli 2023-09-27 15:34:19 -03:00 committed by GitHub
commit 67c6340710
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 9 deletions

View File

@ -34,6 +34,9 @@ static int prompt(char* line, size_t size)
static void updateDiscordPresence() static void updateDiscordPresence()
{ {
if (SendPresence) { if (SendPresence) {
DiscordPresenceButton btn2 = {"DuckDuckGo", "https://duckduckgo.com", NULL};
DiscordPresenceButton btn1 = {"Google", "https://google.com", &btn2};
char buffer[256]; char buffer[256];
DiscordRichPresence discordPresence; DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence)); memset(&discordPresence, 0, sizeof(discordPresence));
@ -48,10 +51,11 @@ static void updateDiscordPresence()
discordPresence.partySize = 1; discordPresence.partySize = 1;
discordPresence.partyMax = 6; discordPresence.partyMax = 6;
discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC; discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC;
discordPresence.matchSecret = "xyzzy"; // discordPresence.matchSecret = "xyzzy";
discordPresence.joinSecret = "join"; // discordPresence.joinSecret = "join";
discordPresence.spectateSecret = "look"; // discordPresence.spectateSecret = "look";
discordPresence.instance = 0; discordPresence.instance = 0;
discordPresence.buttons = &btn1;
Discord_UpdatePresence(&discordPresence); Discord_UpdatePresence(&discordPresence);
} }
else { else {

View File

@ -23,6 +23,12 @@
extern "C" { extern "C" {
#endif #endif
typedef struct DiscordPresenceButton {
const char* label;
const char* url;
const struct DiscordPresenceButton* next;
} DiscordPresenceButton;
typedef struct DiscordRichPresence { typedef struct DiscordRichPresence {
const char* state; /* max 128 bytes */ const char* state; /* max 128 bytes */
const char* details; /* max 128 bytes */ const char* details; /* max 128 bytes */
@ -40,6 +46,7 @@ typedef struct DiscordRichPresence {
const char* joinSecret; /* max 128 bytes */ const char* joinSecret; /* max 128 bytes */
const char* spectateSecret; /* max 128 bytes */ const char* spectateSecret; /* max 128 bytes */
int8_t instance; int8_t instance;
const DiscordPresenceButton* buttons;
} DiscordRichPresence; } DiscordRichPresence;
typedef struct DiscordUser { typedef struct DiscordUser {

View File

@ -160,6 +160,20 @@ size_t JsonWriteRichPresenceObj(char* dest,
writer.Key("instance"); writer.Key("instance");
writer.Bool(presence->instance != 0); writer.Bool(presence->instance != 0);
if (presence->buttons) {
WriteArray buttons(writer, "buttons");
const DiscordPresenceButton* current = presence->buttons;
do {
if (current->label && current->url) {
WriteObject button(writer);
WriteOptionalString(writer, "label", current->label);
WriteOptionalString(writer, "url", current->url);
}
} while ((current = current->next) != NULL);
}
} }
} }
} }