Skip to content

Commit

Permalink
鳥のシェア先アプリのトラッキングに断固反対の会
Browse files Browse the repository at this point in the history
  • Loading branch information
rinsuki committed Jan 6, 2018
1 parent 002151e commit 4b96a1b
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 26 deletions.
5 changes: 5 additions & 0 deletions iMast/OtherMenu/OtherMenuSettingsTableViewController.swift
Expand Up @@ -112,6 +112,11 @@ class OtherMenuSettingsTableViewController: FormViewController {
row.title = "ウィジェットはiOS10以上でないと利用できません。"
}
}
self.form +++ Section("共有")
<<< SwitchRow() { row in
row.title = "Twitterにトラッキングさせない"
row.userDefaultsConnect(.shareNoTwitterTracking)
}
self.title = "設定"
let callhelpitem = UIBarButtonItem(title: "ヘルプ", style: .plain) { _ in
let safari = SFSafariViewController(url: URL(string: "https://cinderella-project.github.io/iMast/help/settings.html")!)
Expand Down
1 change: 1 addition & 0 deletions iMast/SharedSources/GoodUtils.swift
Expand Up @@ -339,6 +339,7 @@ extension DefaultsKeys {
static let autoResizeSize = DefaultsKey<Int>("autoResizeSize", default: 0)
static let usingDefaultVisibility = DefaultsKey<Bool>("using_default_visibility", default: false)
static let timelineNurunuruMode = DefaultsKey<Bool>("timeline_nurunuru_mode", default: false)
static let shareNoTwitterTracking = DefaultsKey<Bool>("share_no_twitter_tracking", default: true)
}

func MastodonVersionStringToInt(_ versionStr_: String) -> Int {
Expand Down
63 changes: 37 additions & 26 deletions imastshare/ShareViewController.swift
Expand Up @@ -59,39 +59,50 @@ class ShareViewController: SLComposeServiceViewController {
//
print(itemProvider)
if itemProvider.hasItemConformingToTypeIdentifier("public.url") {
itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil, completionHandler: { (urlItem, error) in
itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil) { (urlItem, error) in
if error != nil {
self.extensionContext!.cancelRequest(withError: error)
return
}
if let url = urlItem as? NSURL {
if url.scheme != "file" {
self.postUrl = url.absoluteString == nil ? "" : " "+url.absoluteString!
if url.host == "twitter.com" && url.path == "/intent/tweet" { // Twitter共有の引き継ぎ
let query = urlComponentsToDict(url: URL(string: url.absoluteString!)!)
var twitterPostText: String = ""
if query["text"] != nil {
twitterPostText += query["text"]!
}
if query["url"] != nil {
twitterPostText += " " + query["url"]!
}
if query["hashtags"] != nil {
query["hashtags"]!.components(separatedBy: ",").forEach { hashtag in
twitterPostText += " #" + hashtag
}
}
if query["via"] != nil {
twitterPostText += " https://twitter.com/\(query["via"]!)さんから"
}
DispatchQueue.main.sync() {
self.textView.text = twitterPostText
self.postUrl = ""
}
guard var url = urlItem as? NSURL else {
return
}
if url.scheme == "file" {
return
}
if Defaults[.shareNoTwitterTracking] && url.host?.hasSuffix("twitter.com") ?? false {
var urlComponents = URLComponents(string: url.absoluteString!)!
urlComponents.queryItems = (urlComponents.queryItems ?? []).filter({$0.name != "ref_src"})
if (urlComponents.queryItems ?? []).count == 0 {
urlComponents.query = nil
}
let urlString = (urlComponents.url?.absoluteString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed))!
url = NSURL(string: urlString)!
}
self.postUrl = url.absoluteString == nil ? "" : " "+url.absoluteString!
if url.host == "twitter.com" && url.path == "/intent/tweet" { // Twitter共有の引き継ぎ
let query = urlComponentsToDict(url: URL(string: url.absoluteString!)!)
var twitterPostText: String = ""
if query["text"] != nil {
twitterPostText += query["text"]!
}
if query["url"] != nil {
twitterPostText += " " + query["url"]!
}
if query["hashtags"] != nil {
query["hashtags"]!.components(separatedBy: ",").forEach { hashtag in
twitterPostText += " #" + hashtag
}
}
if query["via"] != nil {
twitterPostText += " https://twitter.com/\(query["via"]!)さんから"
}
DispatchQueue.main.sync() {
self.textView.text = twitterPostText
self.postUrl = ""
}
}
})
}
}
if itemProvider.hasItemConformingToTypeIdentifier("public.image") {
itemProvider.loadItem(forTypeIdentifier: "public.image", options: nil, completionHandler: { (imageItem, error) in
Expand Down

0 comments on commit 4b96a1b

Please sign in to comment.