diff --git a/apps/demo/index.html b/apps/demo/index.html index 9bc01e3..dd7517b 100644 --- a/apps/demo/index.html +++ b/apps/demo/index.html @@ -50,6 +50,10 @@

Try Example Links

📷 Instagram Profile + + 𝕏 + Twitter Profile + diff --git a/apps/demo/src/style.css b/apps/demo/src/style.css index 79a6049..f70eb3f 100644 --- a/apps/demo/src/style.css +++ b/apps/demo/src/style.css @@ -238,3 +238,12 @@ h1 { white-space: pre-wrap; word-wrap: break-word; } + +.twitter-link:hover { + border-color: #1DA1F2; +} + +.instagram-link:hover { + border-color:#833AB4; +} + diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 89f88f2..3021a58 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,15 +1,15 @@ -import { - instagramHandler, - linkedinHandler, - unknownHandler, - youtubeHandler, - spotifyHandler, -} from './platforms'; -import { DeepLinkResult } from './types'; +import { instagramHandler, linkedinHandler, unknownHandler, youtubeHandler, twitterHandler, spotifyHandler } from "./platforms"; +import { DeepLinkResult } from "./types"; export * from './types'; -const handlers = [youtubeHandler, linkedinHandler, instagramHandler, spotifyHandler]; +const handlers = [ + youtubeHandler, + linkedinHandler, + instagramHandler, + twitterHandler, + spotifyHandler, +]; export function generateDeepLink(url: string): DeepLinkResult { const webUrl = url.trim(); diff --git a/packages/core/src/platforms/index.ts b/packages/core/src/platforms/index.ts index 34171fa..a0f9cae 100644 --- a/packages/core/src/platforms/index.ts +++ b/packages/core/src/platforms/index.ts @@ -1,7 +1,15 @@ -import { linkedinHandler } from './linkedin'; -import { unknownHandler } from './unknown'; -import { youtubeHandler } from './youtube'; -import { instagramHandler } from './instagram'; +import { linkedinHandler } from "./linkedin"; +import { unknownHandler } from "./unknown"; +import { youtubeHandler } from "./youtube"; +import { instagramHandler } from "./instagram"; +import { twitterHandler } from "./twitter"; import { spotifyHandler } from './spotify'; -export { linkedinHandler, youtubeHandler, instagramHandler, spotifyHandler, unknownHandler }; +export { + linkedinHandler, + youtubeHandler, + instagramHandler, + unknownHandler, + twitterHandler, + spotifyHandler +} diff --git a/packages/core/src/platforms/twitter.ts b/packages/core/src/platforms/twitter.ts new file mode 100644 index 0000000..e680cb8 --- /dev/null +++ b/packages/core/src/platforms/twitter.ts @@ -0,0 +1,16 @@ +// packages/core/src/platforms/twitter.ts +import { DeepLinkHandler } from '../types'; + +export const twitterHandler: DeepLinkHandler = { + match: (url) => url.match(/x\.com\/([^/?]+)/), + + build: (webUrl, match) => { + const username = match[1]; + return { + webUrl, + ios: `twitter://user?screen_name=${username}`, + android: `intent://user?screen_name=${username}#Intent;scheme=twitter;package=com.twitter.android;end`, + platform: 'twitter', + }; + }, +}; \ No newline at end of file diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 339d2d8..9e89ce8 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1,4 +1,4 @@ -export type Platform = 'youtube' | 'linkedin' | 'instagram' | 'spotify' | 'unknown'; +export type Platform = 'youtube' | 'linkedin' | 'instagram' | 'unknown' | 'twitter' | 'spotify'; export interface DeepLinkResult { webUrl: string;