@jbrowse/plugin-wiggle
Version:
JBrowse 2 wiggle adapters, tracks, etc.
44 lines (43 loc) • 1.64 kB
JavaScript
import { getContainingView, getSession } from '@jbrowse/core/util';
import { isAbortException } from '@jbrowse/core/util/aborting';
import { createStopToken } from '@jbrowse/core/util/stopToken';
import { getRpcSessionId } from '@jbrowse/core/util/tracks';
import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree';
import { autorun } from 'mobx';
export function getMultiWiggleSourcesAutorun(self) {
addDisposer(self, autorun(async () => {
try {
if (self.isMinimized) {
return;
}
const view = getContainingView(self);
if (!view.initialized) {
return;
}
const { rpcManager } = getSession(self);
const { adapterConfig } = self;
const token = createStopToken();
self.setSourcesLoading(token);
const sessionId = getRpcSessionId(self);
const sources = (await rpcManager.call(sessionId, 'MultiWiggleGetSources', {
regions: view.staticBlocks.contentBlocks,
sessionId,
adapterConfig,
statusCallback: (arg) => {
if (isAlive(self)) {
self.setStatusMessage(arg);
}
},
}));
if (isAlive(self)) {
self.setSources(sources);
}
}
catch (e) {
if (!isAbortException(e) && isAlive(self)) {
console.error(e);
getSession(self).notifyError(`${e}`, e);
}
}
}, { name: 'MultiWiggleGetSources' }));
}