summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--windows/WinUI/ToolbarItem.xaml5
-rw-r--r--windows/WinUI/ToolbarItem.xaml.cs42
2 files changed, 41 insertions, 6 deletions
diff --git a/windows/WinUI/ToolbarItem.xaml b/windows/WinUI/ToolbarItem.xaml
index 85e4122a..9517455c 100644
--- a/windows/WinUI/ToolbarItem.xaml
+++ b/windows/WinUI/ToolbarItem.xaml
@@ -43,7 +43,10 @@
<Separator/>
<MenuItem Header="ZeroTier Central"
Click="ToolbarItem_CentralClicked"/>
-
+ <MenuItem Header="Create and Join Network"
+ Click="ToolbarItem_NewNetwork"
+ x:Name="newNetworkItem"/>
+ <Separator/>
<MenuItem Header="About..."
Click="ToolbarItem_AboutClicked"/>
<MenuItem Header="Preferences..."
diff --git a/windows/WinUI/ToolbarItem.xaml.cs b/windows/WinUI/ToolbarItem.xaml.cs
index c16de3c3..2a0d717b 100644
--- a/windows/WinUI/ToolbarItem.xaml.cs
+++ b/windows/WinUI/ToolbarItem.xaml.cs
@@ -120,17 +120,21 @@ namespace WinUI
if (shouldShowOnboardProcess)
{
// TODO: Show onboarding process window (on main thread
- Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
- {
- PageSwitcher ps = new PageSwitcher();
- ps.Show();
- }));
+ showOnboardProcess();
shouldShowOnboardProcess = false;
}
}
}
+ private void showOnboardProcess()
+ {
+ Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
+ {
+ PageSwitcher ps = new PageSwitcher();
+ ps.Show();
+ }));
+ }
private void updateStatus(ZeroTierStatus status)
{
if (status != null)
@@ -142,6 +146,15 @@ namespace WinUI
nodeId = status.Address;
}));
}
+
+ if (CentralAPI.Instance.HasAccessToken())
+ {
+ newNetworkItem.IsEnabled = true;
+ }
+ else
+ {
+ newNetworkItem.IsEnabled = false;
+ }
}
private void ToolbarItem_NodeIDClicked(object sender, System.Windows.RoutedEventArgs e)
@@ -331,6 +344,25 @@ namespace WinUI
}
}
+ private async void ToolbarItem_NewNetwork(object sender, System.Windows.RoutedEventArgs e)
+ {
+ if (CentralAPI.Instance.HasAccessToken())
+ {
+ CentralAPI api = CentralAPI.Instance;
+ CentralNetwork newNetwork = await api.CreateNewNetwork();
+
+ APIHandler handler = APIHandler.Instance;
+ handler.JoinNetwork(this.Dispatcher, newNetwork.Id);
+
+ string nodeId = APIHandler.Instance.NodeAddress();
+ bool authorized = await CentralAPI.Instance.AuthorizeNode(nodeId, newNetwork.Id);
+ }
+ else
+ {
+ showOnboardProcess();
+ }
+ }
+
private void setWindowPosition(Window w)
{
double width = w.ActualWidth;