Added support for graceful recovery of failing search initialization on file:// protocol

This commit is contained in:
squidfunk
2020-04-26 19:20:51 +02:00
parent 6cf14bed10
commit dac469eace
6 changed files with 59 additions and 48 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{ {
"assets/javascripts/bundle.js": "assets/javascripts/bundle.c51f1a8c.min.js", "assets/javascripts/bundle.js": "assets/javascripts/bundle.f593c2a5.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.c51f1a8c.min.js.map", "assets/javascripts/bundle.js.map": "assets/javascripts/bundle.f593c2a5.min.js.map",
"assets/javascripts/vendor.js": "assets/javascripts/vendor.ff4ef43d.min.js", "assets/javascripts/vendor.js": "assets/javascripts/vendor.ff4ef43d.min.js",
"assets/javascripts/vendor.js.map": "assets/javascripts/vendor.ff4ef43d.min.js.map", "assets/javascripts/vendor.js.map": "assets/javascripts/vendor.ff4ef43d.min.js.map",
"assets/javascripts/worker/search.js": "assets/javascripts/worker/search.58d22e8e.min.js", "assets/javascripts/worker/search.js": "assets/javascripts/worker/search.58d22e8e.min.js",

View File

@@ -179,7 +179,7 @@
</div> </div>
{% block scripts %} {% block scripts %}
<script src="{{ 'assets/javascripts/vendor.ff4ef43d.min.js' | url }}"></script> <script src="{{ 'assets/javascripts/vendor.ff4ef43d.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.c51f1a8c.min.js' | url }}"></script> <script src="{{ 'assets/javascripts/bundle.f593c2a5.min.js' | url }}"></script>
{%- set translations = {} -%} {%- set translations = {} -%}
{%- for key in [ {%- for key in [
"clipboard.copy", "clipboard.copy",

View File

@@ -30,7 +30,10 @@ import {
combineLatest, combineLatest,
animationFrameScheduler, animationFrameScheduler,
fromEvent, fromEvent,
from from,
defer,
of,
NEVER
} from "rxjs" } from "rxjs"
import { ajax } from "rxjs/ajax" import { ajax } from "rxjs/ajax"
import { import {
@@ -42,7 +45,8 @@ import {
observeOn, observeOn,
take, take,
shareReplay, shareReplay,
pluck pluck,
catchError
} from "rxjs/operators" } from "rxjs/operators"
import { import {
@@ -228,7 +232,8 @@ export function initialize(config: unknown) {
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
// External index /* Search worker */
const worker$ = defer(() => {
const index = config.search && config.search.index const index = config.search && config.search.index
? config.search.index ? config.search.index
: undefined : undefined
@@ -249,13 +254,18 @@ export function initialize(config: unknown) {
) )
) )
const worker = setupSearchWorker(config.search.worker, { return of(setupSearchWorker(config.search.worker, {
base$, index$ base$, index$
}))
}) })
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
/* Mount search query */ /* Mount search query */
const search$ = worker$
.pipe(
switchMap(worker => {
const query$ = useComponent("search-query") const query$ = useComponent("search-query")
.pipe( .pipe(
mountSearchQuery(worker, { transform: config.search.transform }), mountSearchQuery(worker, { transform: config.search.transform }),
@@ -276,13 +286,14 @@ export function initialize(config: unknown) {
shareReplay(1) shareReplay(1)
) )
/* ----------------------------------------------------------------------- */ return useComponent("search")
const search$ = useComponent("search")
.pipe( .pipe(
mountSearch(worker, { query$, reset$, result$ }), mountSearch(worker, { query$, reset$, result$ }),
shareReplay(1) shareReplay(1)
) )
}),
catchError(() => NEVER)
)
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */