Archived
Electron forge migration (#2)
Reviewed-on: https://git.internal.vyntehome.com/vynte/vynte-connect/pulls/2
This commit was merged in pull request #2.
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
import { GATEWAY_HOST } from './config';
|
||||
|
||||
export interface NetworkStatus {
|
||||
state?: string;
|
||||
title?: string;
|
||||
message?: string;
|
||||
ip: string;
|
||||
fqdn: string;
|
||||
peers: string;
|
||||
connectedSince: number | null;
|
||||
gatewayHost: string;
|
||||
}
|
||||
|
||||
interface NetBirdStatusResponse {
|
||||
daemonStatus?: string;
|
||||
netbirdIp?: string;
|
||||
fqdn?: string;
|
||||
management?: {
|
||||
connected?: boolean;
|
||||
};
|
||||
signal?: {
|
||||
connected?: boolean;
|
||||
};
|
||||
peers?: {
|
||||
connected?: number;
|
||||
total?: number;
|
||||
};
|
||||
}
|
||||
|
||||
export function baseStatus(
|
||||
overrides: Partial<NetworkStatus> = {}
|
||||
): NetworkStatus {
|
||||
return {
|
||||
ip: '',
|
||||
fqdn: '',
|
||||
peers: '0/0',
|
||||
connectedSince: null,
|
||||
gatewayHost: GATEWAY_HOST,
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
export function normalizeStatus(
|
||||
raw: string,
|
||||
previousStatus: Partial<NetworkStatus> = {}
|
||||
): NetworkStatus {
|
||||
let parsed: NetBirdStatusResponse;
|
||||
|
||||
try {
|
||||
parsed = JSON.parse(raw) as NetBirdStatusResponse;
|
||||
} catch {
|
||||
return baseStatus({
|
||||
state: 'error',
|
||||
title: 'Connection failed',
|
||||
message: `${GATEWAY_HOST} status could not be parsed.`,
|
||||
});
|
||||
}
|
||||
|
||||
const daemonConnected = String(parsed.daemonStatus ?? '')
|
||||
.toLowerCase()
|
||||
.includes('connected');
|
||||
|
||||
const managementConnected = parsed.management?.connected === true;
|
||||
const signalConnected = parsed.signal?.connected === true;
|
||||
const hasIdentity = Boolean(parsed.netbirdIp || parsed.fqdn);
|
||||
|
||||
const connected =
|
||||
daemonConnected &&
|
||||
(managementConnected || signalConnected || hasIdentity);
|
||||
|
||||
const peerCount = parsed.peers ?? {};
|
||||
|
||||
if (connected) {
|
||||
return baseStatus({
|
||||
state: 'connected',
|
||||
title: 'Connected',
|
||||
message: "You're on the Vynte network.",
|
||||
ip: parsed.netbirdIp || 'Assigned',
|
||||
fqdn: parsed.fqdn || '',
|
||||
peers: `${peerCount.connected ?? 0}/${peerCount.total ?? 0}`,
|
||||
connectedSince:
|
||||
previousStatus.connectedSince ?? Date.now(),
|
||||
});
|
||||
}
|
||||
|
||||
return baseStatus({
|
||||
state: 'disconnected',
|
||||
title: 'Disconnected',
|
||||
message: 'Click the flame to connect with NetBird.',
|
||||
fqdn: parsed.fqdn || '',
|
||||
peers: `${peerCount.connected ?? 0}/${peerCount.total ?? 0}`,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user