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