/// <summary> /// Initializes a new instance of the <see cref="Repository"/> class. /// </summary> /// <param name="localPath"></param> /// <param name="container"></param> public Repository(NPath localPath, ICacheContainer container) { Guard.ArgumentNotNull(localPath, nameof(localPath)); LocalPath = localPath; cacheUpdateEvents = new Dictionary <CacheType, Action <CacheUpdateEvent> > { { CacheType.Branches, cacheUpdateEvent => { LocalBranchListChanged?.Invoke(cacheUpdateEvent); RemoteBranchListChanged?.Invoke(cacheUpdateEvent); LocalAndRemoteBranchListChanged?.Invoke(cacheUpdateEvent); } }, { CacheType.GitAheadBehind, c => TrackingStatusChanged?.Invoke(c) }, { CacheType.GitLocks, c => LocksChanged?.Invoke(c) }, { CacheType.GitLog, c => LogChanged?.Invoke(c) }, { CacheType.GitStatus, c => StatusEntriesChanged?.Invoke(c) }, { CacheType.GitUser, cacheUpdateEvent => { } }, { CacheType.RepositoryInfo, cacheUpdateEvent => { CurrentBranchChanged?.Invoke(cacheUpdateEvent); CurrentRemoteChanged?.Invoke(cacheUpdateEvent); CurrentBranchAndRemoteChanged?.Invoke(cacheUpdateEvent); } }, }; cacheContainer = container; cacheContainer.CacheInvalidated += CacheHasBeenInvalidated; cacheContainer.CacheUpdated += (cacheType, offset) => { cacheUpdateEvents[cacheType](new CacheUpdateEvent(cacheType, offset)); }; }
private void HandleGitStatusEntriesCacheUpdatedEvent(CacheUpdateEvent cacheUpdateEvent) { Logger.Trace("GitStatusEntriesCache Updated {0}", cacheUpdateEvent.UpdatedTimeString); StatusEntriesChanged?.Invoke(cacheUpdateEvent); }