Files
apps.apple.com/src/jet/intents/route-url/route-url-controller.ts
2025-11-04 05:03:50 +08:00

29 lines
1.1 KiB
TypeScript

import { isSome } from '@jet/environment/types/optional';
import type { IntentController } from '@jet/environment/dispatching';
import type { AppStoreObjectGraph } from '@jet-app/app-store/foundation/runtime/app-store-object-graph';
import { isRoutableIntent } from '@jet-app/app-store/api/intents/routable-intent';
import type { RouteUrlIntent } from '~/jet/intents';
import { makeFlowAction } from '~/jet/models';
export const RouteUrlIntentController: IntentController<RouteUrlIntent> = {
$intentKind: 'RouteUrlIntent',
async perform(intent: RouteUrlIntent, objectGraph: AppStoreObjectGraph) {
const targetIntent = objectGraph.router.intentFor(intent.url);
if (isSome(targetIntent) && isRoutableIntent(targetIntent)) {
return {
// intent needed for SSR
intent: targetIntent,
// only ever used by client; only clients have actions
action: makeFlowAction(targetIntent),
storefront: targetIntent.storefront,
language: targetIntent.language,
};
}
return null;
},
};