fix(watch-connectivity): improve WCSession lifecycle and message reliability
This commit is contained in:
@@ -15,6 +15,20 @@ export function useSyncWorkout() {
|
||||
): Promise<SyncResult> => {
|
||||
setIsSyncing(true);
|
||||
try {
|
||||
console.log("[useSyncWorkout] Checking module availability...");
|
||||
|
||||
const supported = await WatchConnectivity.isSupported();
|
||||
console.log("[useSyncWorkout] isSupported:", supported);
|
||||
|
||||
const paired = await WatchConnectivity.isPaired();
|
||||
console.log("[useSyncWorkout] isPaired:", paired);
|
||||
|
||||
const installed = await WatchConnectivity.isWatchAppInstalled();
|
||||
console.log("[useSyncWorkout] isWatchAppInstalled:", installed);
|
||||
|
||||
const reachable = await WatchConnectivity.isReachable();
|
||||
console.log("[useSyncWorkout] isReachable:", reachable);
|
||||
|
||||
const plan = {
|
||||
id: workoutId,
|
||||
name: name ?? "Workout",
|
||||
@@ -29,9 +43,12 @@ export function useSyncWorkout() {
|
||||
})),
|
||||
};
|
||||
|
||||
console.log("[useSyncWorkout] Sending plan:", JSON.stringify(plan).slice(0, 200));
|
||||
const result = await WatchConnectivity.sendWorkoutPlan(plan);
|
||||
console.log("[useSyncWorkout] Result:", JSON.stringify(result));
|
||||
return result as SyncResult;
|
||||
} catch (error: any) {
|
||||
console.log("[useSyncWorkout] Error:", error.message, error.code);
|
||||
return { error: error.message ?? "Failed to sync" };
|
||||
} finally {
|
||||
setIsSyncing(false);
|
||||
|
||||
@@ -28,11 +28,13 @@ export function useWatchConnection() {
|
||||
|
||||
setIsPaired(paired);
|
||||
setIsInstalled(installed);
|
||||
setStatus(reachable ? "connected" : "disconnected");
|
||||
setStatus(reachable ? "connected" : paired ? "disconnected" : "disconnected");
|
||||
} catch {
|
||||
setStatus("disconnected");
|
||||
}
|
||||
};
|
||||
|
||||
return { status, isPaired, isInstalled };
|
||||
const isReady = isPaired && isInstalled;
|
||||
|
||||
return { status, isPaired, isInstalled, isReady };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user