Skip to content

Commit

Permalink
refactor: Optimize initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
korapp committed Jul 30, 2024
1 parent b661968 commit 75b666d
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 23 deletions.
15 changes: 2 additions & 13 deletions package/contents/ui/Client.qml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ BaseObject {
property var getServices: ws.getServices
property var getStates: ws.getStates
property string errorString: ""
readonly property alias ready: ws.ready
readonly property bool configured: ws.url && token

onBaseUrlChanged: ws.url = baseUrl.replace('http', 'ws') + "/api/websocket"
Expand All @@ -19,17 +20,7 @@ BaseObject {
Connections {
target: ws
function onError(msg) { errorString = msg }
function onEstablished() { errorString = "" }
}

readonly property QtObject ready: QtObject {
function connect (fn) {
if (ws.ready) fn()
ws.established.connect(fn)
}
function disconnect (fn) {
ws.established.disconnect(fn)
}
function onReadyChanged() { ws.ready && (errorString = "") }
}

Timer {
Expand Down Expand Up @@ -59,11 +50,9 @@ BaseObject {
property var subscriptions: new Map()
property var promises: new Map()
readonly property bool open: status === WebSocket.Open
signal established
signal error(string msg)

onOpenChanged: ready = false
onReadyChanged: ready && established()

onTextMessageReceived: message => {
pingPongTimer.reset()
Expand Down
3 changes: 2 additions & 1 deletion package/contents/ui/ConfigItems.qml
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,15 @@ KCM.ScrollViewKCM {
Component.onCompleted: {
setItems(cfg_items)
ha = ClientFactory.getClient(this, plasmoid.configuration.url)
ha.ready.connect(fetchData)
ha.readyChanged.connect(fetchData)
}

function setItems(data) {
items.append(JSON.parse(data))
}

function fetchData() {
if (!ha?.ready) return
return Promise.all([ha.getStates(), ha.getServices()])
.then(([e, s]) => {
entities = arrayToObject(e, 'entity_id')
Expand Down
16 changes: 7 additions & 9 deletions package/contents/ui/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ PlasmoidItem {
property var fields: ({})

onCfgItemsChanged: items = JSON.parse(cfgItems)
onUrlChanged: url && initClient(url)
onUrlChanged: initClient(url)
onItemsChanged: fetchDataAndSubscribe()

Plasmoid.contextualActions: [
PlasmaCore.Action {
Expand All @@ -44,19 +45,16 @@ PlasmoidItem {
function initClient(url) {
if (ha) {
unsubscribe()
ha.ready.disconnect(initData)
onItemsChanged.disconnect(fetchDataAndSubscribe)
ha.readyChanged.disconnect(fetchDataAndSubscribe)
}
ha = ClientFactory.getClient(this, url)
ha.ready.connect(initData)
}

function initData() {
if (!url) return ha = null
ha = ClientFactory.getClient(root, url)
fetchDataAndSubscribe()
onItemsChanged.connect(fetchDataAndSubscribe)
ha.readyChanged.connect(fetchDataAndSubscribe)
}

function fetchDataAndSubscribe() {
if (!ha?.ready) return
fetchFieldsInfo()
subscribe()
}
Expand Down

0 comments on commit 75b666d

Please sign in to comment.