forked from shadowfacts/Tusker
Add preference to disable gif animation in timelines
This commit is contained in:
parent
65d57df949
commit
1f56823a17
|
@ -48,6 +48,7 @@ class Preferences: Codable, ObservableObject {
|
||||||
self.contentWarningCopyMode = try container.decode(ContentWarningCopyMode.self, forKey: .contentWarningCopyMode)
|
self.contentWarningCopyMode = try container.decode(ContentWarningCopyMode.self, forKey: .contentWarningCopyMode)
|
||||||
self.mentionReblogger = try container.decode(Bool.self, forKey: .mentionReblogger)
|
self.mentionReblogger = try container.decode(Bool.self, forKey: .mentionReblogger)
|
||||||
self.blurAllMedia = try container.decode(Bool.self, forKey: .blurAllMedia)
|
self.blurAllMedia = try container.decode(Bool.self, forKey: .blurAllMedia)
|
||||||
|
self.automaticallyPlayGifs = try container.decode(Bool.self, forKey: .automaticallyPlayGifs)
|
||||||
self.openLinksInApps = try container.decode(Bool.self, forKey: .openLinksInApps)
|
self.openLinksInApps = try container.decode(Bool.self, forKey: .openLinksInApps)
|
||||||
self.useInAppSafari = try container.decode(Bool.self, forKey: .useInAppSafari)
|
self.useInAppSafari = try container.decode(Bool.self, forKey: .useInAppSafari)
|
||||||
self.inAppSafariAutomaticReaderMode = try container.decode(Bool.self, forKey: .inAppSafariAutomaticReaderMode)
|
self.inAppSafariAutomaticReaderMode = try container.decode(Bool.self, forKey: .inAppSafariAutomaticReaderMode)
|
||||||
|
@ -73,6 +74,7 @@ class Preferences: Codable, ObservableObject {
|
||||||
try container.encode(contentWarningCopyMode, forKey: .contentWarningCopyMode)
|
try container.encode(contentWarningCopyMode, forKey: .contentWarningCopyMode)
|
||||||
try container.encode(mentionReblogger, forKey: .mentionReblogger)
|
try container.encode(mentionReblogger, forKey: .mentionReblogger)
|
||||||
try container.encode(blurAllMedia, forKey: .blurAllMedia)
|
try container.encode(blurAllMedia, forKey: .blurAllMedia)
|
||||||
|
try container.encode(automaticallyPlayGifs, forKey: .automaticallyPlayGifs)
|
||||||
try container.encode(openLinksInApps, forKey: .openLinksInApps)
|
try container.encode(openLinksInApps, forKey: .openLinksInApps)
|
||||||
try container.encode(useInAppSafari, forKey: .useInAppSafari)
|
try container.encode(useInAppSafari, forKey: .useInAppSafari)
|
||||||
try container.encode(inAppSafariAutomaticReaderMode, forKey: .inAppSafariAutomaticReaderMode)
|
try container.encode(inAppSafariAutomaticReaderMode, forKey: .inAppSafariAutomaticReaderMode)
|
||||||
|
@ -97,6 +99,7 @@ class Preferences: Codable, ObservableObject {
|
||||||
@Published var contentWarningCopyMode = ContentWarningCopyMode.asIs
|
@Published var contentWarningCopyMode = ContentWarningCopyMode.asIs
|
||||||
@Published var mentionReblogger = false
|
@Published var mentionReblogger = false
|
||||||
@Published var blurAllMedia = false
|
@Published var blurAllMedia = false
|
||||||
|
@Published var automaticallyPlayGifs = true
|
||||||
@Published var openLinksInApps = true
|
@Published var openLinksInApps = true
|
||||||
@Published var useInAppSafari = true
|
@Published var useInAppSafari = true
|
||||||
@Published var inAppSafariAutomaticReaderMode = false
|
@Published var inAppSafariAutomaticReaderMode = false
|
||||||
|
@ -121,6 +124,7 @@ class Preferences: Codable, ObservableObject {
|
||||||
case contentWarningCopyMode
|
case contentWarningCopyMode
|
||||||
case mentionReblogger
|
case mentionReblogger
|
||||||
case blurAllMedia
|
case blurAllMedia
|
||||||
|
case automaticallyPlayGifs
|
||||||
case openLinksInApps
|
case openLinksInApps
|
||||||
case useInAppSafari
|
case useInAppSafari
|
||||||
case inAppSafariAutomaticReaderMode
|
case inAppSafariAutomaticReaderMode
|
||||||
|
|
|
@ -60,6 +60,9 @@ struct BehaviorPrefsView: View {
|
||||||
Toggle(isOn: $preferences.blurAllMedia) {
|
Toggle(isOn: $preferences.blurAllMedia) {
|
||||||
Text("Blur All Media")
|
Text("Blur All Media")
|
||||||
}
|
}
|
||||||
|
Toggle(isOn: $preferences.automaticallyPlayGifs) {
|
||||||
|
Text("Automatically Play GIFs")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,17 @@ class AttachmentView: UIImageView, GIFAnimatable {
|
||||||
isUserInteractionEnabled = true
|
isUserInteractionEnabled = true
|
||||||
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imagePressed)))
|
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imagePressed)))
|
||||||
|
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(preferencesChanged), name: .preferencesChanged, object: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func preferencesChanged() {
|
||||||
|
if let gifData = gifData {
|
||||||
|
if Preferences.shared.automaticallyPlayGifs && !isAnimatingGIF {
|
||||||
|
animate(withGIFData: gifData)
|
||||||
|
} else if !Preferences.shared.automaticallyPlayGifs && isAnimatingGIF {
|
||||||
|
stopAnimatingGIF()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadAttachment() {
|
func loadAttachment() {
|
||||||
|
@ -78,8 +89,12 @@ class AttachmentView: UIImageView, GIFAnimatable {
|
||||||
self.attachmentRequest = nil
|
self.attachmentRequest = nil
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
if self.attachment.url.pathExtension == "gif" {
|
if self.attachment.url.pathExtension == "gif" {
|
||||||
self.animate(withGIFData: data)
|
|
||||||
self.gifData = data
|
self.gifData = data
|
||||||
|
if Preferences.shared.automaticallyPlayGifs {
|
||||||
|
self.animate(withGIFData: data)
|
||||||
|
} else {
|
||||||
|
self.image = UIImage(data: data)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.image = UIImage(data: data)
|
self.image = UIImage(data: data)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue