diff --git a/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/view/wireguard-dashboard/overview.js b/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/view/wireguard-dashboard/overview.js index 1242ef9..df9f4c0 100644 --- a/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/view/wireguard-dashboard/overview.js +++ b/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/view/wireguard-dashboard/overview.js @@ -222,8 +222,11 @@ return view.extend({ return api.getAllData().then(L.bind(function(data) { var status = data.status || {}; - var interfaces = (data.interfaces || {}).interfaces || []; - var peers = (data.peers || {}).peers || []; + // Handle RPC expect unwrapping - may be array or object + var interfacesData = data.interfaces || []; + var peersData = data.peers || []; + var interfaces = Array.isArray(interfacesData) ? interfacesData : (interfacesData.interfaces || []); + var peers = Array.isArray(peersData) ? peersData : (peersData.peers || []); this.updateStats(status); this.updatePeers(peers); @@ -240,8 +243,11 @@ return view.extend({ render: function(data) { var self = this; var status = data.status || {}; - var interfaces = (data.interfaces || {}).interfaces || []; - var peers = (data.peers || {}).peers || []; + // Handle RPC expect unwrapping - may be array or object + var interfacesData = data.interfaces || []; + var peersData = data.peers || []; + var interfaces = Array.isArray(interfacesData) ? interfacesData : (interfacesData.interfaces || []); + var peers = Array.isArray(peersData) ? peersData : (peersData.peers || []); // Store peer descriptions this.peerDescriptions = data.descriptions || {}; diff --git a/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js b/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js index 8b00d2d..2fa4d95 100644 --- a/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js +++ b/package/secubox/luci-app-wireguard-dashboard/htdocs/luci-static/resources/wireguard-dashboard/api.js @@ -178,10 +178,14 @@ return baseclass.extend({ callGetTraffic(), callPeerDescriptions() ]).then(function(results) { + // Handle RPC expect unwrapping - results may be array or object + var peersData = results[1] || []; + var interfacesData = results[2] || []; + return { status: results[0] || {}, - peers: results[1] || { peers: [] }, - interfaces: results[2] || { interfaces: [] }, + peers: Array.isArray(peersData) ? peersData : (peersData.peers || []), + interfaces: Array.isArray(interfacesData) ? interfacesData : (interfacesData.interfaces || []), traffic: results[3] || {}, descriptions: (results[4] || {}).descriptions || {} }; @@ -196,10 +200,14 @@ return baseclass.extend({ callBandwidthRates(), callPeerDescriptions() ]).then(function(results) { + // Handle RPC expect unwrapping - results may be array or object + var peersData = results[1] || []; + var ratesData = results[2] || []; + return { status: results[0] || {}, - peers: results[1] || { peers: [] }, - rates: (results[2] || {}).rates || [], + peers: Array.isArray(peersData) ? peersData : (peersData.peers || []), + rates: Array.isArray(ratesData) ? ratesData : (ratesData.rates || []), descriptions: (results[3] || {}).descriptions || {} }; });