diff --git a/App.axaml.cs b/App.axaml.cs index 9f2bbbe..ec95bf8 100644 --- a/App.axaml.cs +++ b/App.axaml.cs @@ -15,12 +15,18 @@ public partial class App : Application { internal static TwitchAPI? TwitchApi = null; internal static int AutoUpdateDelay = 10_000; + internal static bool HasUserZnSubbed = false; + internal static string BetterRaidDataPath = ""; + internal static string TwitchBroadcasterId = ""; internal static string TwitchOAuthAccessToken = ""; internal static string TwitchOAuthAccessTokenFilePath = ""; internal static string TokenClientId = "kkxu4jorjrrc5jch1ito5i61hbev2o"; internal static readonly string TwitchOAuthRedirectUrl = "http://localhost:9900"; internal static readonly string TwitchOAuthResponseType = "token"; - internal static readonly string[] TwitchOAuthScopes = [ "channel:manage:raids", "user:read:chat" ]; + internal static readonly string[] TwitchOAuthScopes = [ + "channel:manage:raids", + "user:read:subscriptions" + ]; internal static readonly string TwitchOAuthUrl = $"https://id.twitch.tv/oauth2/authorize" + $"?client_id={TokenClientId}" + "&redirect_uri=http://localhost:9900" @@ -30,25 +36,24 @@ public partial class App : Application public override void Initialize() { var userHomeDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); - var betterRaidDir = ""; switch (Environment.OSVersion.Platform) { case PlatformID.Win32NT: - betterRaidDir = Path.Combine(userHomeDir, "AppData", "Roaming", "BetterRaid"); + BetterRaidDataPath = Path.Combine(userHomeDir, "AppData", "Roaming", "BetterRaid"); break; case PlatformID.Unix: - betterRaidDir = Path.Combine(userHomeDir, ".config", "BetterRaid"); + BetterRaidDataPath = Path.Combine(userHomeDir, ".config", "BetterRaid"); break; case PlatformID.MacOSX: - betterRaidDir = Path.Combine(userHomeDir, "Library", "Application Support", "BetterRaid"); + BetterRaidDataPath = Path.Combine(userHomeDir, "Library", "Application Support", "BetterRaid"); break; } - if (!Directory.Exists(betterRaidDir)) - Directory.CreateDirectory(betterRaidDir); + if (!Directory.Exists(BetterRaidDataPath)) + Directory.CreateDirectory(BetterRaidDataPath); - TwitchOAuthAccessTokenFilePath = Path.Combine(betterRaidDir, ".access_token"); + TwitchOAuthAccessTokenFilePath = Path.Combine(BetterRaidDataPath, ".access_token"); if (File.Exists(TwitchOAuthAccessTokenFilePath)) { @@ -56,7 +61,6 @@ public partial class App : Application InitTwitchClient(); } - AvaloniaXamlLoader.Load(this); } @@ -78,6 +82,29 @@ public partial class App : Application return; } + var channel = TwitchApi.Helix.Search + .SearchChannelsAsync(user.Login).Result.Channels + .FirstOrDefault(c => c.BroadcasterLogin == user.Login); + + var userSubs = TwitchApi.Helix.Subscriptions.CheckUserSubscriptionAsync( + userId: user.Id, + broadcasterId: "1120558409" + ).Result.Data; + + if (userSubs.Length > 0 && userSubs.Any(s => s.BroadcasterId == "1120558409")) + { + HasUserZnSubbed = true; + } + + if (channel == null) + { + Console.WriteLine("[ERROR] User channel could not be found!"); + return; + } + + TwitchBroadcasterId = channel.Id; + System.Console.WriteLine(TwitchBroadcasterId); + Console.WriteLine("[INFO] Connected to Twitch API as '{0}'!", user.DisplayName); if (overrideToken) diff --git a/Assets/logo.ico b/Assets/logo.ico new file mode 100644 index 0000000..30a7f06 Binary files /dev/null and b/Assets/logo.ico differ diff --git a/Assets/logo.png b/Assets/logo.png new file mode 100644 index 0000000..08577b0 Binary files /dev/null and b/Assets/logo.png differ diff --git a/BetterRaid.csproj b/BetterRaid.csproj index ef46a50..2ba6c9b 100644 --- a/BetterRaid.csproj +++ b/BetterRaid.csproj @@ -5,7 +5,12 @@ enable true app.manifest + embedded + true + true + true true + Assets/logo.ico diff --git a/BetterRaid.generated.sln b/BetterRaid.generated.sln index e4ffe1e..499205a 100644 --- a/BetterRaid.generated.sln +++ b/BetterRaid.generated.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.5.002.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BetterRaid", "BetterRaid.csproj", "{EDFD12AB-9E05-4D87-9139-C220A703CFDB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BetterRaid", "BetterRaid.csproj", "{260E29DE-709B-4860-8A06-F6C4F33B6659}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,10 +11,10 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EDFD12AB-9E05-4D87-9139-C220A703CFDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EDFD12AB-9E05-4D87-9139-C220A703CFDB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EDFD12AB-9E05-4D87-9139-C220A703CFDB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EDFD12AB-9E05-4D87-9139-C220A703CFDB}.Release|Any CPU.Build.0 = Release|Any CPU + {260E29DE-709B-4860-8A06-F6C4F33B6659}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {260E29DE-709B-4860-8A06-F6C4F33B6659}.Debug|Any CPU.Build.0 = Debug|Any CPU + {260E29DE-709B-4860-8A06-F6C4F33B6659}.Release|Any CPU.ActiveCfg = Release|Any CPU + {260E29DE-709B-4860-8A06-F6C4F33B6659}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Build/BetterRaid-0.0.1-alpha.exe b/Build/BetterRaid-0.0.1-alpha.exe new file mode 100755 index 0000000..3ab96ae Binary files /dev/null and b/Build/BetterRaid-0.0.1-alpha.exe differ diff --git a/Build/BetterRaid-0.0.1-alpha.x86_64 b/Build/BetterRaid-0.0.1-alpha.x86_64 new file mode 100755 index 0000000..25d6cc8 Binary files /dev/null and b/Build/BetterRaid-0.0.1-alpha.x86_64 differ diff --git a/Controls/RaidButton.axaml b/Controls/RaidButton.axaml index 06e1ba1..106dfa0 100644 --- a/Controls/RaidButton.axaml +++ b/Controls/RaidButton.axaml @@ -35,6 +35,25 @@ Grid.Row="0" Source="{Binding Channel.ThumbnailUrl}" /> + + + + +