summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-plugin-lunr/src/actions.js
blob: 765fa2e9ebc9484e8cbe48c93003fea5fd317e2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const GitBook = require('gitbook-core');

const TYPES = {
    LOAD: 'lunr/load'
};
const INDEX_FILENAME = 'search_index.json';

/**
 * Load an index set
 * @param {JSON} json
 * @return {Action}
 */
function load(json) {
    return { type: TYPES.LOAD, json };
}

/**
 * Fetch an index
 * @return {Action}
 */
function fetch() {
    return (dispatch, getState) => {
        const { lunr, file } = getState();
        const { idx } = lunr;
        const filePath = file.relative(INDEX_FILENAME);

        if (idx) {
            return GitBook.Promise.resolve();
        }

        return GitBook.Promise.resolve()
        .then(() => {
            return window.fetch(filePath);
        })
        .then(response => response.json())
        .then(json => dispatch(load(json)));
    };
}

module.exports = {
    TYPES,
    fetch
};