import Reflux from 'reflux';

import {BackLinkActions, BackLinkRawActions} from './BackLinkActions.jsx';

import util from '../utils/util.jsx';

import dataAccess from '../service/dataAccess.jsx';

// 反链接页面, 需要找到上层的wiki框架, 得到WikiActions来做跳转
// 后期考虑做url的匹配关系吧... @[  #wiki渲染器 todo  ]{ihk14kbo_pi5qjshq_h9ewg}@

var wikiFrame = window.parent.parent;

var backLinkStore = Reflux.createStore({

    listenables: [BackLinkActions],

    onRefreshPage() {
        this.finishQuery();
    },

    onJumpToLink(params) {
        wikiFrame.WikiActions.wikiBackLinkClicked(params);
    },

    finishQuery() {
        var tagHash = util.parseHashParams(location.hash).tag;

        var store = this._store;
        var tag = store.tags[tagHash];

        if (tag) {
            tag.hash = tagHash;

            tag.backLinks = store.backLinks[tagHash] || {};
        } else {
            // redirect to 404 @[  #wiki渲染器 todo  ]{ihk14kbo_pi5qjshq_h9ewg}@
        }

        store.tag = tag;
        this.update();
    },

    update(store) {
        this._store = store || this._store;

        this.trigger(this._store);
    },

    init() {

        this._store = {
            tag: {},
            tags: {},
            backLinks: {},
        };

        dataAccess.getBackLinks()
            .done(results => {
                this._store.backLinks = results;
                BackLinkRawActions.queryBackLinks();
            });

        dataAccess.getTags()
            .done(results => {
                this._store.tags = results;
                BackLinkRawActions.queryTags();
            });

        this.joinLeading(
            BackLinkRawActions.queryBackLinks,
            BackLinkRawActions.queryTags,
            this.finishQuery
        );
    },

    getInitialState() {
        return this._store;
    }
});

export default backLinkStore;