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)