@@ -149,17 +149,41 @@ size_t JsonWriteRichPresenceObj(char* dest,
149149 }
150150 }
151151
152- if ((presence->matchSecret && presence->matchSecret [0 ]) ||
153- (presence->joinSecret && presence->joinSecret [0 ]) ||
154- (presence->spectateSecret && presence->spectateSecret [0 ])) {
155- WriteObject secrets (writer, " secrets" );
156- WriteOptionalString (writer, " match" , presence->matchSecret );
157- WriteOptionalString (writer, " join" , presence->joinSecret );
158- WriteOptionalString (writer, " spectate" , presence->spectateSecret );
152+ // Send secrets only when buttons aren't set
153+ if (!presence->buttons ) {
154+ if ((presence->matchSecret && presence->matchSecret [0 ]) ||
155+ (presence->joinSecret && presence->joinSecret [0 ]) ||
156+ (presence->spectateSecret && presence->spectateSecret [0 ])) {
157+ WriteObject secrets (writer, " secrets" );
158+ WriteOptionalString (writer, " match" , presence->matchSecret );
159+ WriteOptionalString (writer, " join" , presence->joinSecret );
160+ WriteOptionalString (writer, " spectate" , presence->spectateSecret );
161+ }
159162 }
160163
161164 writer.Key (" instance" );
162165 writer.Bool (presence->instance != 0 );
166+
167+ if (presence->buttons ) {
168+ const auto btns = presence->buttons ;
169+ WriteArray buttons (writer, " buttons" );
170+
171+ if (btns[0 ].label [0 ]) {
172+ WriteObject button0 (writer);
173+ WriteKey (writer, " url" );
174+ writer.String (btns[0 ].url );
175+ WriteKey (writer, " label" );
176+ writer.String (btns[0 ].label );
177+ }
178+
179+ if (btns[1 ].label [0 ]) {
180+ WriteObject button1 (writer);
181+ WriteKey (writer, " url" );
182+ writer.String (btns[1 ].url );
183+ WriteKey (writer, " label" );
184+ writer.String (btns[1 ].label );
185+ }
186+ }
163187 }
164188 }
165189 }
0 commit comments