Skip to content

Commit 71a912e

Browse files
committed
Enhance Wardrive API error handling: add new session and authorization error messages, streamline disconnect logic for immediate response
1 parent 3ba73d5 commit 71a912e

1 file changed

Lines changed: 24 additions & 38 deletions

File tree

content/wardrive.js

Lines changed: 24 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -145,16 +145,25 @@ const APP_VERSION = "UNKNOWN"; // Placeholder - replaced during build
145145
// ---- Auth Reason Messages ----
146146
// Maps API reason codes to user-facing error messages
147147
const REASON_MESSAGES = {
148+
// Auth/connect errors
148149
outofdate: "App out of date, please update",
149150
unknown_device: "Unknown device - advertise on mesh first",
150-
outside_zone: "Outside zone - cannot connect",
151+
outside_zone: "Outside zone",
151152
zone_disabled: "Zone is disabled",
152-
zone_full: "TX slots full - RX only",
153+
zone_full: "Zone at capacity",
153154
bad_key: "Invalid API key",
154155
gps_stale: "GPS data too old - try again",
155156
gps_inaccurate: "GPS accuracy too low - try again",
157+
// Session errors (wardrive API)
156158
bad_session: "Invalid session",
157-
session_expired: "Session expired - reconnect",
159+
session_expired: "Session expired",
160+
session_invalid: "Session invalid",
161+
session_revoked: "Session revoked",
162+
// Authorization errors (wardrive API)
163+
invalid_key: "Invalid API key",
164+
unauthorized: "Unauthorized",
165+
// Rate limiting (wardrive API)
166+
rate_limited: "Rate limited - slow down",
158167
};
159168

160169
// ---- UI helpers ----
@@ -2712,65 +2721,42 @@ function handleWardriveApiError(reason, message) {
27122721
case "session_expired":
27132722
case "session_invalid":
27142723
case "session_revoked":
2715-
// Session is no longer valid - disconnect
2724+
case "bad_session":
2725+
// Session is no longer valid - disconnect immediately
2726+
// Error message will be shown by BLE disconnect handler using REASON_MESSAGES
27162727
debugError(`[WARDRIVE API] Session error (${reason}): triggering disconnect`);
2717-
setDynamicStatus("Session expired", STATUS_COLORS.error);
27182728
state.disconnectReason = reason;
2719-
setTimeout(() => {
2720-
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
2721-
}, 1500);
2722-
break;
2723-
2724-
case "bad_session":
2725-
// Session ID is invalid or doesn't match API key - disconnect
2726-
debugError(`[WARDRIVE API] Bad session: triggering disconnect`);
2727-
setDynamicStatus("Invalid session", STATUS_COLORS.error);
2728-
state.disconnectReason = reason;
2729-
setTimeout(() => {
2730-
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
2731-
}, 1500);
2729+
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
27322730
break;
27332731

27342732
case "invalid_key":
27352733
case "unauthorized":
27362734
case "bad_key":
2737-
// API key issue - disconnect
2735+
// API key issue - disconnect immediately
27382736
debugError(`[WARDRIVE API] Authorization error (${reason}): triggering disconnect`);
2739-
setDynamicStatus("Authorization failed", STATUS_COLORS.error);
27402737
state.disconnectReason = reason;
2741-
setTimeout(() => {
2742-
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
2743-
}, 1500);
2738+
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
27442739
break;
27452740

27462741
case "session_id_missing":
2747-
// Missing session - disconnect
2742+
// Missing session - disconnect immediately
27482743
debugError(`[WARDRIVE API] Missing session_id: triggering disconnect`);
2749-
setDynamicStatus("Missing session ID", STATUS_COLORS.error);
27502744
state.disconnectReason = "session_id_error";
2751-
setTimeout(() => {
2752-
disconnect().catch(err => debugError(`[BLE] Disconnect after missing session_id failed: ${err.message}`));
2753-
}, 1500);
2745+
disconnect().catch(err => debugError(`[BLE] Disconnect after missing session_id failed: ${err.message}`));
27542746
break;
27552747

27562748
case "outside_zone":
2757-
// User has moved outside their assigned zone - disconnect
2749+
// User has moved outside their assigned zone - disconnect immediately
27582750
debugError(`[WARDRIVE API] Outside zone: triggering disconnect`);
2759-
setDynamicStatus("Outside zone", STATUS_COLORS.error);
27602751
state.disconnectReason = reason;
2761-
setTimeout(() => {
2762-
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
2763-
}, 1500);
2752+
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
27642753
break;
27652754

27662755
case "zone_full":
2767-
// Zone capacity changed during active session - disconnect
2756+
// Zone capacity changed during active session - disconnect immediately
27682757
debugError(`[WARDRIVE API] Zone full during wardrive: triggering disconnect`);
2769-
setDynamicStatus("Zone capacity changed", STATUS_COLORS.error);
27702758
state.disconnectReason = reason;
2771-
setTimeout(() => {
2772-
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
2773-
}, 1500);
2759+
disconnect().catch(err => debugError(`[BLE] Disconnect after ${reason} failed: ${err.message}`));
27742760
break;
27752761

27762762
case "rate_limited":

0 commit comments

Comments
 (0)