@@ -149,17 +149,41 @@ size_t JsonWriteRichPresenceObj(char* dest,
149
149
}
150
150
}
151
151
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
+ }
159
162
}
160
163
161
164
writer.Key (" instance" );
162
165
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
+ }
163
187
}
164
188
}
165
189
}
0 commit comments