diff --git a/server/service/extensions/tailscale/service.go b/server/service/extensions/tailscale/service.go index 8075bbd..48693a1 100644 --- a/server/service/extensions/tailscale/service.go +++ b/server/service/extensions/tailscale/service.go @@ -20,11 +20,13 @@ const ( ) var StateMap = map[string]proto.TailscaleState{ - "NoState": proto.TailscaleNotRunning, - "Starting": proto.TailscaleNotRunning, - "NeedsLogin": proto.TailscaleNotLogin, - "Running": proto.TailscaleRunning, - "Stopped": proto.TailscaleStopped, + "NoState": proto.TailscaleNotRunning, + "Starting": proto.TailscaleNotRunning, + "NeedsLogin": proto.TailscaleNotLogin, + "NeedsMachineAuth": proto.TailscaleNotLogin, + "InUseOtherUser": proto.TailscaleNotLogin, + "Running": proto.TailscaleRunning, + "Stopped": proto.TailscaleStopped, } func NewService() *Service { diff --git a/web/src/pages/desktop/menu/settings/tailscale/device.tsx b/web/src/pages/desktop/menu/settings/tailscale/device.tsx index a168570..ee94ad3 100644 --- a/web/src/pages/desktop/menu/settings/tailscale/device.tsx +++ b/web/src/pages/desktop/menu/settings/tailscale/device.tsx @@ -55,6 +55,9 @@ export const Device = ({ status, onLogout }: DeviceProps) => { onLogout(); }) + .catch((err) => { + setErrMsg(err?.message || 'Failed to logout'); + }) .finally(() => { setIsLogging(false); }); diff --git a/web/src/pages/desktop/menu/settings/tailscale/index.tsx b/web/src/pages/desktop/menu/settings/tailscale/index.tsx index cb71a36..4fa968e 100644 --- a/web/src/pages/desktop/menu/settings/tailscale/index.tsx +++ b/web/src/pages/desktop/menu/settings/tailscale/index.tsx @@ -41,6 +41,9 @@ export const Tailscale = ({ setIsLocked }: TailscaleProps) => { setStatus(rsp.data); }) + .catch((err) => { + setErrMsg(err?.message || 'Failed to get status'); + }) .finally(() => { setIsLoading(false); }); diff --git a/web/src/pages/desktop/menu/settings/tailscale/install.tsx b/web/src/pages/desktop/menu/settings/tailscale/install.tsx index 6e00628..8c7c3be 100644 --- a/web/src/pages/desktop/menu/settings/tailscale/install.tsx +++ b/web/src/pages/desktop/menu/settings/tailscale/install.tsx @@ -29,9 +29,12 @@ export const Install = ({ setIsLocked, onSuccess }: InstallProps) => { } onSuccess(); + setState(''); + }) + .catch(() => { + setState('failed'); }) .finally(() => { - setState(''); setIsLocked(false); }); } diff --git a/web/src/pages/desktop/menu/settings/tailscale/login.tsx b/web/src/pages/desktop/menu/settings/tailscale/login.tsx index 519db3b..389d974 100644 --- a/web/src/pages/desktop/menu/settings/tailscale/login.tsx +++ b/web/src/pages/desktop/menu/settings/tailscale/login.tsx @@ -38,6 +38,9 @@ export const Login = ({ onSuccess }: LoginProps) => { window.open(url, '_blank'); setTimeout(() => setLoginUrl(''), 10 * 60 * 1000); }) + .catch((err) => { + setErrMsg(err?.message || 'Failed to login'); + }) .finally(() => { setIsLoading(false); }); diff --git a/web/src/pages/desktop/menu/settings/tailscale/run.tsx b/web/src/pages/desktop/menu/settings/tailscale/run.tsx index b02e94d..55580a7 100644 --- a/web/src/pages/desktop/menu/settings/tailscale/run.tsx +++ b/web/src/pages/desktop/menu/settings/tailscale/run.tsx @@ -29,6 +29,9 @@ export const Run = ({ onSuccess }: RunProps) => { onSuccess(); }) + .catch((err) => { + setErrMsg(err?.message || 'Failed to run tailscale'); + }) .finally(() => { setIsLoading(false); }); diff --git a/web/src/pages/desktop/menu/settings/tailscale/uninstall.tsx b/web/src/pages/desktop/menu/settings/tailscale/uninstall.tsx index e46abc1..1ed65cb 100644 --- a/web/src/pages/desktop/menu/settings/tailscale/uninstall.tsx +++ b/web/src/pages/desktop/menu/settings/tailscale/uninstall.tsx @@ -45,6 +45,7 @@ export const Uninstall = ({ onSuccess }: UninstallProps) => {