using System.Reflection; using HarmonyLib; using undead_universal_patch_il2cpp.Core; using undead_universal_patch_il2cpp.Core.Content.CustomRecNet; namespace undead_universal_patch_il2cpp.Patches.Internals; [HarmonyPatch] public class AuthenticationEventPatch { static PatchTypesResult patchResult = Util.PreparePatchTypes( "RecNet AccessToken event patch", "RecNet.Login", "SetAccessToken" ); static readonly PropertyInfo hasAccessTokenProperty = patchResult.Type?.GetProperty("HasAccessToken"); static bool Prepare() => Util.PostRequireTypes(patchResult, [ hasAccessTokenProperty ]).Success; static MethodBase TargetMethod() => patchResult.Method; private static bool RanPostActions { get; set; } = false; static void Postfix(ref string accessToken) { UniversalPatchPlugin.Log.LogInfo("Intercepted AccessToken"); RecNetInteractions.AccessToken = accessToken; if (!RanPostActions) { bool value = (bool)hasAccessTokenProperty.GetValue(patchResult.Type); if (value) UniversalPatchPlugin.Log.LogInfo("Running post-authentication actions"); foreach (var action in RecNetInteractions.postAuthenticationActions) action(); } else RanPostActions = true; } }