diff --git a/Server/Components/TabControl/TabHeader.razor b/Server/Components/TabControl/TabHeader.razor
index 4fc63fa6..ebbf6fad 100644
--- a/Server/Components/TabControl/TabHeader.razor
+++ b/Server/Components/TabControl/TabHeader.razor
@@ -1,4 +1,6 @@
-
+@inject NavigationManager NavManager
+
+
@ChildContent
@@ -14,24 +16,39 @@
[Parameter]
public Action OnActivated { get; set; }
+ [Parameter]
+ public string NavigationUri { get; set; }
+
[Parameter]
public string Name { get; set; }
private string ActiveClass => Parent.ActiveTab == Name ? "active" : "";
- protected override void OnInitialized()
+ protected override async Task OnInitializedAsync()
{
+ await base.OnInitializedAsync();
if (Parent is null)
{
throw new Exception("TabHeader must be contained in a TabControl.");
}
- base.OnInitialized();
- }
+ if (!string.IsNullOrWhiteSpace(NavigationUri))
+ {
+ OnActivated?.Invoke();
+ }
+ }
+
private void SetActiveTab()
{
- Parent.SetActiveTab(this);
- StateHasChanged();
- OnActivated?.Invoke();
+ if (!string.IsNullOrWhiteSpace(NavigationUri))
+ {
+ NavManager.NavigateTo(NavigationUri);
+ }
+ else
+ {
+ Parent.SetActiveTab(this);
+ StateHasChanged();
+ OnActivated?.Invoke();
+ }
}
}
diff --git a/Server/Pages/DeviceDetails.razor b/Server/Pages/DeviceDetails.razor
index 1d2d3916..d8f58f84 100644
--- a/Server/Pages/DeviceDetails.razor
+++ b/Server/Pages/DeviceDetails.razor
@@ -1,4 +1,4 @@
-@page "/device-details/{deviceId?}"
+@page "/device-details/{deviceId?}/{activeTab?}"
@attribute [Authorize]
@inherits AuthComponentBase
@@ -39,15 +39,15 @@ else if (!DataService.DoesUserHaveAccessToDevice(Device.ID, User))
}
else
{
-
+
-
+
Details
-
+
Remote Logs
-
+
Script History
diff --git a/Server/Pages/DeviceDetails.razor.cs b/Server/Pages/DeviceDetails.razor.cs
index 6d99b379..2dd48c5e 100644
--- a/Server/Pages/DeviceDetails.razor.cs
+++ b/Server/Pages/DeviceDetails.razor.cs
@@ -25,6 +25,9 @@ namespace Remotely.Server.Pages
[Parameter]
public string DeviceId { get; set; }
+ [Parameter]
+ public string ActiveTab { get; set; }
+
[Inject]
private ICircuitConnection CircuitConnection { get; set; }
diff --git a/Server/Pages/ScriptsPage.razor b/Server/Pages/ScriptsPage.razor
index fdac78cc..36729eb1 100644
--- a/Server/Pages/ScriptsPage.razor
+++ b/Server/Pages/ScriptsPage.razor
@@ -1,18 +1,18 @@
-@page "/scripts"
+@page "/scripts/{activeTab?}"
@inherits AuthComponentBase
@using System.Collections
@inject IDataService DataService
-
+
-
+
Saved Scripts
-
+
Run Script
-
+
Script Schedules
@@ -33,6 +33,9 @@
@code {
+ [Parameter]
+ public string ActiveTab { get; set; }
+
public bool ShowOnlyMyScripts { get; set; } = true;
public readonly List TreeNodes = new();
diff --git a/Server/Services/DataService.cs b/Server/Services/DataService.cs
index 942f2a8b..14544325 100644
--- a/Server/Services/DataService.cs
+++ b/Server/Services/DataService.cs
@@ -926,6 +926,11 @@ namespace Remotely.Server.Services
public bool DoesUserHaveAccessToDevice(string deviceID, RemotelyUser remotelyUser)
{
+ if (remotelyUser is null)
+ {
+ return false;
+ }
+
using var dbContext = _dbFactory.CreateDbContext();
return dbContext.Devices