@@ -1071,22 +1071,30 @@ mergeInto(LibraryManager.library, {
10711071 } ,
10721072 //#endregion
10731073
1074+
1075+
1076+
10741077 //#region Discord
1075- // SubscribeDiscord: function () {
1076- // if (!window.Playroom) {
1077- // console.error(
1078- // "Playroom library is not loaded. Please make sure to call InsertCoin first."
1079- // );
1080- // return 0;
1081- // }
1082-
1083- // Playroom.getDiscordSDK().then(discordSDK => {
1084- // var formatted = discordSDK.subscribe();
1085-
1086- // }).catch(err => {
1087- // console.error("Failed to load Discord SDK:", err);
1088- // });
1089- // },
1078+ SubscribeDiscordInternal : function ( eventNamePtr , callbackPtr ) {
1079+ if ( ! window . Playroom ) {
1080+ console . error (
1081+ "Playroom library is not loaded. Please make sure to call InsertCoin first."
1082+ ) ;
1083+ return 0 ;
1084+ }
1085+
1086+ var eventName = UTF8ToString ( eventNamePtr ) ;
1087+ console . warn ( `[JSLIB] Event Name: ${ eventName } ` )
1088+
1089+ function eventHandler ( data ) {
1090+ const dataJson = JSON . stringify ( data ) ;
1091+ var key = _ConvertString ( eventName ) ;
1092+
1093+ { { { makeDynCall ( "vii" , "callbackPtr" ) } } } ( key , stringToNewUTF8 ( dataJson ) ) ;
1094+ }
1095+
1096+ Playroom . getDiscordClient ( ) . subscribe ( eventName , eventHandler ) . catch ( ( error ) => console . error ( `[JSLIB]: Error in subscribe` , error ) ) ;
1097+ } ,
10901098
10911099 OpenDiscordInviteDialogInternal : function ( callback ) {
10921100 if ( ! window . Playroom ) {
@@ -1106,7 +1114,7 @@ mergeInto(LibraryManager.library, {
11061114 } ) ;
11071115 } ,
11081116
1109- StartDiscordPurchaseInternal : function ( skuId , callback ) {
1117+ StartDiscordPurchaseInternal : function ( skuId , callback , errorCallback ) {
11101118 if ( ! window . Playroom ) {
11111119 console . error (
11121120 "Playroom library is not loaded. Please make sure to call InsertCoin first."
@@ -1115,19 +1123,24 @@ mergeInto(LibraryManager.library, {
11151123 }
11161124
11171125 try {
1126+
1127+ var skuIDStr = UTF8ToString ( skuId )
1128+
11181129 // startPurchase internal…
1119- Playroom . getDiscordClient ( ) . commands . startPurchase ( { sku_id : UTF8ToString ( skuId ) } ) . then ( ( response ) => {
1130+ Playroom . getDiscordClient ( ) . commands . startPurchase ( { sku_id : skuIDStr } ) . then ( ( response ) => {
11201131 console . log ( "[JSLIB]: Purchase started successfully." ) ;
1121- var keyPtr = stringToNewUTF8 ( skuId ) ;
1122- var returnData = stringToNewUTF8 ( JSON . stringify ( response ) ) ;
1123-
1124- console . log ( "[JSLIB]: Purchase response: " , response ) ;
1125- console . warn ( "[JSLIB]: Purchase data json: " , JSON . stringify ( response ) ) ;
1132+
1133+ var keyPtr = _ConvertString ( skuIDStr ) ;
11261134
1127- { { { makeDynCall ( 'vii' , 'callback' ) } } } ( keyPtr , dataStrPtr ) ;
1135+ var returnData = stringToNewUTF8 ( JSON . stringify ( response ) ) ;
1136+ { { { makeDynCall ( 'vii' , 'callback' ) } } } ( keyPtr , returnData ) ;
11281137 } )
11291138 . catch ( ( error ) => {
11301139 console . error ( "[JSLIB]: Failed to start purchase:" , error ) ;
1140+ var errorJson = JSON . stringify ( error )
1141+ console . log ( "error: " + errorJson ) ;
1142+
1143+ { { { makeDynCall ( 'vi' , 'errorCallback' ) } } } ( stringToNewUTF8 ( errorJson ) ) ;
11311144 } ) ;
11321145 } catch ( error ) {
11331146 console . error ( "[JSLIB]: Error starting purchase:" , error ) ;
0 commit comments