diff --git a/lib/package-updates-status-view.js b/lib/package-updates-status-view.js index fa72cfda..dec2dd41 100644 --- a/lib/package-updates-status-view.js +++ b/lib/package-updates-status-view.js @@ -27,6 +27,7 @@ export default class PackageUpdatesStatusView { this.disposables.add(packageManager.on('package-updating theme-updating', ({pack, error}) => { this.onPackageUpdating(pack) })) this.disposables.add(packageManager.on('package-updated theme-updated package-uninstalled theme-uninstalled', ({pack, error}) => { this.onPackageUpdated(pack) })) this.disposables.add(packageManager.on('package-update-failed theme-update-failed', ({pack, error}) => { this.onPackageUpdateFailed(pack) })) + this.disposables.add(atom.config.onDidChange('core.disabledPackages', () => { this.updateTile() })) const clickHandler = () => { atom.commands.dispatch(atom.views.getView(atom.workspace), 'settings-view:check-for-package-updates') @@ -120,6 +121,13 @@ export default class PackageUpdatesStatusView { } updateTile () { + const disabledPackages = [] + if (this.updates.length){ + const updatesWithoutDisabled = this.updates.filter(update => atom.packages.isPackageDisabled(update.name)) + updatesWithoutDisabled.filter(update => this.updates.splice(this.updates.indexOf(update),1)) + updatesWithoutDisabled.filter(update => disabledPackages.push(update)) + } + if (this.updates.length) { if (this.tooltip) { this.tooltip.dispose() @@ -152,5 +160,8 @@ export default class PackageUpdatesStatusView { this.tile = null this.destroyed = true } + if (disabledPackages.length){ + disabledPackages.filter(update => this.updates.push(update)) + } } } diff --git a/spec/package-updates-status-view-spec.coffee b/spec/package-updates-status-view-spec.coffee index 510f1efe..fb998a95 100644 --- a/spec/package-updates-status-view-spec.coffee +++ b/spec/package-updates-status-view-spec.coffee @@ -150,3 +150,17 @@ describe "PackageUpdatesStatusView", -> packageManager.emitPackageEvent('update-failed', outdatedPackage1) packageManager.emitPackageEvent('uninstalled', outdatedPackage1) expect(document.querySelector('status-bar .package-updates-status-view').textContent).toBe '1 update' + + describe "when one packages is disabled", -> + it "updates the tile", -> + spyOn(atom.packages, 'isPackageDisabled').andCallFake (args) -> + if args is outdatedPackage1.name + return true + atom.config.set('core.disabledPackages', ['something']) + expect(document.querySelector('status-bar .package-updates-status-view').textContent).toBe '1 update' + + describe "when all packages are disabled", -> + it "destroys the tile", -> + spyOn(atom.packages, 'isPackageDisabled').andReturn true + atom.config.set('core.disabledPackages', ['something']) + expect(document.querySelector('status-bar .package-updates-status-view')).not.toExist()