import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14

import AppLayouts.Profile.views.wallet 1.0

import Storybook 1.0

import utils 1.0

SplitView {
    Logs { id: logs }


    QtObject {
        id: d

        property var network: [{
                prod: {
                    chainId: 1,
                    nativeCurrencyDecimals: 18,
                    layer: 1,
                    chainName: "Mainnet",
                    rpcURL: "https://eth-archival.rpc.grove.city/v1/7178a5d77466455882b2fb60",
                    fallbackURL: "https://eth-archival.rpc.grove.city/v1/7178a5d77466455882b2fb60",
                    blockExplorerURL: "https://etherscan.io/",
                    iconURL: "network/Network=Ethereum",
                    nativeCurrencyName: "Ether",
                    nativeCurrencySymbol: "ETH",
                    isTest: false,
                    enabled: true,
                    chainColor: "#627EEA",
                    shortName: "eth",
                    relatedChainId: 5,
                },
                test: {
                    chainId: 5,
                    nativeCurrencyDecimals: 18,
                    layer: 1,
                    chainName: "Mainnet",
                    rpcURL: "https://goerli-archival.rpc.grove.city/v1/7178a5d77466455882b2fb60",
                    fallbackURL: "https://eth-archival.rpc.grove.city/v1/7178a5d77466455882b2fb60",
                    blockExplorerURL: "https://goerli.etherscan.io/",
                    iconURL: "network/Network=Ethereum",
                    nativeCurrencyName: "Ether",
                    nativeCurrencySymbol: "ETH",
                    isTest: true,
                    enabled: true,
                    chainColor: "#939BA1",
                    shortName: "eth",
                    relatedChainId: 1
                }
            }]


        property var timer: Timer {
            interval: 1000
            onTriggered: {
                let state  = checkbox.checked ? EditNetworkForm.Verified: EditNetworkForm.InvalidURL
                networkModule.urlVerified(networkModule.url, state)
            }
        }
    }

    property var networkModule: QtObject {
        id: networkModule
        signal urlVerified(string url, int status)
        property string url

        function evaluateRpcEndPoint(url, isMainUrl) {
            networkModule.url = url
            d.timer.restart()
        }
    }

    SplitView {
        orientation: Qt.Vertical
        SplitView.fillWidth: true

        Item {
            SplitView.fillWidth: true
            SplitView.fillHeight: true
            EditNetworkView {
                width: 560
                combinedNetwork: d.network[0]
                onEvaluateRpcEndPoint: networkModule.evaluateRpcEndPoint(url)
                networksModule: networkModule
                onUpdateNetworkValues: console.error(String("Updated network with chainId %1 with new main rpc url = %2 and faalback rpc =%3").arg(chainId).arg(newMainRpcInput).arg(newFailoverRpcUrl))
            }
        }

        LogsAndControlsPanel {
            id: logsAndControlsPanel

            SplitView.minimumHeight: 100
            SplitView.preferredHeight: childrenRect.height

            logsView.logText: logs.logText

            CheckBox {
                id: checkbox
                text: "valid url"
                checked: true
            }
        }
    }
}

// category: Views