diff --git a/extensions/OpenInstagramSafariExtension.appex/Info.plist b/extensions/OpenInstagramSafariExtension.appex/Info.plist new file mode 100755 index 0000000..05f44c6 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/Info.plist differ diff --git a/extensions/OpenInstagramSafariExtension.appex/OpenInstagramSafariExtension b/extensions/OpenInstagramSafariExtension.appex/OpenInstagramSafariExtension new file mode 100755 index 0000000..aa81b07 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/OpenInstagramSafariExtension differ diff --git a/extensions/OpenInstagramSafariExtension.appex/_locales/en/messages.json b/extensions/OpenInstagramSafariExtension.appex/_locales/en/messages.json new file mode 100755 index 0000000..b9c01f6 --- /dev/null +++ b/extensions/OpenInstagramSafariExtension.appex/_locales/en/messages.json @@ -0,0 +1,10 @@ +{ + "extension_name": { + "message": "Open in Instagram", + "description": "The display name for the extension." + }, + "extension_description": { + "message": "Opens instagram.com links (profiles, posts, reels, stories, tags) in the Instagram app.", + "description": "Description of what the extension does." + } +} diff --git a/extensions/OpenInstagramSafariExtension.appex/background.js b/extensions/OpenInstagramSafariExtension.appex/background.js new file mode 100755 index 0000000..e69de29 diff --git a/extensions/OpenInstagramSafariExtension.appex/content.js b/extensions/OpenInstagramSafariExtension.appex/content.js new file mode 100755 index 0000000..a89b56f --- /dev/null +++ b/extensions/OpenInstagramSafariExtension.appex/content.js @@ -0,0 +1,41 @@ +// Redirect instagram.com web links into the native app. +// Shipped inside RyukGram as a Safari web extension. + +(function () { + if (window.top !== window.self) return; + if (sessionStorage.getItem("__rygOpenedApp")) return; + + function urlFromLocation() { + const path = window.location.pathname.split("/").filter(Boolean); + if (path.length === 0) return null; + + if (path[0] === "p" || path[0] === "reel") { + const meta = document.querySelector("meta[property='al:ios:url']"); + if (meta && meta.getAttribute("content")) return meta.getAttribute("content"); + return path[1] ? `instagram://media?id=${path[1]}` : null; + } + + if (path[0] === "stories" && path[1]) { + return `instagram://story?username=${path[1]}`; + } + + if (path[0] === "explore" && path[1] === "tags" && path[2]) { + return `instagram://tag?name=${path[2]}`; + } + + if (path.length === 1) { + return `instagram://user?username=${path[0]}`; + } + + return null; + } + + function openInApp() { + const target = urlFromLocation(); + if (!target) return; + sessionStorage.setItem("__rygOpenedApp", "1"); + window.location.href = target; + } + + openInApp(); +})(); diff --git a/extensions/OpenInstagramSafariExtension.appex/images/icon-128.png b/extensions/OpenInstagramSafariExtension.appex/images/icon-128.png new file mode 100755 index 0000000..c919eb0 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/icon-128.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/icon-256.png b/extensions/OpenInstagramSafariExtension.appex/images/icon-256.png new file mode 100755 index 0000000..6bd3d20 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/icon-256.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/icon-48.png b/extensions/OpenInstagramSafariExtension.appex/images/icon-48.png new file mode 100755 index 0000000..353e8fb Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/icon-48.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/icon-512.png b/extensions/OpenInstagramSafariExtension.appex/images/icon-512.png new file mode 100755 index 0000000..2200828 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/icon-512.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/icon-64.png b/extensions/OpenInstagramSafariExtension.appex/images/icon-64.png new file mode 100755 index 0000000..995689f Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/icon-64.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/icon-96.png b/extensions/OpenInstagramSafariExtension.appex/images/icon-96.png new file mode 100755 index 0000000..cb079d2 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/icon-96.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-16.png b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-16.png new file mode 100755 index 0000000..276933e Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-16.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-19.png b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-19.png new file mode 100755 index 0000000..8c539b6 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-19.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-32.png b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-32.png new file mode 100755 index 0000000..8aca194 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-32.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-38.png b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-38.png new file mode 100755 index 0000000..2a64dd2 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-38.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-48.png b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-48.png new file mode 100755 index 0000000..cb10be0 Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-48.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-72.png b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-72.png new file mode 100755 index 0000000..2c145fc Binary files /dev/null and b/extensions/OpenInstagramSafariExtension.appex/images/toolbar-icon-72.png differ diff --git a/extensions/OpenInstagramSafariExtension.appex/manifest.json b/extensions/OpenInstagramSafariExtension.appex/manifest.json new file mode 100755 index 0000000..4107cb0 --- /dev/null +++ b/extensions/OpenInstagramSafariExtension.appex/manifest.json @@ -0,0 +1,39 @@ +{ + "manifest_version": 3, + "default_locale": "en", + + "name": "__MSG_extension_name__", + "description": "__MSG_extension_description__", + "version": "1.0", + + "icons": { + "48": "images/icon-48.png", + "96": "images/icon-96.png", + "128": "images/icon-128.png", + "256": "images/icon-256.png", + "512": "images/icon-512.png" + }, + + "background": { + "service_worker": "background.js" + }, + + "content_scripts": [{ + "js": [ "content.js" ], + "matches": [ "*://*.instagram.com/*" ] + }], + + "action": { + "default_popup": "popup.html", + "default_icon": { + "16": "images/toolbar-icon-16.png", + "19": "images/toolbar-icon-19.png", + "32": "images/toolbar-icon-32.png", + "38": "images/toolbar-icon-38.png", + "48": "images/toolbar-icon-48.png", + "72": "images/toolbar-icon-72.png" + } + }, + + "permissions": [ ] +} diff --git a/extensions/OpenInstagramSafariExtension.appex/popup.css b/extensions/OpenInstagramSafariExtension.appex/popup.css new file mode 100755 index 0000000..edf45a0 --- /dev/null +++ b/extensions/OpenInstagramSafariExtension.appex/popup.css @@ -0,0 +1,22 @@ +:root { + color-scheme: light dark; +} + +body { + width: 220px; + padding: 14px 16px; + margin: 0; + font-family: -apple-system, system-ui, sans-serif; + text-align: left; +} + +.title { + font-size: 15px; + font-weight: 600; +} + +.subtitle { + margin-top: 4px; + font-size: 12px; + opacity: 0.7; +} diff --git a/extensions/OpenInstagramSafariExtension.appex/popup.html b/extensions/OpenInstagramSafariExtension.appex/popup.html new file mode 100755 index 0000000..25d3f42 --- /dev/null +++ b/extensions/OpenInstagramSafariExtension.appex/popup.html @@ -0,0 +1,12 @@ + + +
+ + + + + +