Decompiled source of MessageCopy v1.0.4

plugins/MessageCopy/MessageCopy.dll

Decompiled 3 weeks ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using BepInEx.NET.Common;
using BepInExResoniteShim;
using Elements.Core;
using FrooxEngine;
using FrooxEngine.UIX;
using HarmonyLib;
using SkyFrost.Base;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: TargetFramework(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
[assembly: AssemblyCompany("art0007i")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.4.0")]
[assembly: AssemblyInformationalVersion("1.0.4+3c8f81daff693f15228f4cdc8821d70be452556b")]
[assembly: AssemblyProduct("MessageCopy")]
[assembly: AssemblyTitle("MessageCopy")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/art0007i/MessageCopy")]
[assembly: AssemblyVersion("1.0.4.0")]
[module: RefSafetyRules(11)]
namespace MessageCopy;

[ResonitePlugin("art0007i.MessageCopy", "MessageCopy", "1.0.4", "art0007i", "https://github.com/art0007i/MessageCopy")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BasePlugin
{
	[HarmonyPatch(typeof(ContactsDialog), "AddMessage")]
	private class MessageCopyPatch
	{
		public static void Postfix(Image __result, UIBuilder ___messagesUi, Message message)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Expected I4, but got Unknown
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Expected O, but got Unknown
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Invalid comparison between Unknown and I4
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			string copyText = "";
			MessageType messageType = message.MessageType;
			switch ((int)messageType)
			{
			case 0:
				return;
			case 1:
			case 2:
			{
				Record val2 = message.ExtractContent<Record>();
				copyText = val2.AssetURI;
				break;
			}
			case 3:
			{
				SessionInfo val = message.ExtractContent<SessionInfo>();
				copyText = val.SessionId + "\n" + string.Join("\n", (global::System.Collections.Generic.IEnumerable<string>)val.SessionURLs);
				break;
			}
			case 4:
				return;
			default:
				Log.LogWarning((object)("Unknown message type: " + ((object)message.MessageType/*cast due to .constrained prefix*/).ToString()));
				return;
			}
			Slot val3 = Enumerable.Last<Slot>((global::System.Collections.Generic.IEnumerable<Slot>)((Component)__result).Slot.Children).AddSlot("Copy", true);
			___messagesUi.NestInto(val3);
			Button val4 = ___messagesUi.Button(Inspector.Duplicate);
			___messagesUi.NestOut();
			val4.LocalPressed += (ButtonEventHandler)delegate
			{
				Engine.Current.InputInterface.Clipboard.SetText(copyText);
			};
			bool flag = (int)message.MessageType == 3;
			bool flag2 = (int)message.MessageType == 2;
			if (message.IsSent && !flag && !flag2)
			{
				float2 val5 = default(float2);
				((float2)(ref val5))..ctor(2f, 0f);
				float2 one = float2.One;
				float2 val6 = (ref one) * 24;
				Rect val7 = new Rect(ref val5, ref val6);
				float2 val8 = default(float2);
				((float2)(ref val8))..ctor(0f, 0f);
				((UIComponent)val4).RectTransform.SetFixedRect(val7, ref val8);
			}
			else
			{
				float2 val9 = default(float2);
				((float2)(ref val9))..ctor(-26f, flag ? (-26f) : 0f);
				float2 one2 = float2.One;
				float2 val10 = (ref one2) * 24;
				Rect val11 = new Rect(ref val9, ref val10);
				float2 val12 = default(float2);
				((float2)(ref val12))..ctor(1f, (float)(flag ? 1 : 0));
				((UIComponent)val4).RectTransform.SetFixedRect(val11, ref val12);
			}
			HoverArea component = ((ContainerWorker<Component>)(object)((Component)__result).Slot).GetComponent<HoverArea>((Predicate<HoverArea>)null, false);
			ValueCopyExtensions.DriveFrom<bool>((IField<bool>)(object)val3.ActiveSelf_Field, (IField<bool>)(object)component.IsHovering, false, false, true);
		}
	}

	internal static ManualLogSource Log;

	public override void Load()
	{
		Log = ((BasePlugin)this).Log;
		((BasePlugin)this).HarmonyInstance.PatchAll();
	}
}
public static class PluginMetadata
{
	public const string GUID = "art0007i.MessageCopy";

	public const string NAME = "MessageCopy";

	public const string VERSION = "1.0.4";

	public const string AUTHORS = "art0007i";

	public const string REPOSITORY_URL = "https://github.com/art0007i/MessageCopy";
}