콘텐츠로 이동

SaveResult — @gj-kit/expo-workouts

@gj-kit/expo-workouts/core에서 공개하는 type입니다. package version 0.1.1의 release declaration을 그대로 표시합니다.

import { SaveResult } from '@gj-kit/expo-workouts/core';
/**
* A discriminated union, so `nativeId` does not EXIST on the `pendingUnlock` branch. That branch
* only ever appears on a locked device, i.e. never during development, so a type that merely made
* `nativeId` optional would be forgotten by everyone.
*/
type SaveResult = {
readonly status: 'saved';
/** Echo of `WorkoutWrite.id`. */
readonly id: string;
/** The platform's own id for the stored workout. */
readonly nativeId: string;
readonly route: Exclude<RouteWriteOutcome, 'deferred'>;
/** How many points actually reached the store. Compare it against what you sent to see how
* much our mandatory hygiene removed. */
readonly routePointsWritten: number;
} | {
/**
* The store accepted the workout but cannot confirm it while the device is locked.
* **Do not re-save blindly.** Call `saveWorkout` again with the SAME `id` and `version` once
* the device is unlocked; that call is idempotent and completes the route.
*/
readonly status: 'pendingUnlock';
readonly id: string;
readonly route: 'deferred';
readonly routePointsWritten: 0;
};

이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.

  • 패키지: @gj-kit/expo-workouts
  • 버전: 0.1.1
  • 공개 entry: ./core
  • 소스: GitHub

A discriminated union, so nativeId does not EXIST on the pendingUnlock branch. That branch only ever appears on a locked device, i.e. never during development, so a type that merely made nativeId optional would be forgotten by everyone.