Refresh command
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
namespace FileTime.App.Core.UserCommand;
|
||||
|
||||
public sealed class RefreshCommand : IIdentifiableUserCommand
|
||||
{
|
||||
public const string CommandName = "refresh";
|
||||
public static RefreshCommand Instance { get; } = new RefreshCommand();
|
||||
|
||||
private RefreshCommand()
|
||||
{
|
||||
}
|
||||
|
||||
public string UserCommandID => CommandName;
|
||||
}
|
||||
@@ -54,10 +54,21 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
|
||||
new TypeUserCommandHandler<MoveCursorUpCommand>(MoveCursorUp),
|
||||
new TypeUserCommandHandler<OpenContainerCommand>(OpenContainer),
|
||||
new TypeUserCommandHandler<OpenSelectedCommand>(OpenSelected),
|
||||
new TypeUserCommandHandler<RefreshCommand>(Refresh),
|
||||
new TypeUserCommandHandler<SwitchToTabCommand>(SwitchToTab),
|
||||
});
|
||||
}
|
||||
|
||||
private async Task Refresh(RefreshCommand command)
|
||||
{
|
||||
if (_currentLocation?.FullName is null) return;
|
||||
var refreshedItem = await _timelessContentProvider.GetItemByFullNameAsync(_currentLocation.FullName, PointInTime.Present);
|
||||
|
||||
if (refreshedItem is not IContainer refreshedContainer) return;
|
||||
|
||||
_selectedTab?.Tab?.ForceSetCurrentLocation(refreshedContainer);
|
||||
}
|
||||
|
||||
private async Task OpenContainer(OpenContainerCommand command)
|
||||
{
|
||||
var resolvedPath = await command.Path.ResolveAsync();
|
||||
|
||||
@@ -24,6 +24,8 @@ public class DefaultIdentifiableCommandHandlerRegister : IStartupHandler
|
||||
AddUserCommand(PasteCommand.Merge);
|
||||
AddUserCommand(PasteCommand.Overwrite);
|
||||
AddUserCommand(PasteCommand.Skip);
|
||||
AddUserCommand(RefreshCommand.Instance);
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToLastTab);
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToTab1);
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToTab2);
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToTab3);
|
||||
@@ -32,7 +34,6 @@ public class DefaultIdentifiableCommandHandlerRegister : IStartupHandler
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToTab6);
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToTab7);
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToTab8);
|
||||
AddUserCommand(SwitchToTabCommand.SwitchToLastTab);
|
||||
}
|
||||
|
||||
private void AddUserCommand(IIdentifiableUserCommand command)
|
||||
|
||||
@@ -15,4 +15,5 @@ public interface ITab : IInitable<IContainer>, IDisposable
|
||||
void RemoveItemFilter(ItemFilter filter);
|
||||
void RemoveItemFilter(string name);
|
||||
void SetSelectedItem(AbsolutePath newSelectedItem);
|
||||
void ForceSetCurrentLocation(IContainer newLocation);
|
||||
}
|
||||
@@ -11,6 +11,7 @@ public class Tab : ITab
|
||||
{
|
||||
private readonly ITimelessContentProvider _timelessContentProvider;
|
||||
private readonly BehaviorSubject<IContainer?> _currentLocation = new(null);
|
||||
private readonly BehaviorSubject<IContainer?> _currentLocationForced = new(null);
|
||||
private readonly BehaviorSubject<AbsolutePath?> _currentSelectedItem = new(null);
|
||||
private readonly SourceList<ItemFilter> _itemFilters = new();
|
||||
private AbsolutePath? _currentSelectedItemCached;
|
||||
@@ -24,10 +25,15 @@ public class Tab : ITab
|
||||
{
|
||||
_timelessContentProvider = timelessContentProvider;
|
||||
_currentPointInTime = null!;
|
||||
|
||||
|
||||
_timelessContentProvider.CurrentPointInTime.Subscribe(p => _currentPointInTime = p);
|
||||
|
||||
CurrentLocation = _currentLocation.DistinctUntilChanged().Publish(null).RefCount();
|
||||
|
||||
CurrentLocation = _currentLocation
|
||||
.DistinctUntilChanged()
|
||||
.Merge(_currentLocationForced)
|
||||
.Publish(null)
|
||||
.RefCount();
|
||||
|
||||
CurrentItems =
|
||||
Observable.Merge(
|
||||
Observable.CombineLatest(
|
||||
@@ -88,6 +94,7 @@ public class Tab : ITab
|
||||
}
|
||||
|
||||
public void SetCurrentLocation(IContainer newLocation) => _currentLocation.OnNext(newLocation);
|
||||
public void ForceSetCurrentLocation(IContainer newLocation) => _currentLocationForced.OnNext(newLocation);
|
||||
|
||||
public void SetSelectedItem(AbsolutePath newSelectedItem) => _currentSelectedItem.OnNext(newSelectedItem);
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ public static class MainConfiguration
|
||||
//new CommandBindingConfiguration(ConfigCommand.PinFavorite, new[] { Key.F, Key.P }),
|
||||
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineBlock, Key.H ),
|
||||
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineCommand, Key.K ),
|
||||
//new CommandBindingConfiguration(ConfigCommand.Refresh, Key.R),
|
||||
new CommandBindingConfiguration(RefreshCommand.CommandName, Key.R),
|
||||
//new CommandBindingConfiguration(ConfigCommand.Rename, Key.F2),
|
||||
//new CommandBindingConfiguration(ConfigCommand.Rename, new[] { Key.C, Key.W }),
|
||||
//new CommandBindingConfiguration(ConfigCommand.RunCommand, new KeyConfig(Key.D4, shift: true)),
|
||||
|
||||
Reference in New Issue
Block a user