import { parentEpml } from './connect.js'
import './streams/streams.js'

let config = {}
let haveRegisteredNodeManagement = false


parentEpml.ready().then(() => {
    // THOUGHTS: DONE: The request to register urls should be made once...


    // pluginUrlsConf
    let pluginUrlsConf = [
        {
            url: 'minting',
            domain: 'core',
            page: 'minting/index.html',
            title: 'Minting Details',
            icon: 'info',
            menus: [],
            parent: false
        },
        {
            url: 'wallet',
            domain: 'core',
            page: 'wallet/index.html',
            title: 'Wallet',
            icon: 'account_balance_wallet',
            menus: [],
            parent: false
        },
        {
            url: 'send-coin',
            domain: 'core',
            page: 'send-coin/index.html',
            title: 'Send Coin',
            icon: 'send',
            menus: [],
            parent: false
        },
        {
            url: 'trade-portal',
            domain: 'core',
            page: 'trade-portal/index.html',
            title: 'Trade Portal',
            icon: 'toc',
            menus: [],
            parent: false
        },
        {
            url: 'reward-share',
            domain: 'core',
            page: 'reward-share/index.html',
            title: 'Reward Share',
            icon: 'call_split',
            menus: [],
            parent: false
        },
        {
            url: 'name-registration',
            domain: 'core',
            page: 'name-registration/index.html',
            title: 'Name Registration',
            icon: 'assignment_ind',
            menus: [],
            parent: false
        },
        {
            url: 'websites',
            domain: 'core',
            page: 'qdn/index.html',
            title: 'Websites',
            icon: 'computer',
            menus: [],
            parent: false
        },
        {
            url: 'data-management',
            domain: 'core',
            page: 'qdn/data-management/index.html',
            title: 'Data Management',
            icon: 'dns',
            menus: [],
            parent: false
        },
        {
            url: 'q-chat',
            domain: 'core',
            page: 'messaging/q-chat/index.html',
            title: 'Q-Chat',
            icon: 'message',
            menus: [],
            parent: false
        },
        {
            url: 'group-management',
            domain: 'core',
            page: 'group-management/index.html',
            title: 'Group Management',
            icon: 'group',
            menus: [],
            parent: false
        },
	{
            url: 'puzzles',
            domain: 'core',
            page: 'puzzles/index.html',
            title: 'Puzzles',
            icon: 'extension',
            menus: [],
            parent: false
	}
    ]

    const registerPlugins = (pluginInfo) => {
        parentEpml.request('registerUrl', pluginInfo)
    }


    parentEpml.subscribe('config', c => {
        config = JSON.parse(c)

        // Only register node management if node management is enabled and it hasn't already been registered
        if (!haveRegisteredNodeManagement && config.user.knownNodes[config.user.node].enableManagement) {
            haveRegisteredNodeManagement = true

            let nodeManagementConf = {
                url: 'node-management',
                domain: 'core',
                page: 'node-management/index.html',
                title: 'Node Management',
                icon: 'cloud',
                menus: [],
                parent: false
            }

            let _pluginUrlsConf = [...pluginUrlsConf, nodeManagementConf]
            registerPlugins(_pluginUrlsConf)
        } else {
            registerPlugins(pluginUrlsConf)
        }
    })
})
