@@ -2656,7 +2656,7 @@ internal void OnNewLicenseList() {
26562656 result = EResult . Timeout ;
26572657 purchaseResultDetail = EPurchaseResultDetail . Timeout ;
26582658 } else if ( redeemResult . purchase_receipt_info == null ) {
2659- result = EResult . Timeout ;
2659+ result = EResult . BadResponse ;
26602660 purchaseResultDetail = EPurchaseResultDetail . NoDetail ;
26612661 } else {
26622662 result = ( EResult ) redeemResult . purchase_receipt_info . purchase_status ;
@@ -2702,7 +2702,7 @@ internal void OnNewLicenseList() {
27022702 case EPurchaseResultDetail . BadActivationCode :
27032703 case EPurchaseResultDetail . CannotRedeemCodeFromClient :
27042704 case EPurchaseResultDetail . DuplicateActivationCode :
2705- case EPurchaseResultDetail . NoDetail : // OK
2705+ case EPurchaseResultDetail . NoDetail :
27062706 case EPurchaseResultDetail . Timeout :
27072707 if ( ( result != EResult . Timeout ) && ( purchaseResultDetail != EPurchaseResultDetail . Timeout ) ) {
27082708 unusedKeys . Remove ( key ) ;
@@ -2750,21 +2750,20 @@ internal void OnNewLicenseList() {
27502750 continue ;
27512751 }
27522752
2753- if ( redeemResponse . purchase_receipt_info == null ) {
2754- response . AppendLine ( FormatBotResponse ( Strings . FormatBotRedeem ( key , $ "{ EResult . Timeout } /{ EPurchaseResultDetail . NoDetail } ") , innerBot . BotName ) ) ;
2755-
2756- continue ;
2757- }
2758-
27592753 triedBots . Add ( innerBot ) ;
27602754
2761- EResult redeemResult = ( EResult ) redeemResponse . purchase_receipt_info . purchase_status ;
2762- EPurchaseResultDetail redeemPurchaseResult = ( EPurchaseResultDetail ) redeemResponse . purchase_result_details ;
2755+ EResult redeemResult = EResult . BadResponse ;
2756+ EPurchaseResultDetail redeemPurchaseResult = EPurchaseResultDetail . NoDetail ;
2757+
2758+ if ( redeemResponse . purchase_receipt_info != null ) {
2759+ redeemResult = ( EResult ) redeemResponse . purchase_receipt_info . purchase_status ;
2760+ redeemPurchaseResult = ( EPurchaseResultDetail ) redeemResponse . purchase_result_details ;
2761+ }
27632762
27642763 switch ( redeemPurchaseResult ) {
27652764 case EPurchaseResultDetail . BadActivationCode :
27662765 case EPurchaseResultDetail . DuplicateActivationCode :
2767- case EPurchaseResultDetail . NoDetail : // OK
2766+ case EPurchaseResultDetail . NoDetail :
27682767 // This key is already handled, as we either redeemed it or we're sure it's dupe/invalid
27692768 alreadyHandled = true ;
27702769
@@ -2777,7 +2776,7 @@ internal void OnNewLicenseList() {
27772776 break ;
27782777 }
27792778
2780- Dictionary < uint , string > ? redeemItems = redeemResponse . purchase_receipt_info . line_items . Count > 0 ? redeemResponse . purchase_receipt_info . line_items . ToDictionary ( static lineItem => lineItem . packageid , static lineItem => lineItem . line_item_description ) : null ;
2779+ Dictionary < uint , string > ? redeemItems = redeemResponse . purchase_receipt_info ? . line_items . Count > 0 ? redeemResponse . purchase_receipt_info . line_items . ToDictionary ( static lineItem => lineItem . packageid , static lineItem => lineItem . line_item_description ) : null ;
27812780
27822781 response . AppendLine ( FormatBotResponse ( redeemItems ? . Count > 0 ? Strings . FormatBotRedeemWithItems ( key , $ "{ redeemResult } /{ redeemPurchaseResult } ", string . Join ( ", " , redeemItems ) ) : Strings . FormatBotRedeem ( key , $ "{ redeemResult } /{ redeemPurchaseResult } ") , innerBot . BotName ) ) ;
27832782
0 commit comments