MCPcopy Create free account
hub / github.com/cryptii/cryptii / _triggerViewerView

Method _triggerViewerView

src/Pipe.js:556–604  ·  view source on GitHub ↗

* Triggers viewer view. Keeps track of busy viewers and skips * view accordingly. * @protected * @param {Viewer} viewer

(viewer)

Source from the content-addressed store, hash-verified

554 * @param {Viewer} viewer
555 */
556 async _triggerViewerView (viewer) {
557 // Check if viewer is busy
558 if (this._getBrickState(viewer, 'busy')) {
559 return this
560 }
561
562 // Mark viewer as busy
563 this._setBrickState(viewer, 'busy', true)
564
565 // Collect view data
566 const bucket = this.getBucketIndexForBrick(viewer)
567 const content = this.getContent(bucket, false)
568 const settingsVersion = this._getBrickState(viewer, 'settingsVersion')
569
570 // Trigger viewer view and await completion
571 let error
572 try {
573 await viewer.view(content)
574 } catch (e) {
575 error = e
576 }
577
578 // Stop here if viewer is no longer part of the pipe
579 if (!this.containsBrick(viewer)) {
580 return
581 }
582
583 // Mark viewer as no longer busy
584 this._setBrickState(viewer, 'busy', false)
585
586 // Collect post view data, buckets may have changed in the meantime
587 const postSettingsVersion = this._getBrickState(viewer, 'settingsVersion')
588 const postBucket = this.getBucketIndexForBrick(viewer)
589
590 // Check if the bucket or the viewer settings have changed in the meantime
591 if (!this.getContent(postBucket, false).isEqualTo(content) ||
592 settingsVersion !== postSettingsVersion) {
593 // Repeat view
594 this._triggerViewerView(viewer)
595 }
596
597 // Trigger brick finish event
598 this.brickDidFinish(viewer, error)
599
600 // Throw unexpected errors
601 if (error && !(error instanceof InvalidInputError)) {
602 throw error
603 }
604 }
605
606 /**
607 * Triggers encoder translation and handles their results. Keeps track of busy

Callers 2

spliceBricksMethod · 0.95
brickSettingDidChangeMethod · 0.95

Calls 8

_getBrickStateMethod · 0.95
_setBrickStateMethod · 0.95
getContentMethod · 0.95
containsBrickMethod · 0.95
brickDidFinishMethod · 0.95
viewMethod · 0.80
isEqualToMethod · 0.80

Tested by

no test coverage detected