75 lines
2.3 KiB
QML
75 lines
2.3 KiB
QML
import QtQuick 2.14
|
|
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Controls 0.1
|
|
|
|
import utils 1.0
|
|
|
|
import shared.stores 1.0
|
|
|
|
Loader {
|
|
id: root
|
|
active: false
|
|
|
|
property NetworkConnectionStore networkConnectionStore
|
|
readonly property string jointChainIdString: networkConnectionStore.getChainIdsJointString(chainIdsDown)
|
|
property string websiteDown
|
|
property int connectionState: -1
|
|
property var chainIdsDown: []
|
|
property bool completelyDown: false
|
|
property double lastCheckedAtUnix: -1
|
|
property string lastCheckedAt
|
|
property bool withCache: false
|
|
property string tooltipMessage
|
|
property string toastText
|
|
|
|
function updateBanner() {
|
|
root.active = true
|
|
if (connectionState === Constants.ConnectionStatus.Failure)
|
|
item.show()
|
|
else
|
|
item.showFor(3000)
|
|
}
|
|
|
|
sourceComponent: ModuleWarning {
|
|
QtObject {
|
|
id: d
|
|
readonly property bool isOnline: networkConnectionStore.isOnline
|
|
onIsOnlineChanged: if(!isOnline) hide()
|
|
}
|
|
|
|
onHideFinished: root.active = false
|
|
|
|
text: root.toastText
|
|
type: connectionState === Constants.ConnectionStatus.Success ? ModuleWarning.Success : ModuleWarning.Danger
|
|
buttonText: connectionState === Constants.ConnectionStatus.Failure ? qsTr("Retry now") : ""
|
|
|
|
onClicked: networkConnectionStore.retryConnection(websiteDown)
|
|
onCloseClicked: hide()
|
|
|
|
onLinkActivated: {
|
|
toolTip.show(root.tooltipMessage, 3000)
|
|
}
|
|
|
|
StatusToolTip {
|
|
id: toolTip
|
|
orientation: StatusToolTip.Orientation.Bottom
|
|
maxWidth: 300
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: networkConnectionStore.networkConnectionModuleInst
|
|
function onNetworkConnectionStatusUpdate(website: string, completelyDown: bool, connectionState: int, chainIds: string, lastCheckedAtUnix: double) {
|
|
if (website === websiteDown) {
|
|
root.connectionState = connectionState
|
|
root.chainIdsDown = chainIds.split(";")
|
|
root.completelyDown = completelyDown
|
|
root.lastCheckedAtUnix = lastCheckedAtUnix
|
|
root.lastCheckedAt = LocaleUtils.formatDateTime(new Date(lastCheckedAtUnix*1000))
|
|
root.updateBanner()
|
|
}
|
|
}
|
|
}
|
|
}
|