UNPKG

rowt-sdk

Version:

SDK for using Rowt Deeplinking with Expo

49 lines (40 loc) 1.33 kB
import * as Linking from "expo-linking"; import { DeepLinkModule } from "./linking"; import { useDeepLink, useExpoDeepLink } from "./hooks"; export { useDeepLink, useExpoDeepLink }; export class ExpoRowtConsole { // Your existing RowtConsole methods plus: static async getInitialDeepLink(): Promise<string | null> { return await Linking.getInitialURL(); } static addDeepLinkListener(handler: (url: string) => void) { return Linking.addEventListener("url", (event) => { handler(event.url); }); } static parseDeepLink(url: string) { // Same implementation as before const parsed = Linking.parse(url); return { scheme: parsed.scheme || "", hostname: parsed.hostname || "", path: parsed.path || "", queryParams: parsed.queryParams || {}, segments: (parsed.path || "").split("/").filter(Boolean), }; } // Create deep links for Expo static createDeepLink(path: string, params?: Record<string, string>) { return Linking.createURL(path, { queryParams: params, }); } // Check if app can open URL static async canOpenURL(url: string): Promise<boolean> { return await Linking.canOpenURL(url); } // Open URL in browser or other app static async openURL(url: string): Promise<void> { await Linking.openURL(url); } }