mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-29 10:52:38 -04:00
## Describe your changes Eexport peer details for Android ## Issue ticket number and link ## Stack <!-- branch-stack --> ### Checklist - [x] Is it a bug fix - [ ] Is a typo/documentation fix - [ ] Is a feature enhancement - [ ] It is a refactor - [ ] Created tests that fail without the change (if possible) - [ ] This change does **not** modify the public API, gRPC protocols, functionality behavior, CLI / service flags, or introduce a new feature — **OR** I have discussed it with the NetBird team beforehand (link the issue / Slack thread in the description). See [CONTRIBUTING.md](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTING.md#discuss-changes-with-the-netbird-team-first). > By submitting this pull request, you confirm that you have read and agree to the terms of the [Contributor License Agreement](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT.md). ## Documentation Select exactly one: - [ ] I added/updated documentation for this change - [x] Documentation is **not needed** for this change (explain why) ### Docs PR URL (required if "docs added" is checked) Paste the PR link from https://github.com/netbirdio/docs here: https://github.com/netbirdio/docs/pull/__ <!-- codesmith:footer --> --- <a href="https://app.blacksmith.sh/netbirdio/codesmith/netbird/pr/6925"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img alt="View with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a> <a href="https://backend.blacksmith.sh/track/enable-autofix?expires=1787768377&installation_model_id=427504&pr_number=6925&repository=netbirdio%2Fnetbird&return_to=https%3A%2F%2Fgithub.com%2Fnetbirdio%2Fnetbird%2Fpull%2F6925&signature=b708ba5d6f9b45ae48edf9597aad8aecac9a93c75b2a5a033e14c1c945c47f1f"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img alt="Autofix with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a> <sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you need. Autofix is disabled.</sup> <!-- codesmith:autofix:disabled --> <!-- /codesmith:footer --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Enhanced Android peer details with latency, data transfer totals, connection timestamps, handshake information, relay and security status, and ICE connection details. * Added formatted latency values to support clearer connection-quality indicators. * **Bug Fixes** * Peer lists now refresh WireGuard statistics before displaying transfer and handshake information, ensuring current values are shown. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
//go:build android
|
|
|
|
package android
|
|
|
|
import "github.com/netbirdio/netbird/client/internal/peer"
|
|
|
|
// Connection status constants exported via gomobile.
|
|
const (
|
|
ConnStatusIdle = int(peer.StatusIdle)
|
|
ConnStatusConnecting = int(peer.StatusConnecting)
|
|
ConnStatusConnected = int(peer.StatusConnected)
|
|
)
|
|
|
|
// PeerInfo describe information about the peers. It designed for the UI usage
|
|
//
|
|
// The fields below ConnStatus back the peer detail screen. Durations and times
|
|
// are pre-formatted into strings so the UI does not have to know Go's layouts;
|
|
// Latency is additionally exposed as LatencyMs for colour coding.
|
|
type PeerInfo struct {
|
|
IP string
|
|
IPv6 string
|
|
FQDN string
|
|
ConnStatus int
|
|
Routes PeerRoutes
|
|
|
|
PubKey string
|
|
Latency string
|
|
LatencyMs int64
|
|
BytesRx int64
|
|
BytesTx int64
|
|
ConnStatusUpdate string
|
|
Relayed bool
|
|
RosenpassEnabled bool
|
|
LastWireguardHandshake string
|
|
LocalIceCandidateType string
|
|
RemoteIceCandidateType string
|
|
LocalIceCandidateEndpoint string
|
|
RemoteIceCandidateEndpoint string
|
|
}
|
|
|
|
func (p *PeerInfo) GetPeerRoutes() *PeerRoutes {
|
|
return &p.Routes
|
|
}
|
|
|
|
// PeerInfoArray is a wrapper of []PeerInfo
|
|
type PeerInfoArray struct {
|
|
items []PeerInfo
|
|
}
|
|
|
|
// Add new PeerInfo to the collection
|
|
func (array *PeerInfoArray) Add(s PeerInfo) *PeerInfoArray {
|
|
array.items = append(array.items, s)
|
|
return array
|
|
}
|
|
|
|
// Get return an element of the collection
|
|
func (array *PeerInfoArray) Get(i int) *PeerInfo {
|
|
return &array.items[i]
|
|
}
|
|
|
|
// Size return with the size of the collection
|
|
func (array *PeerInfoArray) Size() int {
|
|
return len(array.items)
|
|
}
|