diff --git a/Server/Components/Scripts/RunScript.razor b/Server/Components/Scripts/RunScript.razor
index 1cffdfdb..5838fe68 100644
--- a/Server/Components/Scripts/RunScript.razor
+++ b/Server/Components/Scripts/RunScript.razor
@@ -15,7 +15,7 @@
Show only mine
- Show only mine
- _selectedScript.Id == Guid.Empty ||
- _selectedScript.CreatorId == User.Id ||
- User.IsAdministrator;
+ _selectedScript.CreatorId == User.Id || User.IsAdministrator;
private bool CanDeleteScript => !string.IsNullOrWhiteSpace(_selectedScript.CreatorId) &&
(_selectedScript.CreatorId == User.Id || User.IsAdministrator);
diff --git a/Server/Components/Scripts/ScriptSchedules.razor b/Server/Components/Scripts/ScriptSchedules.razor
index db84391c..a60ea597 100644
--- a/Server/Components/Scripts/ScriptSchedules.razor
+++ b/Server/Components/Scripts/ScriptSchedules.razor
@@ -71,7 +71,7 @@
Show only mine
- : ComponentBase
{
[Parameter]
- public List DataSource { get; set; }
+ public IEnumerable DataSource { get; set; }
[Parameter]
public Func> ChildItemSelector { get; set; }
diff --git a/Server/Pages/ManageOrganization.razor b/Server/Pages/ManageOrganization.razor
index 0342b513..d0413f66 100644
--- a/Server/Pages/ManageOrganization.razor
+++ b/Server/Pages/ManageOrganization.razor
@@ -188,7 +188,7 @@
-
+
diff --git a/Server/Pages/ScriptsPage.razor b/Server/Pages/ScriptsPage.razor
index 59cc67ac..aa09be59 100644
--- a/Server/Pages/ScriptsPage.razor
+++ b/Server/Pages/ScriptsPage.razor
@@ -32,14 +32,47 @@
@code {
+ private IEnumerable? _filteredScriptNodes;
+ private bool _showOnlyMyScripts = true;
[Parameter]
public string ActiveTab { get; set; }
- public bool ShowOnlyMyScripts { get; set; } = true;
+ public bool ShowOnlyMyScripts
+ {
+ get => _showOnlyMyScripts;
+ set
+ {
+ _filteredScriptNodes = null;
+ _showOnlyMyScripts = value;
+ }
+ }
public List TreeNodes { get; } = new();
+ public IEnumerable FilteredScriptNodes
+ {
+ get
+ {
+ if (_filteredScriptNodes?.Any() == true)
+ {
+ return _filteredScriptNodes;
+ }
+
+ if (ShowOnlyMyScripts)
+ {
+ _filteredScriptNodes = TreeNodes.Where(x =>
+ x.Script.CreatorId == User.Id);
+ }
+ else
+ {
+ _filteredScriptNodes = TreeNodes.Where(x =>
+ x.Script.IsPublic || x.Script.CreatorId == User.Id);
+ }
+
+ return _filteredScriptNodes;
+ }
+ }
public string GetItemIconCss(ScriptTreeNode viewModel)
{
@@ -53,18 +86,12 @@
public async Task RefreshScripts()
{
TreeNodes.Clear();
+ _filteredScriptNodes = null;
var allScripts = await DataService.GetSavedScriptsWithoutContent(User.Id, User.OrganizationID);
foreach (var script in allScripts)
{
- if (ShowOnlyMyScripts &&
- script.CreatorId != User.Id &&
- !script.IsPublic)
- {
- continue;
- }
-
var root = BuildFolderPath(script.FolderPath);
root.Add(new ScriptTreeNode()
{
diff --git a/Server/Program.cs b/Server/Program.cs
index 3e3b28a6..cdc8e383 100644
--- a/Server/Program.cs
+++ b/Server/Program.cs
@@ -268,7 +268,7 @@ using (var scope = app.Services.CreateScope())
context.Database.Migrate();
}
- dataService.SetAllDevicesNotOnline();
+ await dataService.SetAllDevicesNotOnline();
dataService.CleanupOldRecords();
loggerFactory.AddProvider(new DbLoggerProvider(app.Environment, app.Services));
diff --git a/Server/Services/DataService.cs b/Server/Services/DataService.cs
index f6a7c496..f6103405 100644
--- a/Server/Services/DataService.cs
+++ b/Server/Services/DataService.cs
@@ -190,7 +190,7 @@ namespace Remotely.Server.Services
Task ResetBranding(string organizationId);
- void SetAllDevicesNotOnline();
+ Task SetAllDevicesNotOnline();
Task SetDisplayName(RemotelyUser user, string displayName);
@@ -1467,6 +1467,7 @@ namespace Remotely.Server.Services
using var dbContext = _appDbFactory.GetContext();
return await dbContext.SavedScripts
+ .Include(x => x.Creator)
.FirstOrDefaultAsync(x =>
x.Id == scriptId &&
(x.IsPublic || x.CreatorId == userId));
@@ -1714,15 +1715,15 @@ namespace Remotely.Server.Services
await dbContext.SaveChangesAsync();
}
- public void SetAllDevicesNotOnline()
+ public async Task SetAllDevicesNotOnline()
{
using var dbContext = _appDbFactory.GetContext();
- dbContext.Devices.ForEachAsync(x =>
+ await dbContext.Devices.ForEachAsync(x =>
{
x.IsOnline = false;
- }).Wait();
- dbContext.SaveChanges();
+ });
+ await dbContext.SaveChangesAsync();
}
public async Task SetDisplayName(RemotelyUser user, string displayName)