@@ -1172,28 +1172,54 @@ mergeInto(LibraryManager.library, {
11721172 } ) ;
11731173
11741174 } ,
1175-
1176- DiscordPriceFormatInternal : function ( amount , currency , locale ) {
1177- if ( ! window . Playroom ) {
1178- console . error (
1179- "Playroom library is not loaded. Please make sure to call InsertCoin first."
1175+
1176+ // callback variant
1177+ /* DiscordPriceFormatInternal: function(amount, currencyOrPtr, localeOrPtr, callbackPtr) {
1178+ var currency = (typeof currencyOrPtr === 'string')
1179+ ? currencyOrPtr
1180+ : UTF8ToString(currencyOrPtr);
1181+ var locale = (typeof localeOrPtr === 'string')
1182+ ? localeOrPtr
1183+ : UTF8ToString(localeOrPtr);
1184+ console.warn("[jslib] args received:", amount, currency, locale);
1185+ Playroom.getDiscordSDK().then(discordSDK => {
1186+ var formatted = discordSDK.PriceUtils.formatPrice(
1187+ { amount: amount, currency: currency },
1188+ locale
11801189 );
1181- return 0 ;
1182- }
1190+ console.warn("[jslib] formatted:", formatted);
1191+ {{{ makeDynCall("vi", "callbackPtr") }}}(stringToNewUTF8(formatted));
1192+ }).catch(err => {
1193+ console.error("Discord SDK load failed:", err);
1194+ {{{ makeDynCall("vi", "callbackPtr") }}}(0);
1195+ });
1196+ },
1197+ */
11831198
1184- Playroom . getDiscordSDK ( ) . then ( discordSDK => {
1185- var a = UTF8ToString ( amount ) ;
1186- var c = UTF8ToString ( currency ) ;
1187- var l = UTF8ToString ( locale ) ;
1188- var formatted = discordSDK . PriceUtils . formatPrice ( { price : a , currency : c } , l ) ;
1189- console . log ( formatted ) ;
1190- var bufferSize = lengthBytesUTF8 ( str ) + 1 ;
1199+ DiscordPriceFormatInternal : function ( amount , currencyOrPtr , localeOrPtr ) {
1200+ var currency = ( typeof currencyOrPtr === 'string' )
1201+ ? currencyOrPtr
1202+ : UTF8ToString ( currencyOrPtr ) ;
1203+ var locale = ( typeof localeOrPtr === 'string' )
1204+ ? localeOrPtr
1205+ : UTF8ToString ( localeOrPtr ) ;
1206+
1207+ console . warn ( "[jslib] args received:" , amount , currency , locale ) ;
1208+
1209+ try {
1210+ var formatted = Playroom . getDiscordSDK ( ) . PriceUtils . formatPrice (
1211+ { amount : amount , currency : currency } ,
1212+ locale
1213+ ) ;
1214+
1215+ var bufferSize = lengthBytesUTF8 ( formatted ) + 1 ;
11911216 var buffer = _malloc ( bufferSize ) ;
1192- stringToUTF8 ( str , buffer , bufferSize ) ;
1217+ stringToUTF8 ( formatted , buffer , bufferSize ) ;
11931218 return buffer ;
1194- } ) . catch ( err => {
1195- console . error ( "Failed to load Discord SDK:" , err ) ;
1196- } ) ;
1219+ } catch ( err ) {
1220+ console . error ( "[JSLIB] error while formatting prices:" , err ) ;
1221+ return 0 ;
1222+ }
11971223 } ,
11981224 //#endregion
11991225
0 commit comments