Skip to content

Commit fca16d1

Browse files
Version 0.9.1 (#19)
* Fix for OnBeingHosted event * Better Exception Handling in base TwitchClient * Update Version
1 parent 776edb4 commit fca16d1

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

TwitchLib.Unity/Client.cs

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,29 @@
11
using System;
22
using TwitchLib.Client;
33
using TwitchLib.Client.Events;
4+
using TwitchLib.Client.Exceptions;
45
using TwitchLib.Client.Interfaces;
6+
using TwitchLib.Client.Models;
57
using UnityEngine;
68

79
namespace TwitchLib.Unity
810
{
911
public class Client : TwitchClient, ITwitchClient
1012
{
1113
private readonly GameObject _threadDispatcher;
14+
public new bool OverrideBeingHostedCheck { get; set; }
15+
16+
public new ConnectionCredentials ConnectionCredentials
17+
{
18+
get => base.ConnectionCredentials;
19+
set
20+
{
21+
if (IsConnected)
22+
ThreadDispatcher.Instance().Enqueue(() => throw new IllegalAssignmentException("While the client is connected, you are unable to change the connection credentials. Please disconnect first and then change them."));
23+
base.ConnectionCredentials = value;
24+
TwitchUsername = value.TwitchUsername;
25+
}
26+
}
1227

1328
#region Events
1429
/// <summary>
@@ -210,10 +225,21 @@ public Client() : base(null)
210225
_threadDispatcher = new GameObject("TwitchClientUnityDispatcher");
211226
_threadDispatcher.AddComponent<ThreadDispatcher>();
212227
UnityEngine.Object.DontDestroyOnLoad(_threadDispatcher);
213-
214-
base.OnLog += ((object sender, OnLogArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnLog?.Invoke(sender, e)); });
228+
229+
base.OverrideBeingHostedCheck = true;
230+
231+
base.OnLog += (object sender, OnLogArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnLog?.Invoke(sender, e)); };
215232
base.OnConnected += ((object sender, OnConnectedArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnConnected?.Invoke(sender, e)); });
216-
base.OnJoinedChannel += ((object sender, OnJoinedChannelArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnJoinedChannel?.Invoke(sender, e)); });
233+
234+
base.OnJoinedChannel += ((object sender, OnJoinedChannelArgs e) => {
235+
236+
ThreadDispatcher.Instance().Enqueue(() => OnJoinedChannel?.Invoke(sender, e));
237+
238+
if (OnBeingHosted == null) return;
239+
if (e.Channel.ToLower() != TwitchUsername && !OverrideBeingHostedCheck)
240+
ThreadDispatcher.Instance().Enqueue(() => throw new BadListenException("BeingHosted", "You cannot listen to OnBeingHosted unless you are connected to the broadcaster's channel as the broadcaster. You may override this by setting the TwitchClient property OverrideBeingHostedCheck to true."));
241+
});
242+
217243
base.OnIncorrectLogin += ((object sender, OnIncorrectLoginArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnIncorrectLogin?.Invoke(sender, e)); });
218244
base.OnChannelStateChanged += ((object sender, OnChannelStateChangedArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnChannelStateChanged?.Invoke(sender, e)); });
219245
base.OnUserStateChanged += ((object sender, OnUserStateChangedArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnUserStateChanged?.Invoke(sender, e)); });
@@ -253,6 +279,23 @@ public Client() : base(null)
253279
base.OnSelfRaidError += ((object sender, EventArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnSelfRaidError?.Invoke(sender, e)); });
254280
base.OnNoPermissionError += ((object sender, EventArgs e) => { ThreadDispatcher.Instance().Enqueue(() => OnNoPermissionError?.Invoke(sender, e)); });
255281
}
282+
283+
/// <summary>
284+
/// Sends a request to get channel moderators. You MUST listen to OnModeratorsReceived event./>.
285+
/// </summary>
286+
/// <param name="channel">JoinedChannel object to designate which channel to send request to.</param>
287+
public new void GetChannelModerators(JoinedChannel channel)
288+
{
289+
if (!IsInitialized) HandleNotInitialized();
290+
if (OnModeratorsReceived == null)
291+
throw new EventNotHandled("OnModeratorsReceived");
292+
SendMessage(channel, "/mods");
293+
}
294+
295+
private new void HandleNotInitialized()
296+
{
297+
ThreadDispatcher.Instance().Enqueue(() => throw new ClientNotInitializedException("The twitch client has not been initialized and cannot be used. Please call Initialize();"));
298+
}
256299
}
257300
}
258301

TwitchLib.Unity/TwitchLib.Unity.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>net452</TargetFramework>
55
<PackageId>TwitchLib.Unity</PackageId>
6-
<Version>0.9.0</Version>
6+
<Version>0.9.1</Version>
77
<Description>Unity wrapper system for TwitchLib</Description>
88
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
99
<Authors>LuckyNoS7evin</Authors>
@@ -17,8 +17,8 @@
1717
<RepositoryType>Git</RepositoryType>
1818
<PackageTags>twitch library unity3d unity dotnet c# csharp net standard 2.0</PackageTags>
1919
<NeutralLanguage>en-US</NeutralLanguage>
20-
<AssemblyVersion>0.9.0.0</AssemblyVersion>
21-
<FileVersion>0.9.0.0</FileVersion>
20+
<AssemblyVersion>0.9.1.0</AssemblyVersion>
21+
<FileVersion>0.9.1.0</FileVersion>
2222
</PropertyGroup>
2323

2424
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">

0 commit comments

Comments
 (0)