/** @babel */ import {Disposable, CompositeDisposable} from 'atom' import VIEW_URI from './view-uri' let disposables = null export function activate () { disposables = new CompositeDisposable() disposables.add(atom.workspace.addOpener((uri) => { if (uri === VIEW_URI) { return deserializeIncompatiblePackagesComponent() } })) disposables.add(atom.commands.add('atom-workspace', { 'incompatible-packages:view': () => { atom.workspace.open(VIEW_URI) } })) } export function deactivate () { disposables.dispose() } export function consumeStatusBar (statusBar) { let incompatibleCount = 0 for (let pack of atom.packages.getLoadedPackages()) { if (!pack.isCompatible()) incompatibleCount++ } if (incompatibleCount > 0) { let icon = createIcon(incompatibleCount) let tile = statusBar.addRightTile({item: icon, priority: 200}) icon.element.addEventListener('click', () => { atom.commands.dispatch(icon.element, 'incompatible-packages:view') }) disposables.add(new Disposable(() => tile.destroy())) } } export function deserializeIncompatiblePackagesComponent () { const IncompatiblePackagesComponent = require('./incompatible-packages-component') return new IncompatiblePackagesComponent(atom.packages) } function createIcon (count) { const StatusIconComponent = require('./status-icon-component') return new StatusIconComponent({count}) }