Skip to content

Commit a47785d

Browse files
committed
fix: add webpage after twitch redirect
1 parent b2a9cc0 commit a47785d

File tree

6 files changed

+56
-17
lines changed

6 files changed

+56
-17
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ jobs:
4848
sed -i "s/TWITCH_CLIENTID/${{secrets.TWITCH_CLIENTID}}/g" "MidiControl/App.config"
4949
shell: bash
5050

51+
- name: Replace Version
52+
id: code_version
53+
run: |
54+
sed -i "s/VERSION/${{ steps.vars.outputs.version }}/g" "MidiControl/Properties/AssemblyInfo.cs"
55+
shell: bash
56+
5157
- name: Resource generation
5258
run: |
5359
Set-Location -Path "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\"

MidiControl/MidiControl.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,10 @@
6666
</EmbeddedResource>
6767
</ItemGroup>
6868

69+
<ItemGroup>
70+
<None Update="Resources\redirect.html">
71+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
72+
</None>
73+
</ItemGroup>
74+
6975
</Project>

MidiControl/Resources/redirect.html

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
<!doctype html>
3+
<html lang="en">
4+
<head>
5+
<meta charset="utf-8">
6+
<title>MIDIControl - Twitch login - Redirect</title>
7+
</head>
8+
<body>
9+
<div>
10+
<p>MIDIControl - Twitch</p>
11+
<p>Twitch login successful, you can close this page.</p>
12+
</div>
13+
<script>
14+
setTimeout(function() {
15+
window.close()
16+
}, 5000);
17+
</script>
18+
</body>
19+
</html>

MidiControl/UI/OptionsGUI.cs

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Collections.Generic;
33
using System.Configuration;
44
using System.Diagnostics;
5-
using System.Threading;
5+
using System.Threading.Tasks;
66
using System.Web;
77
using System.Windows.Forms;
88

@@ -102,32 +102,36 @@ private void BtnSave_Click(object sender, EventArgs e)
102102
this.Dispose();
103103
}
104104

105-
private void BtnRequestTwitchLogin_Click(object sender, EventArgs e)
105+
private async void BtnRequestTwitchLogin_Click(object sender, EventArgs e)
106106
{
107-
var thread = new Thread(() =>
108-
{
107+
var taskServer = Task.Run(() => {
109108
var server = new WebServer();
110109
options.options.TwitchLogin = server.Login;
111110
options.options.TwitchToken = server.OAuthCode;
112111
options.options.TwitchRefreshToken = server.RefreshToken;
113112

114113
if (options.options.TwitchLogin != "" && options.options.TwitchToken != "")
115114
{
116-
txtBoxTwitchLogin.Text = options.options.TwitchLogin;
117115
TwitchChatControl.GetInstance().Connect();
116+
return options.options.TwitchLogin;
118117
}
118+
return string.Empty;
119+
});
120+
121+
var taskBrowser = Task.Run(() => {
122+
var uriBuilder = new UriBuilder("https://id.twitch.tv/oauth2/authorize?");
123+
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
124+
query.Add("response_type", "code");
125+
query.Add("client_id", ConfigurationManager.AppSettings["TwitchClientId"]);
126+
query.Add("redirect_uri", ConfigurationManager.AppSettings["TwitchLocalUrl"]);
127+
query.Add("scope", ConfigurationManager.AppSettings["TwitchScope"]);
128+
query.Add("state", "c3ab8aa609ea11e793ae92361f002671");
129+
uriBuilder.Query = query.ToString();
130+
Process.Start(uriBuilder.Uri.ToString());
119131
});
120-
thread.Start();
121-
122-
var uriBuilder = new UriBuilder("https://id.twitch.tv/oauth2/authorize?");
123-
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
124-
query.Add("response_type", "code");
125-
query.Add("client_id", ConfigurationManager.AppSettings["TwitchClientId"]);
126-
query.Add("redirect_uri", ConfigurationManager.AppSettings["TwitchLocalUrl"]);
127-
query.Add("scope", ConfigurationManager.AppSettings["TwitchScope"]);
128-
query.Add("state", "c3ab8aa609ea11e793ae92361f002671");
129-
uriBuilder.Query = query.ToString();
130-
Process.Start(uriBuilder.Uri.ToString());
132+
133+
await Task.WhenAll(taskServer, taskBrowser);
134+
txtBoxTwitchLogin.Text = await taskServer;
131135
}
132136

133137
private void BtnRequestTwitchLogout_Click(object sender, EventArgs e)

MidiControl/UI/TwitchLogin.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
using System;
33
using System.Collections.Generic;
44
using System.Configuration;
5+
using System.IO;
56
using System.Net;
67
using System.Net.Http;
78
using System.Net.Http.Headers;
9+
using System.Reflection;
810
using System.Text;
911
using System.Threading.Tasks;
1012
using static MidiControl.OptionsManagment;
@@ -101,7 +103,8 @@ public async Task HandleIncomingConnections()
101103
catch (ArgumentOutOfRangeException)
102104
{
103105
}
104-
var data = Encoding.UTF8.GetBytes("<html></html>");
106+
string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Resources\redirect.html");
107+
var data = File.ReadAllBytes(path);
105108
resp.ContentType = "text/html";
106109
resp.ContentEncoding = Encoding.UTF8;
107110
resp.ContentLength64 = data.LongLength;

setup.iss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Source: "MIDIControl.VisualElementsManifest.xml"; DestDir: "{app}";
2828
Source: "filterminmax.csv"; DestDir: "{userappdata}\{#AppName}";
2929
Source: "hotkeys.csv"; DestDir: "{userappdata}\{#AppName}";
3030
Source: "icon.png"; DestDir: "{app}";
31+
Source: "Resources\redirect.html"; DestDir: "{app}";
3132

3233
[Icons]
3334
Name: "{group}\{#AppName}"; Filename: "{app}\MidiControl.exe";

0 commit comments

Comments
 (0)