Files
atom/packages/incompatible-packages/lib/main.js
2019-02-25 12:19:44 +01:00

57 lines
1.4 KiB
JavaScript

/** @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 })
}