Skip to content

Instantly share code, notes, and snippets.

@LucasAbijmil
Created April 18, 2024 07:40
Show Gist options
  • Select an option

  • Save LucasAbijmil/14521e78246a7d6b8e8e9f2d5510cf7a to your computer and use it in GitHub Desktop.

Select an option

Save LucasAbijmil/14521e78246a7d6b8e8e9f2d5510cf7a to your computer and use it in GitHub Desktop.
import Foundation
enum Share {
enum Social {
case instagram(String) // DM only, if you need to share your content into a story please see this (https://gist.github.com/kunofellasleep/e160c64ecea64441ffee0a6a3e18f685)
case whatsapp(String) // Accept WhatsApp text formatting
case telegram(String) // Accept Telegram text formatting
case twitter(String) // Tweet only
case messenger(URL) // URL only
private var baseURL: String {
switch self {
case .instagram:
return "instagram://"
case .whatsapp:
return "whatsapp://"
case .telegram:
return "tg://"
case .twitter:
return "twitter://"
case .messenger:
return "fb-messenger://"
}
}
private var path: String {
switch self {
case .instagram:
return "sharesheet?text=" // if you need url only you should use `sharesheet?url=`
case .whatsapp:
return "send?text="
case .telegram:
return "msg?text="
case .twitter:
return "/post?message="
case .messenger:
return "share?link="
}
}
static func url(for social: Social) -> URL {
switch social {
case .instagram(let string), .whatsapp(let string), .telegram(let string), .twitter(let string):
return URL(string: social.baseURL + social.path + string)!
case .messenger(let url):
return URL(string: social.baseURL + social.path + url.absoluteString)!
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment