Skip to content

Commit

Permalink
feat: show full rpc backend version (#1294)
Browse files Browse the repository at this point in the history
* feat: show full rpc backend version

we now have useful AgentVersion returned by 'ipfs id' Kubo RPC command
which allows for including suffix (e.g. in brave).

this makes it more obvious that kubo backend is used, and in which
version, and removes perception that kubo version === ipfs version

* refactor: simplify version fetch

* docs: clarify external IS kubo rpc

* fix: make ipfs-desktop version fit

Co-authored-by: Nishant Arora <1895906+whizzzkid@users.noreply.github.com>

---------

Co-authored-by: Nishant Arora <1895906+whizzzkid@users.noreply.github.com>
  • Loading branch information
lidel and whizzzkid committed Sep 25, 2023
1 parent 24a5958 commit 9f852ef
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 28 deletions.
12 changes: 4 additions & 8 deletions add-on/_locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,9 @@
"message": "The URL of your local Kubo RPC",
"description": "A label in Node status section of Browser Action pop-up (panel_statusApiAddressTitle)"
},
"panel_statusGatewayVersion": {
"message": "version",
"description": "A label in Node status section of Browser Action pop-up (panel_statusGatewayVersion)"
},
"panel_statusGatewayVersionTitle": {
"message": "The version of IPFS your local node is using",
"description": "A label in Node status section of Browser Action pop-up (panel_statusGatewayVersionTitle)"
"panel_kuboRpcBackendVersionTitle": {
"message": "The version of IPFS backend this extension talks to over Kubo RPC API",
"description": "A label in Node status section of Browser Action pop-up (panel_kuboRpcBackendVersionTitle)"
},
"panel_statusSwarmPeers": {
"message": "Peers",
Expand Down Expand Up @@ -260,7 +256,7 @@
"description": "An option title on the Preferences screen (option_ipfsNodeConfig_title)"
},
"option_ipfsNodeType_external": {
"message": "External",
"message": "External (Kubo RPC)",
"description": "An option on the Preferences screen (option_ipfsNodeType_external)"
},
"option_ipfsNodeType_brave": {
Expand Down
26 changes: 18 additions & 8 deletions add-on/src/lib/ipfs-companion.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,21 @@ export default async function init (inQuickImport = false) {
handler(message)
}

async function fetchKuboRpcBackendVersion () {
// prefer AgentVersion string from 'ipfs id' , but if that fails, use 'ipfs version'
try {
const { agentVersion } = await ipfs.id()
if (agentVersion) {
return agentVersion
}
const { version, commit } = await ipfs.version()
if (version || commit) {
return [version, commit].filter(Boolean).join('/')
}
} catch (_) {}
return null
}

async function sendStatusUpdateToBrowserAction () {
if (!browserActionPort) return
const currentTab = await browser.tabs.query({ active: true, currentWindow: true }).then(tabs => tabs[0])
Expand All @@ -250,14 +265,9 @@ export default async function init (inQuickImport = false) {
newVersion: state.dismissedUpdate !== version ? version : null,
currentTab
}
try {
const v = await ipfs.version()
if (v) {
info.gatewayVersion = v.commit ? v.version + '/' + v.commit : v.version
}
} catch (error) {
info.gatewayVersion = null
}

info.kuboRpcBackendVersion = await fetchKuboRpcBackendVersion()

if (state.active && info.currentTab) {
const url = info.currentTab.url
info.isIpfsContext = ipfsPathValidator.isIpfsPageActionsContext(url)
Expand Down
4 changes: 2 additions & 2 deletions add-on/src/popup/browser-action/gateway-status.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ function statusEntry ({ label, labelLegend, value, check, itemClass = '', valueC

export default function gatewayStatus ({
gatewayAddress,
gatewayVersion,
kuboRpcBackendVersion,
ipfsApiUrl,
swarmPeers
}) {
Expand All @@ -42,7 +42,7 @@ export default function gatewayStatus ({
label: 'panel_statusApiAddress',
labelLegend: 'panel_statusApiAddressTitle',
value: api,
check: gatewayVersion
check: kuboRpcBackendVersion
})}
</ul>
`
Expand Down
11 changes: 5 additions & 6 deletions add-on/src/popup/browser-action/ipfs-version.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,19 @@ function statusEntry ({ label, labelLegend, title, value, check, valueClass = ''
value = value || value === 0 ? value : offline
return html`
<div title="${labelLegend}" class="ma0 pa0" style="line-height: 0.25">
<span class="f7 tr monospace force-select-all ${valueClass}" title="${title}">${value.substring(0, 13)}</span>
<span class="f7 tr monospace force-select-all ${valueClass}" title="${title}">${value.substring(0, 20)}</span>
</div>
`
}

export default function ipfsVersion ({
gatewayVersion
kuboRpcBackendVersion
}) {
return html`
${statusEntry({
label: 'panel_statusGatewayVersion',
title: browser.i18n.getMessage('panel_statusGatewayVersionTitle'),
value: gatewayVersion,
check: gatewayVersion
title: browser.i18n.getMessage('panel_kuboRpcBackendVersionTitle'),
value: kuboRpcBackendVersion,
check: kuboRpcBackendVersion
})}
`
}
8 changes: 4 additions & 4 deletions add-on/src/popup/browser-action/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export default (state, emitter) => {
publicSubdomainGatewayUrl: null,
gatewayAddress: null,
swarmPeers: null,
gatewayVersion: null,
kuboRpcBackendVersion: null,
isApiAvailable: false,
// isRedirectContext
currentTab: null,
Expand Down Expand Up @@ -215,7 +215,7 @@ export default (state, emitter) => {
if (!state.active) {
state.gatewayAddress = state.pubGwURLString
state.ipfsApiUrl = null
state.gatewayVersion = null
state.kuboRpcBackendVersion = null
state.swarmPeers = null
state.isIpfsOnline = false
}
Expand All @@ -241,13 +241,13 @@ export default (state, emitter) => {
state.isApiAvailable = state.active && !browser.extension.inIncognitoContext // https://github.com/ipfs-shipyard/ipfs-companion/issues/243
state.swarmPeers = !state.active || status.peerCount === -1 ? null : status.peerCount
state.isIpfsOnline = state.active && status.peerCount > -1
state.gatewayVersion = state.active && status.gatewayVersion ? status.gatewayVersion : null
state.kuboRpcBackendVersion = state.active && status.kuboRpcBackendVersion ? status.kuboRpcBackendVersion : null
state.ipfsApiUrl = state.active ? status.apiURLString : null
} else {
state.ipfsNodeType = 'external'
state.swarmPeers = null
state.isIpfsOnline = false
state.gatewayVersion = null
state.kuboRpcBackendVersion = null
state.isIpfsContext = false
state.isRedirectContext = false
}
Expand Down

0 comments on commit 9f852ef

Please sign in to comment.