You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
TimeSafari Deep Linking Documentation
Type System Overview
The deep linking system uses a multi-layered type safety approach:
-
Runtime Validation (Zod Schemas)
- Validates URL structure
- Enforces parameter requirements
- Sanitizes input data
- Provides detailed validation errors
-
TypeScript Types
- Generated from Zod schemas
- Ensures compile-time type safety
- Provides IDE autocompletion
- Catches type errors during development
-
Router Integration
- Type-safe parameter passing
- Route-specific parameter validation
- Query parameter type checking
Implementation Files
src/types/deepLinks.ts
: Type definitions and validation schemassrc/services/deepLinks.ts
: Deep link processing servicesrc/main.capacitor.ts
: Capacitor integration
Type Safety Examples
// Parameter type safety
type ClaimParams = DeepLinkParams["claim"];
// TypeScript knows this has:
// - id: string
// - view?: "details" | "certificate" | "raw"
// Runtime validation
const result = deepLinkSchemas.claim.safeParse({
id: "123",
view: "details"
});
// Validates at runtime with detailed error messages
Supported URL Schemes
All deep links follow the format: timesafari://<route>/<param>?<query>
Claim Routes
-
timesafari://claim/:id
- Query params:
view
: "details" | "certificate" | "raw"
- Query params:
-
timesafari://claim-cert/:id
-
timesafari://claim-add-raw/:id
- Query params:
claim
: JSON string of claim dataclaimJwtId
: JWT ID for claim
- Query params:
Contact Routes
timesafari://contact-edit/:did
timesafari://contact-import/:jwt
- Query params:
contacts
: JSON array of contacts
- Query params:
Project Routes
timesafari://project/:id
- Query params:
view
: "details" | "edit"
- Query params:
Invite Routes
timesafari://invite-one-accept/:jwt
- Query params:
type
: "one" | "many"
- Query params:
Gift Routes
timesafari://confirm-gift/:id
- Query params:
action
: "confirm" | "details"
- Query params:
Offer Routes
timesafari://offer-details/:id
- Query params:
view
: "details"
- Query params: