From 191370e712e2ba5ed7779db22118701532ee64bf Mon Sep 17 00:00:00 2001 From: ihugo Date: Thu, 8 Apr 2021 19:47:31 +0800 Subject: [PATCH 01/37] feature: settings --- .../CoreData.xcdatamodel/contents | 49 +- CoreDataStack/Entity/Setting.swift | 84 ++++ CoreDataStack/Entity/Subscription.swift | 101 ++++ .../xcshareddata/swiftpm/Package.resolved | 142 ------ Mastodon/Extension/UIButton.swift | 20 + Mastodon/Generated/Strings.swift | 56 +++ Mastodon/Resources/Assets.xcassets/.DS_Store | Bin 0 -> 6148 bytes .../Label/highlight.colorset/Contents.json | 6 +- .../battleshipGrey.colorset/Contents.json | 20 + .../Assets.xcassets/Settings/Contents.json | 9 + .../Contents.json | 12 + .../iPhone 11 Pro _ X - 1.pdf | Bin 0 -> 515682 bytes .../appearance.dark.imageset/Contents.json | 12 + .../iPhone 11 Pro _ X - 1 (2).pdf | Bin 0 -> 473595 bytes .../appearance.light.imageset/Contents.json | 12 + .../iPhone 11 Pro _ X - 1 (1).pdf | Bin 0 -> 463573 bytes .../Assets.xcassets/Welcome/.DS_Store | Bin 0 -> 6148 bytes .../Resources/en.lproj/Localizable.strings | 23 +- ...meTimelineViewController+DebugAction.swift | 3 + .../Settings/SettingsViewController.swift | 430 ++++++++++++++++++ .../Scene/Settings/SettingsViewModel.swift | 295 ++++++++++++ .../SettingsAppearanceTableViewCell.swift | 207 +++++++++ .../View/Cell/SettingsLinkTableViewCell.swift | 31 ++ .../Cell/SettingsToggleTableViewCell.swift | 70 +++ .../Settings/View/SettingsSectionHeader.swift | 54 +++ .../APIService/APIService+Notifications.swift | 66 +++ .../APIService+CoreData+Notification.swift | 129 ++++++ Mastodon/Supporting Files/SceneDelegate.swift | 3 + .../MastodonSDK/API/Mastodon+API+Push.swift | 135 ++++++ .../MastodonSDK/API/Mastodon+API.swift | 1 + .../Entity/Mastodon+Entity+Subscription.swift | 42 ++ Podfile.lock | 2 +- SubscriptionAlerts.swift | 131 ++++++ 33 files changed, 1989 insertions(+), 156 deletions(-) create mode 100644 CoreDataStack/Entity/Setting.swift create mode 100644 CoreDataStack/Entity/Subscription.swift delete mode 100644 Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 Mastodon/Resources/Assets.xcassets/.DS_Store create mode 100644 Mastodon/Resources/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Settings/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Settings/appearance.automatic.imageset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Settings/appearance.automatic.imageset/iPhone 11 Pro _ X - 1.pdf create mode 100644 Mastodon/Resources/Assets.xcassets/Settings/appearance.dark.imageset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Settings/appearance.dark.imageset/iPhone 11 Pro _ X - 1 (2).pdf create mode 100644 Mastodon/Resources/Assets.xcassets/Settings/appearance.light.imageset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Settings/appearance.light.imageset/iPhone 11 Pro _ X - 1 (1).pdf create mode 100644 Mastodon/Resources/Assets.xcassets/Welcome/.DS_Store create mode 100644 Mastodon/Scene/Settings/SettingsViewController.swift create mode 100644 Mastodon/Scene/Settings/SettingsViewModel.swift create mode 100644 Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift create mode 100644 Mastodon/Scene/Settings/View/Cell/SettingsLinkTableViewCell.swift create mode 100644 Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift create mode 100644 Mastodon/Scene/Settings/View/SettingsSectionHeader.swift create mode 100644 Mastodon/Service/APIService/APIService+Notifications.swift create mode 100644 Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift create mode 100644 MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift create mode 100644 MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift create mode 100644 SubscriptionAlerts.swift diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents index 5ed4021a7..fe0c43529 100644 --- a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents +++ b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents @@ -154,6 +154,15 @@ + + + + + + + + + @@ -192,6 +201,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -207,14 +236,16 @@ - - - - - - - + + + + + + + - + + + - + \ No newline at end of file diff --git a/CoreDataStack/Entity/Setting.swift b/CoreDataStack/Entity/Setting.swift new file mode 100644 index 000000000..a4907f0ab --- /dev/null +++ b/CoreDataStack/Entity/Setting.swift @@ -0,0 +1,84 @@ +// +// Setting.swift +// CoreDataStack +// +// Created by ihugo on 2021/4/9. +// + +import CoreData +import Foundation + +@objc(Setting) +public final class Setting: NSManagedObject { + @NSManaged public var appearance: String? + @NSManaged public var triggerBy: String? + @NSManaged public var domain: String? + + @NSManaged public private(set) var createdAt: Date + @NSManaged public private(set) var updatedAt: Date + + // relationships + @NSManaged public var subscription: Set? +} + +public extension Setting { + override func awakeFromInsert() { + super.awakeFromInsert() + setPrimitiveValue(Date(), forKey: #keyPath(Setting.createdAt)) + } + + func didUpdate(at networkDate: Date) { + self.updatedAt = networkDate + } + + @discardableResult + static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> Setting { + let setting: Setting = context.insertObject() + setting.appearance = property.appearance + setting.triggerBy = property.triggerBy + setting.domain = property.domain + return setting + } + + func update(appearance: String?) { + guard appearance != self.appearance else { return } + self.appearance = appearance + didUpdate(at: Date()) + } + + func update(triggerBy: String?) { + guard triggerBy != self.triggerBy else { return } + self.triggerBy = triggerBy + didUpdate(at: Date()) + } +} + +public extension Setting { + struct Property { + public let appearance: String + public let triggerBy: String + public let domain: String + + public init(appearance: String, triggerBy: String, domain: String) { + self.appearance = appearance + self.triggerBy = triggerBy + self.domain = domain + } + } +} + +extension Setting: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \Setting.createdAt, ascending: false)] + } +} + +extension Setting { + public static func predicate(domain: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Setting.domain), domain) + } + +} diff --git a/CoreDataStack/Entity/Subscription.swift b/CoreDataStack/Entity/Subscription.swift new file mode 100644 index 000000000..5d65129e2 --- /dev/null +++ b/CoreDataStack/Entity/Subscription.swift @@ -0,0 +1,101 @@ +// +// SettingNotification+CoreDataClass.swift +// CoreDataStack +// +// Created by ihugo on 2021/4/9. +// +// + +import Foundation +import CoreData + +@objc(Subscription) +public final class Subscription: NSManagedObject { + @NSManaged public var id: String + @NSManaged public var endpoint: String + @NSManaged public var serverKey: String + + /// four types: + /// - anyone + /// - a follower + /// - anyone I follow + /// - no one + @NSManaged public var type: String + + @NSManaged public private(set) var createdAt: Date + @NSManaged public private(set) var updatedAt: Date + + // MARK: - relationships + @NSManaged public var alert: SubscriptionAlerts? + // MARK: holder + @NSManaged public var setting: Setting? +} + +public extension Subscription { + override func awakeFromInsert() { + super.awakeFromInsert() + setPrimitiveValue(Date(), forKey: #keyPath(Subscription.createdAt)) + } + + func didUpdate(at networkDate: Date) { + self.updatedAt = networkDate + } + + @discardableResult + static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> Subscription { + let setting: Subscription = context.insertObject() + setting.id = property.id + setting.endpoint = property.endpoint + setting.serverKey = property.serverKey + + return setting + } +} + +public extension Subscription { + struct Property { + public let endpoint: String + public let id: String + public let serverKey: String + public let type: String + + public init(endpoint: String, id: String, serverKey: String, type: String) { + self.endpoint = endpoint + self.id = id + self.serverKey = serverKey + self.type = type + } + } + + func updateIfNeed(property: Property) { + if self.endpoint != property.endpoint { + self.endpoint = property.endpoint + } + if self.id != property.id { + self.id = property.id + } + if self.serverKey != property.serverKey { + self.serverKey = property.serverKey + } + if self.type != property.type { + self.type = property.type + } + } +} + +extension Subscription: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \Subscription.createdAt, ascending: false)] + } +} + +extension Subscription { + + public static func predicate(id: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Subscription.id), id) + } + +} diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 3bd82fce8..000000000 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,142 +0,0 @@ -{ - "object": { - "pins": [ - { - "package": "ActiveLabel", - "repositoryURL": "https://github.com/TwidereProject/ActiveLabel.swift", - "state": { - "branch": null, - "revision": "d6cf96e0ca4f2269021bcf8f11381ab57897f84a", - "version": "4.0.0" - } - }, - { - "package": "Alamofire", - "repositoryURL": "https://github.com/Alamofire/Alamofire.git", - "state": { - "branch": null, - "revision": "eaf6e622dd41b07b251d8f01752eab31bc811493", - "version": "5.4.1" - } - }, - { - "package": "AlamofireImage", - "repositoryURL": "https://github.com/Alamofire/AlamofireImage.git", - "state": { - "branch": null, - "revision": "3e8edbeb75227f8542aa87f90240cf0424d6362f", - "version": "4.1.0" - } - }, - { - "package": "AlamofireNetworkActivityIndicator", - "repositoryURL": "https://github.com/Alamofire/AlamofireNetworkActivityIndicator", - "state": { - "branch": null, - "revision": "392bed083e8d193aca16bfa684ee24e4bcff0510", - "version": "3.1.0" - } - }, - { - "package": "CommonOSLog", - "repositoryURL": "https://github.com/MainasuK/CommonOSLog", - "state": { - "branch": null, - "revision": "c121624a30698e9886efe38aebb36ff51c01b6c2", - "version": "0.1.1" - } - }, - { - "package": "Kingfisher", - "repositoryURL": "https://github.com/onevcat/Kingfisher.git", - "state": { - "branch": null, - "revision": "daebf8ddf974164d1b9a050c8231e263f3106b09", - "version": "6.1.0" - } - }, - { - "package": "Pageboy", - "repositoryURL": "https://github.com/uias/Pageboy", - "state": { - "branch": null, - "revision": "34ecb6e7c4e0e07494960ab2f7cc9a02293915a6", - "version": "3.6.2" - } - }, - { - "package": "swift-nio", - "repositoryURL": "https://github.com/apple/swift-nio.git", - "state": { - "branch": null, - "revision": "8da5c5a4e6c5084c296b9f39dc54f00be146e0fa", - "version": "1.14.2" - } - }, - { - "package": "swift-nio-zlib-support", - "repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git", - "state": { - "branch": null, - "revision": "37760e9a52030bb9011972c5213c3350fa9d41fd", - "version": "1.0.0" - } - }, - { - "package": "SwiftyJSON", - "repositoryURL": "https://github.com/SwiftyJSON/SwiftyJSON.git", - "state": { - "branch": null, - "revision": "2b6054efa051565954e1d2b9da831680026cd768", - "version": "5.0.0" - } - }, - { - "package": "Tabman", - "repositoryURL": "https://github.com/uias/Tabman", - "state": { - "branch": null, - "revision": "bce2c87659c0ed868e6ef0aa1e05a330e202533f", - "version": "2.11.0" - } - }, - { - "package": "ThirdPartyMailer", - "repositoryURL": "https://github.com/vtourraine/ThirdPartyMailer.git", - "state": { - "branch": null, - "revision": "923c60ee7588da47db8cfc4e0f5b96e5e605ef84", - "version": "1.7.1" - } - }, - { - "package": "TOCropViewController", - "repositoryURL": "https://github.com/TimOliver/TOCropViewController.git", - "state": { - "branch": null, - "revision": "dad97167bf1be16aeecd109130900995dd01c515", - "version": "2.6.0" - } - }, - { - "package": "TwitterTextEditor", - "repositoryURL": "https://github.com/MainasuK/TwitterTextEditor", - "state": { - "branch": "feature/input-view", - "revision": "1e565d13e3c26fc2bedeb418890df42f80d6e3d5", - "version": null - } - }, - { - "package": "UITextView+Placeholder", - "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder", - "state": { - "branch": null, - "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", - "version": "1.4.1" - } - } - ] - }, - "version": 1 -} diff --git a/Mastodon/Extension/UIButton.swift b/Mastodon/Extension/UIButton.swift index 916ad222d..d4334baad 100644 --- a/Mastodon/Extension/UIButton.swift +++ b/Mastodon/Extension/UIButton.swift @@ -43,3 +43,23 @@ extension UIButton { } } +extension UIButton { + // https://stackoverflow.com/questions/14523348/how-to-change-the-background-color-of-a-uibutton-while-its-highlighted + private func image(withColor color: UIColor) -> UIImage? { + let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0) + UIGraphicsBeginImageContext(rect.size) + let context = UIGraphicsGetCurrentContext() + + context?.setFillColor(color.cgColor) + context?.fill(rect) + + let image = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + + return image + } + + func setBackgroundColor(_ color: UIColor, for state: UIControl.State) { + self.setBackgroundImage(image(withColor: color), for: state) + } +} diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index 14b993881..dac01a4b3 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -581,6 +581,62 @@ internal enum L10n { internal static let confirm = L10n.tr("Localizable", "Scene.ServerRules.Button.Confirm") } } + internal enum Settings { + /// Settings + internal static let title = L10n.tr("Localizable", "Scene.Settings.Title") + internal enum Section { + internal enum Appearance { + /// Automatic + internal static let automatic = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Automatic") + /// Always Dark + internal static let dark = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Dark") + /// Always Light + internal static let light = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Light") + /// Appearance + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Title") + } + internal enum BoringZone { + /// Privacy Policy + internal static let privacy = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Privacy") + /// Terms of Service + internal static let terms = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Terms") + /// The Boring zone + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Title") + } + internal enum Notifications { + /// Boosts my post + internal static let boosts = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Boosts") + /// Favorites my post + internal static let favorites = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Favorites") + /// Follows me + internal static let follows = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Follows") + /// Mentions me + internal static let mentions = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Mentions") + /// Notifications + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Title") + internal enum Trigger { + /// anyone + internal static let anyone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Anyone") + /// anyone I follow + internal static let follow = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follow") + /// a follower + internal static let follower = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follower") + /// no one + internal static let noOne = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.NoOne") + /// Notify me when + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Title") + } + } + internal enum SpicyZone { + /// Clear Media Cache + internal static let clear = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Clear") + /// Sign Out + internal static let signOut = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.SignOut") + /// The spicy zone + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Title") + } + } + } internal enum Welcome { /// Social networking\nback in your hands. internal static let slogan = L10n.tr("Localizable", "Scene.Welcome.Slogan") diff --git a/Mastodon/Resources/Assets.xcassets/.DS_Store b/Mastodon/Resources/Assets.xcassets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4fb9bcc5505725330d7145831e719cf5a4e88381 GIT binary patch literal 6148 zcmeHKK~BRk5Zr|xB5}#FN8dT+2cZft$Olj~S!c&;>E-0Zna6ky5 z-N>G`y}PzYitQBs5!=iJjzy{cH63*3G^4cxb{L? zxszvnqxIkR-F~#-6PvDYn)R+<)Bo^xTwa#1S97tte)BE6{e9JbnR7IKsKG!m5DWwZ z!N89(fIFK~To^_j39`Z_K_ literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json index 2e1ce5f3a..d853a71aa 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.851", - "green" : "0.565", - "red" : "0.169" + "blue" : "217", + "green" : "144", + "red" : "43" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json new file mode 100644 index 000000000..37df8107f --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0x80", + "green" : "0x78", + "red" : "0x78" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Settings/Contents.json b/Mastodon/Resources/Assets.xcassets/Settings/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Settings/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Settings/appearance.automatic.imageset/Contents.json b/Mastodon/Resources/Assets.xcassets/Settings/appearance.automatic.imageset/Contents.json new file mode 100644 index 000000000..75da4a571 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Settings/appearance.automatic.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "iPhone 11 Pro _ X - 1.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Settings/appearance.automatic.imageset/iPhone 11 Pro _ X - 1.pdf b/Mastodon/Resources/Assets.xcassets/Settings/appearance.automatic.imageset/iPhone 11 Pro _ X - 1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..868d8d8b9b07a2e1d50de1be7f0330b9513a06ee GIT binary patch literal 515682 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%0Dn$8 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

3HDY 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%0A|`5BjsUKjE5o{=LIwUfJcdsb2!ME&aM)nerWFK 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 z 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

AGU^W7&2Y;B^Is~ny4-orj&3(j8hfjVgE72Q+r zWJT@LB&wfV50^?F&SMV=;-|H7!97jU6@FRXID}B`B9xp4p%|p-6}e%AK{%&YAb1k$Nq^y zZ5~F4MfdzO>eLlETm(GiM4|m|b_ZilF`INPuLkFwxXejD1*1f?NeQr!FvQ9`DQjVW zt2F>;^R^ajT47}*$}!(xokya&d#TQrS?5uYRH>rE?XK*GfhD=@mvv8+xkZh$(cZeoxI84l*jkVQ7Mxx!4l;-0~&~d zCA3nfboNszAK0J&{X}+kQ5utT%LAG`Mlti;6IW}C8NEwI`YYtXuIj?Y2y^Ra=Iqd; z^T61DHZ8_Uqn6z|Fx#_lur##hGN#wPri%uS(w14h7FE%NbcLQ`#pvP?(fKpT3 za;(XCo|U_MA4|#0H5Y;j_0jk(K+8J025Qp ziS)i%hoh07+h-BN7Z<_1XNwUc^>WE}fhmJ2hkX~xLaeD3_$^`$15NQFy(~I|voFhfQi z&G;5Um#iZnUF=Av!Q~Oir;M3mmZeNS!Ps__tznH)MrJ*gOfmBTT0 z@vqh>tMofA#=6(XXkOoZJJ;m?7J-7?PQK04hGsLZ{`Mkhm7M|d%Is+>LuHhmb&F(5 zhJR+0t0>IvIErjF_?>2st5im_L{-u&oNM+3@_X2lwUdl-_BHx~k(!>6X8P+<-51Nh?+Bz8+to?6JgZG)+TZ(j;1Y%*^ccM%MbKu^Xqj? zrcr*TLSi3)r)~I&Z)=r5-h|FRmmG*uS5)G1aJz12pTWPwTC+3;z8utOE08#NshIf+ zeRJ4Tjk|c`M|zl?;a-AE?_XwWybl*O2$NCHYZP$cnAZ*t7FMI>PNv|^$j53{7)W`T zcRi6}PyUk>JSfl01!fTJGE)>3v}j8-D*AaxzpAnzpO@hYo-Z8A{Gw7dtuIJ4iUQ9R z!Spoey59N6H%0gA7R5DU_J46i7e{|iA>S7K6F6+Bb&1N3Y;&DIsj>}bvK^p=)|cal zgi0fHmT=^}nty+Pm(MBs_+LCh{XNt-qatm2N5f=odpHDB4bpZ!+ESa->H?6PhOoel{8FmRuEBS?Bm%pA;r z{jifPXFKE_W`Ir_5()|4gk=!Nn_%jX9nQ`KN;}OZiiT zQr)rRO6db3+5)cgTDD+Y>+Lki$dVAugf8f;tsg?}3yS=zIscDz)dQWrPBLgE+%wp% ze#3p+kC_j1-Bie}rDQiD>ialN$6p6RjmMtW=0w2qCF&cY%2qVy<{hCP&Xd-<4LE+1?mk4roR2jjv z3$!;X0D$iqMgQldX>xwVZ;y<0F? z4I1v*Dohq}mtXlz){N()fBnSY#kSQ4k5gh6b$*}p@BPlQfec`R<^1c3mMqXWPIR`0 z>T&uht&-w(wkq9Zipk$syQfa1+r%$mh5BgP{}a{r^XB0_M+;rcZ2(u+2kgyW<^37B zd97espqBSRN@ujk7LUI4{ufrLd1s(?y;lpDz9hKSD*$)hhr<)3d_b5RZL(Hlfj-up z7XgA)5H^ppC zHq$2=IFDH5Xp|xt;IC{wKL=Vq<_K5w|K?R0H~Wj58cdF&d>iy_-{=LpH^7t-GtH?6Eo8 zXP&{?n5Rwf5N1ucQ}{(kr*(S^Vc$*&*7&Q2E|ZkEThO3VBd&-?=(5f?H_NlNhS=Lc z@^|fGp9V0B%SkRnWyTL6Uv!E4Mg=LDnGO~yP=K(k3wF`1qG_X!=j zOnMlI^#DjG01N+|#=E;L3xGPQ>-+LU1v?g0zg%T=azmDB2#CxeI?{v@ZV0*^;B_H9TQx-h&QN+4=!+ z+Z(6>OD_CVP{x}K{@AqgOV^KR^VVdZgIT2T8?Ms1Ss{M(kTAFEo7eG9C*8@f=SQmL zR@4PX3VQ_tRK~h3j!h2A$fq(x;Y~~Jz-NLQf3gFb6odXM&_Igi>F19xVzQa_Zp2c| z@D{>Dgc60cD@gedxT$$H!Z&T!kGE+ELWzFM#eU=iklLe1MpxR}N)5DZy}*$m{K!+g z{wGYxIa%Dg@3JH3=Liw4XLu$g2>mO?f2YP@N5w~1H3;)dgyVaMyFuxvsHpYd z9pJBBmi?Bg$v%QpFFudDx-TTom%8`4CGaovz5x7J>4|U^s2WP{@kWd-t~AsFdckS< z)4meCaBiqV*-1ZYu8nUXyS*Gd)?`7w#((s7&!Q~$Y4VChZmFWy15d15)D2s8Twvj~ zH)c0yV$Kg@2vFKsH8hYJ1YfHoU2pWVI}&XEg42ms8=m57O%g7Q)QCb{C%{y`a1J7e|bB zh~_w(Bc%heD8}(_5jLYZuc$JZSU5EGOexuN4m_cQK_s*2% zv=>#P-CQ?yT9T)yK3AzjsPB92(*#%Kc?u;)XKo zhNM0_$u#3GiyFNN7x!(lv)YW>tT6|v}TO?@?w}Yc=>8guy`Y+Q7rty zpGU~IniBCQ=&a9rW=W~EMLD0W1hJ1sa1JI;kqX%bn~3?DUOi!SQZ^kDY+Cpb^MiMf ziC5LkSexF-K0cxdJb=|&Fx3nv!7r5@@-K;x?z!w4J$vrCmD<)J?r-51gBR_o4;i{J z;^d-J+Z7q(mkkFDZEr#I(9D77@?ZGE@YnUK=^gtiui;W#?>9t>ea7L8 z0=$=&<(Qt>t{C>}0_`YG|H@APi!&hB>B~w_zOCxZOW8_pNBkPN-3htOhPO4*$>l7! zMNy7t6@1hBqF^qgaOsHLan0IG)YI0nUx7HC}7hhU<^ovY3LE*{*?XXB4$rO_5T)a=c!0G_Daijw|zuyFKw)B=h zOP8{*G}XG7xNxbA`>M4xIB~qY;>VlTnNAliWiYcV1MUuyT5dtxXUkhT%T^DJ&EL^; z60p_0IaP0&Z*nJtRS-72!PAUx52Hx2y{>&TE+q&M#_})-$Q)4K5JoEPP8*-Y(`Fiz zhV`U6xaN@_iGS0WG+OvoiBUp4`UM#HQzx7J;Lq(e2qO+tX;>Jq%T^oOUbdJY$^FoO zosm;t_;ir|JhscSWFLNWtZ8&?)1-9vMNjSpG0g8kx12)$pEc{6_P$VtzU)%OEzHIH zrgWB?BW?c$l)Cg@FX3iVke9#G0eoPkvc_A$%f%{F9=B{4=o(x6j(&=gER_QXe z$-lbwK}!enYF+B{3E5$#=9vpB80~>gn7lscsUhAKy}LntDzoq6gHh{{XQD(JBJ9V;Y8z|I7s=B` zuQ`BkWkGxSxA3^=|1~s<_UWQ1Rp52_8Nez*vL`A~`I41G@ z>&@hDBP;JFb|aN{T;B)Z&%@8SRKIRJKg>PX$IERb;?B*nh$2T2HnJee9c^1KAP`Sq zl%mC;?~$iE$OCrJ3O*UMJf-xY$+L9y?2xFPxvw&VN#Zp~abmHL)hKXE-1<_~&K>7B zBI{RkKm4cBZua`An{8@>amkC4!Te)5$h==u1yq~sXQ*4J&olN(rSx78@`xC7e(fgX z=n1#D#wA`Iy%+QgPx$S-qD$q{fr^S>IvzUbNJkp1S$XfZn*apTnZCMot0=g4b|(Gv zm;dYCxl7WI`GM`Rvm~2TwcHiPQS?6b$_v$gS%|#jM7-5LyE}X&V3q{yt0i4 z{X=<;N|frB9g!F)J^N$r`b>c60-pA73z`03A*hn89Q+?8Y8iVGUGc7cxqwX~QNxX1 z_fBYn!%rT761MDx8<2}#6)Lrb;lRFG z+x)tv9pbyscBJx;TQvdyCT$?n!hnuA=0mXZRouoWGB6Me*>-0yK3m^j7d?u+>n@5m zD!G$F-ulGa$B&4CkhcszyafCLKTnzDp3mF2yj?eMhD*0-DO=v@qR_-yS?$?Vm5!!z zP=PT`)$j)@r(<9ZU*kFT_?#@5&Sjb`%(4nm#gPgrCGn>*oQVa_z|c0$O0rkpS%u$x z*0JxqP+%$H`Z*I{>q4+Rl2@L3EHqH^SE$aCDlcl8-7xb3ANV~I_QG)YWnYZq$xs!> zBVn1%JXs1jqIs2?8Hol#X`0%OUGpA>0%%>-$8%aBP(Gaect#x*&ri3J;!W}q>jkxO zUFu@H`C-DocS81V4TS_`LE*oE$>z($wJgB*oqrkH!N?k^n_^;GiCp|;7o3j8@?rEfu z*lOQl{!EE{{fC-x`0RI6BPsDH2Uy@RcxuC&IPZZv0PFsQs!htQTkE_T3}C=x6{Hp( z{b>F`SeSgW!{W5~n7hzcO@=DEyb&Ny!LF21d65(;t)P>Y=ThmW3$lANGr}0ZjO9(T zR)>y>Q4lUOe3ZKG?DcsgsU^ zLRZU>u)7U1OoA4*e?KZ`JZ)#uO0Wfc7(O$Q(6mde5+D0fv+~^9>T_L1 zQtWz05%kMyqRobHM3H^mZ264{1-iG?8zEQ(^K233vJ1`Csd&0QJ>&0RZKZD}SzIcP zER@axmDr3mCD5$#kADI#)hKHMR^bwVQlcq)B^@N`4_7BfLwc8kPC`d8I3zAAN9{gL zDR$;z^q)n`uf_TU*&`Z@eC6YQkoGk<5_$ zUV~_GQcL{3`oSk9xBdfO=596-bw6UZD@{zN;Ne<~8zqt8l?w7BD!Fu9>5~3`!I#b) z0dVAD^D60WaVWW#g~WuOS6b%0y$bVFip4~c!#h&z*@MdQVqz145E~KVv_yl}`m(G2 zM(BKfiLBkFhoKQL$toixPKSUyvia9tl`L&Kkfo8hzY9O>c()G2BIY}7yAdONb3nK~AtIz6>~00&Zv zCTJb$b4T)0sH4U+o!poyTo2n~dELp@Liy@ij%@;Ive;!}_zAMmrF%BvU&%y>l7nYI zk5j^Y*U}@tv z>^=QrKuxG&dD;@Ng{X;;yp(I3iu+i-zQL*fx42t+&@#fPD_ZaX{6AML)`jEY+>I@wNFBx9 zb}wzcV;6LPC?iZSAU@xW;gk3to(?l5ltV#t?ehEk!Sg6$`MqVHGBw!cOu?WSoZJpL7?fabB5?fa0_+WBCcLx%GB3$Y4%=e;R8 zKd`rbpw4FkEt0$Q{>iy*xhwwS5B#{}F!PeWj>SO9Ve|yU66qFI9@-f;@O6t;V5&2z znFZMO_G-pz*6a}=&~r~B9Dcr=9f3BL60r|Yze{b~`Pi23Yb!t4rd@F8L#m&aR0+A^ z+z&Z>_GHTuj8DzOga^RC_HSfHj_W1GA2CTA3FO+6;d*obPJS10E&hf{+J3PETgV#v zzJZW}B38b?!x*aqw1qjwj9q<=5YY#bT{>2d3JI>*Yx@{?5It}6}BrRyV)gM&C)8YptmFm9vc-ky;2hK}UDa(Iv zp5K7g14=hY%r-gdr}l-cC9tNbfing1YTlqGqeL%6@3dKACRV7)STqQr2;o5~ZHB(n z%Lwk>FdEGp4SjPK+DKmkwH+Z&xFe1BU4yyjkJV3o73v^Am)UQ|hHKuyKShGVVJe-f zTcSKtK?NFNgCasKWtdGx2(?I#!B?zFHJGrs2`K_o_iK)WO^wa(nj@qTe7?ICN@r?H zO;|*&P01mvMTQI`Q%!~9pgi443OSs?+#A4PFlL}QNybosZsN4J$N|SzJAtW!*t6>V zN$KnsE~J1cznD(Y+y`TAJ&Abw+u2Oss?Djbe&pE7sStf5Q73rdVeC3?xK~n^@5qpallka|X z2Ur@lw-~8hnpSJGU2VbVxAaE2j|FDb2m+$4jW1FNw^{(GOWiJPpH&Mb@}+p}sf7KUa6z_p5^w?elCN+jfG8!m$p{kOK7kZ(MpU>=t}y`Yyb z2Y&7|s`mmcPD>*mE0Q#@RAZaksW>i{8wu^D8viaI(?sik(&~R=Xt`^sv`=II5C3(3 zDwGk)eP;_1&4!~ZC8_(r=ooFP>E~{e+Se>eha?B}ca?s~M$43Nbg^;jzfH`a&EoXj zL{cVx;k^n3(F$l>|K=~GJ1tFFv*&x9~SQ0I&c&iH= z1&At*n-WBtUR#s}aQd#N5AX_arY63}=CLh#7{fXhrWcdpt>-D$jO$xtU-RZZC(dj9m?wZ02BZ+&RX>-hPY!4!p4f<&0I zn?#28My4@@7Q!e;9bZjMzD<3CA*as;a@dn37dy}ft#D??m&!dC_IR~upOBlq$)yn$ zHK2+pCg5^^gd;?;fHrX2;)Y?#dtnTL)#dvZico-fssZ;h&^5 zuiX#&lv3;IO2|*k%Ku0@*-k&({5RG*-L*VOKU*z6LngYh=-;(veiq3v>+f@>^whgkUipdv+)OIP3(i4nr-EXSC0hH0i7mNwFQ!}7oKw%;b&}@<}mBk@d!NZ z1ak}VwEtm{Dnq3LnkQ7(dFxT0(af(C@_FNY`NOj|bXmHU{SL+|e6~EUG~YUTz}}!O zsR%zfgR}o6E|c8Ao&+v+>E3=H>Tgs-^31;3B!VFAyvME-7A4pG;p#dwj5ZO~=W!l0 zzsy^kzTuX6k$5d&jHE8x*AFHa4UWuveTZdSofxK(qn4gv^;P*wcI~OG&npO7rJUvt z&%oBN`aVNc%al9l#vz)Mv1#k-{?Vr7XR#5#jb5-deaGLc!ls2l89Po(9g_A?oC2W` zrj}@PuB!7z+D^oQ!zz*#uhlTxw1R?jL@S0N>X8Th3sP2Gvfm{Y76Ve!Jx>)Ab@K+zjzu zv$3;_tVVdeK)B?wxwK-J4(bB^zk$BQsKcT20UkMG&o?nouP@d&UW{j|*0b2wU z5c$D{u9h%tL1*Eh!!ik}$oCcMLxYAGHo<6kL=GmC_PN-0iekSlCZioZDHk3N72x^N z-H)JdGe#&$`^Fww5XDp154xSV%Z2j$IGaxGw(99e^v@rW<3eJ!qaB z^41?4C`(QDbylf6vR}PTnFQ!f0O3hak*fM%{%fel9XDP9w&5D8&ZdcKg3F*}l@G&n zDNE-g$Gh~4AE&Z0rLCK2XGnjdf;csI`s3EwU+L4#Tfe=y!7by@PS+lnm?2^7Dwadq zrY)NV>lOGv@u3(I0Yf(;kqmLK{a&S03ljspHRd1cet3uPclt{1Z7F+;!HGR>h+i>t zKfGn|f6}Vf9T! z?|n0LS?$`^`Jw!I>(S%T{O7;*hu}Ns$KmG|+VOvj&;Qij)r>~_=4KD;;bT>vspdp~ zez#m#AS7uhC&VQ+o5u72tz}$>Tv|BW+jnCB8D;Bu`37~E%{5-20wE?Txj*P#D6y>l zaPhV8HWf}5K6#2xRESo_0xEeri_a5t!gn-=`}byqa*BuCs^3TG7LCtE_>*gz{;|9d1H=)keP6ZL({MGu)ZhU@%~D&FZnD#Z2OW9)i~Enq zx+>B*JEV;-FqnFnIGWA5kf5QIQ$&6^i1Bm-9nX5x)W{l=bM&ScAx5Hlkhyv_ttI6~ z0_UtTe1|G6n-*9>F;_qhn4?&#;Eik&lYEcs@5%+-%a$KXKHq;+)GdOgq}&$~GgbRB*C91hL?qat6`E=01FAb|3%08Utf^Ik;5q!XV&zt)#lDeHSwt*uv~ z^~Nt}UKD5O^#Mis49f8N;)Hl*4?|saP?${ixV%J_5z7ku+v|ba&@-?jCfO2#yPgKZDIG$KR zh_}hdu5W-S4J2##GA89T((>fb>a^*}-a3k5!);mGg?<63(GYQ9Z+k>JtLi0O5QLCK z^{Lc0A*u%&lWzJNE3(q*-V@v^^XOl*waWX?x9z7DpQR{y{Op{vZwb8ZnTRvBxI(oX z=luf|S{LdAF2tF(5cP2lG{<}DEwYjCg7l?o=gID7?8lH)_a2ON%_ZMQ5ug8COJ~DL zbKQxQ+)_<8dgIt5=9Mr8s6VS7+AY~h0U;sMtv;#}&hhU5N_hAux0~J8`Y%d-{1H0J zrZp;3FM)#DK3j5ruag92RrqUeuua4AFL%}}dYbU?OQKY0GZ-A1I{ zXx!x|0Vr4@NstM??%iYQQg-;zA~J5rN5j&7q>XwMn#}nYHAA7PK()B}gtNy24&7+U zh}e7|?HJ^9!_96__JvJhS3Z2W1*(>i$o0!&;W||~CT_25cGyO8{z6?%$=~1>y>3SO ziA?D+mUY!a*^oxltz*kC?~PK$D~c=j*bM7g$j`>7dCAB!w+t$%r+8@_Go)8Ih2Q$~ zDi(uI?t%H+#O0VCIMdkq530e|Zq4k;x^6m~7MWN6fCQIP%#*9*q{$fgRbuStCq_-P z{>l6o$L)E5Yedwq|MvRrEklqafeBKYFFb;YfMFkK&0I94q-2F3mU13>KGQU~8^&gi z(Atd;aFDcpZ~M|wu1oXM;e43L4?J8*5PiTvp}b#SH~B!_hz5=PRD>3juEZ=mn2O!* zco6LPz6j9Kf5LEotkdvcW#DH$NS!>?6|dVvP*_qzZ^;iYo6jh$GZhZXwT*s!#pPfh zq=ByLrVz&|ZAs~D+-&Ju*z(&p-S=z=4Pnp4_fIR3E8X($dYFE+lbiY;^kD~}6#F&oeB*WPHg^4#!~{VY zuIeMf*rX!dN!)C(-`U4n9ZBS~HlS)S;5Ji~@1*&HjaiM^!5Y7|@$6dY4#wvh`hK46 z=yLW2wGpR94XX9RYMO)YqU+0Ygu{p2eFFK|ewG=ynj>Z~UG9X>g&?Qzs8;^5Tcao4 z8piyjhN1O-~cpo|L2Y|EoTS+d?f zA*4FN1~OuDuudmMvoy@I=LKP-Xh{RUJhWM<)U;*|K^+`LC*0p#Of($Cx3W z&h=k(su|aSfujn~k3z;&by}FWUwasO6JwYcaDiE_KzmG{8Is#H?ebOLlNw#0C8&x>%NH<#!&$rCo~qnM z_jPxOzN!YgI)Fz2#GerQfnX|9Whbo@^z^ysTjLq%!NzO|VjnFp1? zD}<{!avPVlRiey@`*3iK%B3-5Fq@;ro+HX13Kg@5gRq5~|H#Pb0s+o!Blgjwf z!b{dHD;{TYH{Gx5=Tg7n2r>qdpmEa#FDw|1OA(nc#FB)*uijH8J%j7fc6F;7YwVJQ z@nO=^^f&n%IAEFqHLMq{uZuumtw{^@gys=m(E=qs-Hcgc07;N`<~dIqI6pA~N95V2 zVYIFUdp@i3tGAZQowsEE=lAcqWT_}yb#~U2>eHU}(gJV6BxS=Rc%X`>CRovT$6IMj z_&mmPtMFaK5&}xwftaDMi7g&x zM0i^A<>=Pyr{MncUC#3#mm>T&LzP}NM92pNaf2x--$4an$u>n}W*GIuTW^@a!q*?O zKh5vcR5>p*dfQ|9Wy-jGpWuA>t5s>fs#*wW^aSd~)6H;cReJ{j)zm!d{_Q}K?wI(W zo)a4Q%ryh?`5jYIpBlnH&5Km>oW#vow&z3$bcj>f#Vz zqE@6sY$r`803}G%lEm)|^t29YjIQ(l`0r@=<5@Qa_l;U;hBVOYNlKolW9~r9A@DeZ zK|&FJohB&hJ2;|38+4II`DAB(7TQ!LM;hR-+vlmZ0zA>&Pz-%vg>B|I1!<^75Q;X- zyL2-yARZwUjX8RnU>z!)XZg0)B=NneH5PGcMj-LCQ8Qi%DNGH){CRpE$t@Vqt!)R( zd~k_q=gJbUm?I4EMhyI1A8o*wMj{YK2liD*{pAN1f@S@>Crv%S_7t};U_d-*?MaD| zpt_?IL>}!H?fq3NEcqYBw51wFCABR^(3j4oc`2PQwxeTR9P}$59?GskiaLA;?7ua} zpKzwrg9&kf`1IfB2~B8(++*5*S^i5qtPX(sxJkRTbwj)LwaJ34n}9>v ze}BMP2MHldjjb?=Y@^IrlY}tZNp_k^i@mJbm#kwc3}fj@v|7?)-!)_mQ6XZ+SR?x~ zWO={0=l4AS-|u~|*LBs^6=v@HKIeSS=X1X2oRJy3mEA4c@Z2ff^62DKUJo@X!}w5x@Se(ZtKKomh2(dfiHFs#eG%-6{;L%QT9rR zZ8$e@;!fb;j;mEYbj&6gBTZk95RdMk!Qf%tk0r?%L=7i9Hu(PON`7*_Jk$25`Oeov zjJE&WVapQD`peYBK5jEI#cwu=a z3DK{NzmCX8TU_RWS5yjMdso1d8<;`YJEKg<0Om@fYa(RYW^Xt4K6MqXllva=d=!FUD zv-H}QiGh|>u;c;ynrNyR$$;xNmi7SZ5$D~ZH;KWQ-t`$?nE$v4|8qsA=vJutgN>ft zbwX#*3|;r~&dR=2Mr@?H_STvN=#nkve~~|%bpGY&#RHP}5}@P4E#Aa)mFI4yZRi-8 zh8^sg$rry6|41Q=H890X;puN1vnSRYrE6P$9x=M@0?8HDZH}$uXELSF%gCj_?pPht zP0BWRKjj&fS7ZcC5lSC&R4V)vBS4%OJ#K6g(hNqMBWj8moTrH(9%D%xPY^RLBAMAk zk9~PGOuWX`cUIgs+^hbk9Ob@2@Z%et&PukP#FCi=0yP8aVz<#f_bMK~*d}Gya%Olj zVfgjci)v7I8R;wLIxqX^GS{(!;Q8fT(PI9X%L2))FY8bIT1mFNGIC6|^z-xOGP|8$ z!!PKMxH01ouEahqj9V{q0}C~D8B!LP=56+!-r2JAO`nzw|N6c?qiF2a_g>h)=RN_7~uW^4@}gy^`XH^eMb1 zC`$kXW>b*MJXp7!n5J&)Ze&29sj7gW3x#R(>!1I*P1h7JqcB2Ek#?Pt8(>$5DR4o` z>OfDhP%&kbXY<@1nV9fY`AezAC*|ZM1ci(8Up&m?`eoG}aEU85C9K85M8871D2Dsb zOI!aPkSluYtd4$Zvi8T{Ac6rvtsUCM^diNw^IXr;Z8wB^yL(PgU2nDRueaMC3tk-S z-R^WK`^M=Ct}b3}!oI*~#aFh5GfnIITn-*gM3<=HqTYpL@%rik)?|wDMuPUNH$X@C znPmoH{rB*;k52#J1V~ZQmIF+L@f`Cik*(v#%z8Od?b=7Ktl!==Hg{*ew=1Gm{0oY6KM-sJ_lc>0WqdB_a?vW$*? zxe-L)Q-n08>slrQ%%uNz`uA20Xdxb^x@pTOg^r1Qd_P@A|8%BBi12|yXM*2QbB>)t z01Vl|%7WN>QsE3>UC%w$nWCqn)-;pr(WqzPfn;hkR=#9&&j6z1X*Mc#%g=^`!4{OU z|9*$~Ors zhTFH<&du;rx)dt=>4!0471^`&)l|m5`E>#zDOuH@OZdhCqN$nhn@a)6^Xt z3Ty*$C&r>g(E880ppTvJ{>HetIN^s*XG^srzyN8<1n=@Y@#qXr#i5a9i;=*O&kRkD9D>&XE6F~Sm2db#q($b8Mn(!{n|G$S1R1S0T%Xg9#F-`9xkZ z2aV~9LBk9(IUA|mW{)oQvZN$|o_7{~H@DStB*TTGmmvm1QgA^a0>#PB9(?nD_hYKG zeo!W-#?QgHxc-K2)}2GOv_lUvZT{xI*46I6N@!NgDDLqtEoz|b_-H>`b{#~aV7i^w zccsJtpqJM2KKiUMGIILqgd20+f$V8?Z;9`0bB^ia{9#Ny+4gV&-TJo@)m z#8G$PNvUn{YRn)!m;fH3aM>m6pan~bsdMfrqX^5CA;`HcR~5}>){$+d^LIv9Sy_J0 zsrZ+XSiq0uj2%}I@J<`AUm69OKw-PXZ7Z#_^dArI<($|z3QwVCF35ee=MQq7p;?@m=ubAYt&y<9f<`x=j2M z&_l>0!K9BvL>~Mq7>%^YJWPf1lDDHQ0HDAbCy6EWebBA~eJyCvs!I(i(jXW;8abYyg9hUiUgbb3z~jWK|?Xck_tu zFa7`Xlcr=R<3t(GE+@D;Y<#G}7|Gz=opPPVEbvSBqz@# zT3fL)71h9m^VG0QUN`ZwZxzi%wnwm(6+KZGusCl)W?CHy^%i4=Efay3UImGcLR8j7 z_{}7=nV*OB1rz?cxZoac2W`7ugZLA zQ5WzLLoLd@wfKIi6T(?DHDLX2)c-~ zq6GApZr80U>4G+<-7jB#_e~CpR1yBh9AM_LY7==VR|@c^Iw;%h-r;}UutE=ZDL&kF z6}Y)i8rnp_L>I8Up>Ke2>ES^BA_McbbmM`vw(S=12ZYfSP%qgDWcu=e+o!s1rCMtE z^grO9(6HcS%!2^@4Zw*u@&P$^`XB_QI4IHWIzKNEr~X=?uWoYT6!f38f_^$BM_0M9 zg%GZcf}XP(xJr~O$Wr#QHeOw#WHo_^ez~+DGAk0i%3wZD7Ng9!BY6tnxzxZL)C%kU zC*dCoryKGdhm=;*5TI_dn2=@|M0`rpC3G9eUEi|6#=QRj{R^$8qRC=x#K(^40BOM5 zQx>+XMjc%grwH2OMiyb(DM{3f8$bNY%1l9W(fnx+S-M`YmrNYYt`VtQFAnZ0{QmC+ zL5gfg`?6b3T~2e6-EY!N2oH8Wl(c>-x;z&G=)gb z$Z`QCO0daCaS9CpPF++LY>sIO-A!*1C|sC3l?;mZ#z0o=fheU(U6w9`C3img-rw2I zW8v%wUs#YVn(BNILT-?Z416G992^ZCKUG%>DtF-Z{`)V`jcx0;1|Y0g20~##H~)5( z$pxpj8W@zuR3KK!;7o(B<&2UgwF^nGnP(l_p{aYcXE%p}*R^vk{;55>ay-;V%<$vEB|CfY4#cRB1 zR2qOChb;%`>G1$3P*eeIwsA%h8wM?wlO%dzS3QAoqre-&Ry~3C^4BWs9oTAyF{LfQ zBN{|ANi#A&btDpz4DXJ@qUO>sSxDF0S_e*<)a?}c)U;20``5MOpK^HW7>Cr9KlB1r zgcvSEstFh^l6o#b4y?0Fk(k^Zx8J_XikSfU(Y>B1fY5u0gaPi1HtL%`xcS5{3i)x6 zJjEH{f$QYemhuQAc*}566ST(%mDslB+`)Xm1pevgeUNBBL%ye?oZU9+fjl2XAiOYz*A%*)@pt1I|Xp zHZHk)%}Y7l6jGV6$4>t008amxCe)9peb#N2ksiFB%gC?%2e~h~AH3F$m(K>(X}?MO zayjrzeMo_Emj!>)1D?U*@t-txmj|Od(Mj?1bYliw9h(W|7eY8Wyhx^fGXs!lkQ_Pz zuzblDpYxD~X}^I;oq;*ja^e7@J9x1$cq3;m=)L*Nf0Cm*8;pPX$T>VvSD@+^0x1?J z5YMsNI~ij(KWBCa8jL-A;ZSQ8lqqTP0^N`I0E4dLCNj{v7;qUN3XLEU%~6J&-{fS` z-)GQ`)vuM(us;i*(42ZP}~8o2nc?4n`*ENk2HYIqyPcv z77>IcULq?JW@Ey$$Xl64UN1wsBblHSJlMaasZZ$|JmSKc7X3d2BKFw0^G<2CLB%I)a`d-GK{M^Jf98MMu#BWdlUbAyf0>uf*V&E;g z(jTP(+fiP-UkGHJJ<#G1GtrVH?2JfUSrK4`x7y18f$6TtF&p0WBU(l{{_( z@dl{mEz-9HYB`wF33}e%8g)>&2gTqfAYTA%;#`DaHcuv`L1DjGJqU7CzR&9o5{!ud zd2jx&>-k7claw?7MtmdiT^9lZ7SiLgBV-`LosEDx1LVLxDY)xI5*fsaC1APlmavfQ zxg)N*>k}UQyVAu!9-Nmn_#xrTidBvj@XMo;w7gd!MTgD?FT~YN_e}lc%VwlD>1F!4 z$#Gk)lHT_dN>gpxI`&2;NRU|xNObln#MwY%2J?;p>qT~JB4g>g5-zHx27t|*0yt~ciHP(axnuu(}eMWrp51p?_g8^N*Pf+apr;yR5AQ%=H6O?&QUT9WO#b1>erI zuI9=}pL;kZo$=wF=$%O$!Ih6ao=JdA_H02?YFBF%0%$t-l!_v9=CmqnpjX zvAxr~6EZi_@#&8{9&XRC6}w*KR7fJVF2jCE{9*7uU>uQ{|-&@OYh|MsV=^V_!hn6QB}>wcG$`B?5>eFrQ^+%isx3 zBuM5YIPR*OOC<6J4(;vykd4fZy$XGsk?Md!VEmd>{r&6 zzJ|2j>+G~p-1-HYc61}Ed_8d&`<2R3b;b}u^ zThwxOPsJNK(%~T9?4dKLVd*xIx@JmQ-W0~E5hl?NF5=LN1mK`x)0X3X3UYWL8{}8O zHUND9;u!!xtQOj{Dt|z%+PMr_M!p94g#0+cQ?3m(C1`INx2}8xojl|#iZ<0x=VjNf zDt(xcPah2035lHo5|+L&j;4|q*aKX~dhg+f2I$D6$;9u63sKlo_^p%Q3|-?r=S{}- zN(^^%!jrY#1ZG`2vFM#F>y@Xf>A@4mvg*0INg)bM0J@z%BQvv(nr!rNo4{ht`{dJC zTWdIDL1f6SZi?#OOcT6ucf#uO9OL{LS99{ldz9z(bZ*xspFh6uZ4 zvh31`*(jvTgb!D4-xkZF0#~r8@Ls^uJHp`>_To8aV{;)1!I{DUN6 zwxnsC0MU=8Gw3z=l)L6jQrBq6{fqXQ%zpb^s)dO)G# zKgbDc0=rB=5^Q2^18(arrWT-e-saxEfU%24K_DoVmq5Qf3G~a`jd_8XzBh6ycl(`> zl`kpHrBfSoQf?ocbZR9AN`pwiSl#MCt_j$tc+9 zcPSi2Z^MsYeAS%q z#5!rLJ7q8+hnA)WDm_CA>6jFz@LW5IbHc*K5|}4LE)Ak9Z37XntT#S?y8dPF{^|>a zIp^xO-}O6hj6 znv4%YwWVr<+#MPH+-a;9%z+Vez36VO{LH4p{uP8pa zL4PwD$uabt?4vp~y85KA$a4ySR2G6v%9sUZTfm(R$WT!jZN&Jqlb-8+CvL;MKLu%L zv;xY@*+#w7--mT+IP^F== z2~-SKOizirLENLQL&aM0^L&0b3X~(ryekq}cGXO%NdGc6+*c4s;Bw>-xfv*(nLm4@ zHg!SvBX7(7$0ovVCx^6}o{Vu%xS=V7(_))++1kx$yQ?dxipQ7r;oB+c5<9t?2NENB zVuK>U+AuAw?Jd-#M%(&+g>R{6Gs!qQIsel~U7pRNo$281PGZu40PzX05ll%@{KTRY zT4Xctb^&4y)z1U&hCq%eSncYz<-q4EYcX5_bN#kBa=u_-mD;u;eQPG-JpanDK3 zVyQjR{>*B%tVT$QEA>aIa4kDseFA7^u)|Q*_ zd;aBCRoYX({{&=jw+~(|R|_^IZOi;L`Aai7j>#=2l$gv9DPkOt22d-GvPYxFP5D3k zKCyGCpeA^n@&)6TU*gE)Om3ug-K>Gf4Q>;1*I%=`WIM1j8q(n&r_EYmc_)b-sT#i| z(c-xGk6*`n#WUSViziPlUumfB1|1J7&IM=~vZno@7WSRG0Up<#Reu|Fg2SqQ-Tgjs z%rk)Y>=Aq=kbbB+=aI82Y~!Y1;nsNFwpm?E;LShhHR|1NxkRdq<6_imgq&iT)LnJt z?*~lJL;!^h)?&(v+as{3Hw2NiR>-+wGgWt_mR+Fv2F+*HATZB2N{J0Pmw~Alex(GQNCj8hoAex z1%>XHL}}luBHxZkl>5+Id*RtnU3*1})6}0mbk-gZjR(I(|4>hOrU$?Vt7`6#b#}_{ zbMwSFh<<3yXCci++b0*RsV-{09ztl&)P$9A+hG0PhWETU6n;IdX3YC-wG6gDz(9dc zcBMX!dhcZIgclp*flYq9L>}w$VI=0@qbT@X` zq(~kw&qg2V$my(t`P?1IW_3ZR#94gzs(4T@DEm2p%KU+CYY!5lXVLTs`jE_4nm8=_ zRP@JI<9IZ6ut@$FqDHi)DI>rWl|GZEUA>TRKxA3;esKSid(x2OO~ulaN5G;sj6`$o zO4+-oGsI53)lse_h3>;{{NqeI zw)u}Ys84unNgjzdCw$fFSWQ&HQ5M)&5twi;pvubk-sqX89~)U$7h2?2)1=KJWj=Kb z>wPe=Dt!|ax^aW{F={A_@%VUf{qM>!y37*yRYl!pyNyUY(+3MM#+J-Zzp}~B{;KtM zism(|jCAe!a|74$WYH3*2TTEA&FZE$H2%pHH|nbvI?fbjqZ4+#MmJ$o=4@@no|!ie zF=pizHbP1QVSiw+BbF>TIMn+CxN7@l2Av0HrFH%GiyUW2jS&NN2NhKEBMb$!#dwLsHHa5u9euHM^O?pY8JKOR?$a^@^;x{-cYVG~uFIhCa|^g z^MfV@NniZ~n`r`(U(EecSci;;F=ieMtq$$cYusWHCnBkl)ajbG`?C`ioq@aSq`o5L z(;9)2L)mZ_NV$Ww14@(0SZ3)Q7SL+IQnTMy zF_U+6Y;y`8YwazwoGt7xpBveXbDBke9yCua52L^efTG!hlXWT0M5J%csPK|a(9i1bt3j!L5liL0 z9FfCwM3zzSP39Z3G`UgM4n*+{@Khzjd)sYHc1>m8yx2|T*)$3R@haY-RdC~8j?eRMm3*+k?3@y-7W$OT7hnC+ zpdet;N{|B#dt+r`nihEb0C7%xOgXvw53^ZBN=V!f5s1W-)~Fyi?VX= z9KKrRBmQw%SGn#HV&M?!cjR3fyabFr?CWgQ0)u;w+wfJZ`A)j%-SR_gB~5FE3nfaU zg^b^cZ;tXLUe~wCgbHbjeo@!E<_=OKwz%o%C+0g9V$hp1l|;g`dlfCB-GZZgIn1!> z*B>2nRoZBLedcttoIk}>OxC1ed`2Zc70V`0;s9jy(};FhL<(%M{p%q=H3G9|)rnX7 zcavXbppDY^uXf4fl039(iw^cEkc-AjwO$>L8=Y}5McW)>4l2C=Rymt^@$4)oXh`vv z$xwOS@U)r__Aw&oQt2C{QM&fB_=ns|>lS!WFNi_)TSxogH5a~L^%Yh*lKYMzST8)k5;>Ms2@6!(_|AHc#~&T=Jj?ebrmEXm*6V&vtE=_UTVd z{I!8^h_U%OiLTp8q{ZhC=8Nu|kdj|0y(k$N=sD4|IOZO=FK{tX1kqj1p_XE<$M8m7a$!cw4 zl+_Y$pKAxooSqI=opCEU6vbaJ8Ks&RVADcovN_w=6xAxKocLvM^4NI94^h2Rv+HX| zAte&+zi8Tb_ajV~hpcVu*H=lszb($+sQgy8?2;1c!_R(=w;z|h`3I|-kFOOQytRYd zdg#g(4cu4fe(qPj?Zdn(g?kLOaDx^bsJJ2wPP}W%={BRwW87CgnMdbormZp64H+hb z-7qPVli?W~7P8c(p5K-1riJPwGhZa$NYKCSB_2j|CVJ$ZI1Lo7`{(yI{wCtigsVmm zohwtsa&mu4CXV=nIflEIJ0&LX-~t27YoDDL!KwjcGUo$Zx`~Kd?p7Egh0jG*^T9kN z$Bw(E=_+^G@+dgZ8N40QS_@K4;rA2N7cys5(_MyE{g2R*ny#bi(q3tdhiUWEJ0p8X zsPrEb-TV@Cey%moFsDxW;w|5`Lk{Z;u1T~fgMadAir9IR2)}rh8&M9YNB1-Ct9Ql{T3a@d{FNc~Es(ttc{(vom}u zUO==ZBF)Y@elOCYCet65Q7O&ZF~+R*Xh?KmT26ZAi=D9V z8?(<6_L)|vQNB2yI1i&l;>WpkXV||Clv>s0FSBPU7aqv5 zI*oH9gP#kI{qlCt9k)K3GcHXyrv^#&$wL@Awsw7fjwjL`7-YJyMNAEp1ar#9Dm zTl{RQP(?PH8g5|GJmvf=w8qn=ZAel?+%C1Bmj6p?ObX1}5cR~9>Y}wD2|z0xV{6$p z#Cy1+1C_LO8O}~%F<9F2yH?7yRreBacanuPB*!n9b-Hf0HmP=A3KtwgpMChXg$zyUfTVClz3{0d9?nIEva>AI~{-K}DiNc_!QlU*zimFfVKB`Aggd!5*5gu_wa znDxjEuXte-Ea>bbQsjSIWTcAYc3_FlJ{{GK8CLPcw3TGSZ^|s~zG_8syjqByi z&@1vI9iBS^tgwrdV+3%!g@jw&ZPl_pR;@jID3h$cJfyBhKo-BtZnm|eO@13b(9*z? z)BNEO;-)HZ9~d3}^x>z?m`5-tBtLGrderHYE8kE9U|# zY94+6l$$IkHE12h>e8?@n-EX4dAGLx<%GS^w)m%Hfi#Kgoax6OSS$JF z2ima%YU)D%0f%Ot4dP9-!70kR9bX5mI3YpR18SZ3ZEAgPP0Y0HA;c;hR)M$;N7e&K>7A-~WJmL{R&uP98#ugPF} zNO++=&^e-qUZvj&gYAE`x)_j{5q{@hn6|5|V3TX#sd2K_kD0!^_^Y48cuNwn3jJ_O zeaUZN(~*Qv*BrH1jYa5*yVf+uE_IeL2%@I{sr3znibO(_0m^#;fCLKgT*cwLT4;#gdv9bE6$Zfvuw+ z%zJ88M8eW#D=b}G{NlS*GG(;U&ED$5_Ix&Cx*?lR0N86Ck`U2-*IgR$hrB+a{KM6c zE$z|u?&dPr(ES-=m@4`@7F|C#bNmGN?V+o>lHzA9%F(hLycbH}oYlb(%t@43nCBeG z!bUV|#+EhX3t4>=_;cH$e~+*Z+-QjWf+8)yxlZYu;P>L0FHm(m?~NQT?JHdmJmHlD zTIQjSq#5tT0L?bj^QgKP*WlmMUJ6)=%&xSXVDj6l+uTFo1tA`c{SzSyZ5J+izL2m^ zO`?h%as=kQ_AuLu@C^B$-}%01gr8}!5Ym&~^bJ_PXz6%;)UavfPri;Q3OU|w67{S2 zX}am0sa;_p#WdK)e^7MuiOYSuAqa9A(61S=t#a-dGEGYXSAS_b_U#Ai6{=w-naR#` zUFwZuo#f`l^5A;Icld(P?SOt8;>43&_@)p@hzj+Bm0WFPZ3SD53h%ezn$xN4{!T(( z2ZmOGA@2mpn}yU2w`vb(r7mfSG@x2OXmF^^9m3+oj~HV6{&eW%`>i7WXdSC4Umx#> zVveAaEd0F7S%-JajM;2lJm)k9h2iOzhJ`EV?)&HyXszs~S{=B=d`Cx@tXqe)wIk3* z&p|mkwB}k=i=~zqubUehY{vE-Fj8zLG6j)Rat0ews&QjaYr12vE~EYCyt9hCu9655(U9yC$%XdQacQ>~3+Y06RR9k0oMC7p|;GA+e2 z*l24H^XC7w820SBWI?l~EOi;O;PQ4vvxk+4+6reerDk;xv<~VLwXC%fK?eR$GmE;M zd7S&NNL=gN0wZit#;Kq6$ccvjVP8=LNbqn;g1M^{u-0{HJ2&^<)CaH4z^f?Dif<{Z z6!zF11Y0+`w_vPGCHNa6=K+3AjS8+rp^bwr!`*X$$rA0}W9;gy2R_kY(bvaSnmoR8 zm}Be%WTMAxOl=wtJ+3g^3DE%CJwg`uYBq^dqy4JVmLHRyczDOWqWstiYYD%X&4>9R zV+B>E?WXS4RAkq%)JrRg!Z1g|@bIC|CFI5BFZMgR)j~@0bs2WWaV#^I6Q!^>qn)7r zMw`cTwQ@CZndSOBtsnP@q0b(B5;gU8om1ANkiK!MM<^*YkBuYb!ZmOnDQbQxs_$3@|>qr$5Mfejt{W`^>k>#<`6 z+FWy7P)#<)L4xQ+KrGC9nmB9`aZSG)a7QMjfsuFWtM?S^=)&)uhB6;aeC1fi&*LqN z_aubM$eaafm+rjcCCfAk4keIzki@_zZ!URKz5RcO_k$L+54Gd>HeYw{ zgVlkhZ8^eGrLEqQkF)gAC&5r zMmTu9;0zLz>wdTZ#b|3#TQ%!cRm>Z>z2^8`QdkP<#)QZh=n21PTgPkfZk+cQbgc`nFEP&v-!6o;BmBo4z^8F! zK9*kNEzjwU>%?vfGhd6(H?Z03?V`wZl*OOP>K`OgJk{&o7NT5F6#INT;FoXaGS|L9H1 zp9|qjHFJq76N6rJ4_vn@d^Sby)UJ1^Ol02vUGrUhY4-X@cX%#AfaK9iLi8Q!VigYo zAL2^)-cftKPdDsUEPXP}Vt+o?fOE=o%JQ7Z+t~wwC4?OmhIqmPZ_@lBnfDNm6s^}A zk!Kuq_@}JZ_0vm|v&JDld?tbNJ&tdl6v z01Kf7YUZyb**Q?RSh$;CxQkBhL%}hTkG1?5%=au=dOQVd>x=@d%R}IYsYg*f!mJXO zEFJbY*=y4<_O}9TBLWfTm$PMUKS!enU6D89Ru(__3OirKU6#iYz1XO#00uM{kSBD`rMG zM{#@)mqQ7g>Zy(&+?iZdM(YHTe8TWsTP&nW*>iEU@L06;jYS8Pj!rX%u~DH;=x7j( zV?*U9E4ah!ge?&iol)d5)LDx=5>dmt^@lus4%I3T#c77iV(SyaSpti0va3c8?Pu*M zbLWty88;4)kTeG4?hWI>gXk0X$MhC$LN9n<$)KSyraJI%?lIq=@45c4?C2%tC@W^H z|3iN1kXuQ&%tFhe@Nk#dYhtJfyoSEu_M<(S8C*os+Mr{WDMy~Wcoc;TI7AtoN2Y$@ z)fXflq+ByPaxIk3ApGUAicS=GDu_yyP|ub%04(w#!k!7m8dfm>F(aFeqO<*heYTt@ zu%C5Kvf!x{|KqPMXwS2EY%|=EuKkJ&G0)V)q)?~bSUXp%V9!fEm}~dCv+}x=LkzVk z+_f2r^kz+iaUJg04F3?>g79!9Av+asZNH7{uN#}98^g&}hNp#@8ZLUU+Ql*IN%2^! zFroe7uG5|RbxxTR(YU{DFd~p$7IMRSWe1M7u(+5@4TTm8iYSTG{H~;8kpq-1mO$xQ z#Rk&se;F~BHq$hA;~|wE>cv{j%36Ru~|Q(qdd;1WQDXdzj)0RHO|-hDDAmIC9}D^SZi{I%7CIv z-kEyRW3`soJj4b*wo5b)$U>6GCG|W^JXu>1n7j*DLZ(B2neM?!Q$dFo5B#s0u62^> zY{z+h4nHm`@I*qNIiC8)()npx&%ocmBIF_dnN)xFGyQ6HAOQb1UpfQ!N`=D zvXEj-t@Aq1VZRO!A}YNq%OU3vZ1XP_G^SpT%KDlQVgCYkdO%)sU*T!ak6!m5)1GN2 z_H3~hCQMFvXg=V?kT^Lg7znM`i@(5_odkPTgPDts1z?Q&0!QE2j2(O8^TApoqGCxDtES zHn;MFr>~@)X{oZ-zs2rad4JS|EF#OVStc`XpTxax!7>eZc6~w9NMP|}?#HY? z%=7ntG|9So8WSOUar1Xm@CShgJWpNUc6;=wJn96o3|t;FX#r_KpYeht&dRy-n?97F z4M^NKN1dtsP%B1#5-m_-&=?~LBYpW+q)^HK*)%=QhYxu^vH9Sq#c|a(nP0Y=nF_oWf$pTW)sJkA$#Kl z$~*5>AyJ0F2e?}sI0t>6OIRW~^-jn0;rNa9Zp`=em0ntga z4Dyn!Efb!n;9UOSVdo&Nr%byy&xt!3-QVoU#N#5p7aq-f?Ee#adk{fB$m$hSHkXs@ zQ$IGYj3m?sgxn4jC|6>LFBjejYbxEtpApUb&4cLMBHV-)(=plXZgx)*PSRi8%hT%+ z`b#B7?0!n;cz(p!h+mgael*FvRmKB9t*S3LMJM4zE``!>GKFRe5~K~!lSVkk9{zgx z?qryJcre`juG;g2wr1VEZCsdr6AJmsuYvDrk~u!#BR)V0pEW2^syFs!c2nVTFHk$u zoyA5DH!m^xOLX#gUix@^{~@VhDX@CrwUC#Q*k0Gg531o|vceJ5^{Ht?Ts8RyN%5)n z3O2DVKYZnlCCeQ(h!zh5h35tNAIWDh9fbK(d$`LLP>&Jjb2=y?Lx(7}x_Kp~deKJr zg2PgIF`{`M%%1LwkxPI1Yvl}Sq5_kX@1LkWtwTdKco1iGqv+kh7xxrGI*z*?nM3 z0G#x@?^#-xa^*5bJ#4w~UHR&KXmfwW5!EwY&4R?e1x7Xc<^65kj3m02kc*1-eX^9C z7p^}`Im=R^UMj&kln#Yr=tljurfA{?aDDDYQM5JQ`I5>i(b|}dW7OZ}e?*2jGMRD% z;SH&L$a#E%4yG*53tkuy9(Z37ZUi&yGRVw$w$DLj))0Rjk=M@2L^1i+J`nvyQm)*~w+Gx}0XmyYR#ajo3i^bf_JRFedjsljmCN(Bej zUfdpQlZr6Uq3$uvpDN+r3=wE%>b}YTf}H~x&TT$2u3{X@PbEggW?*v(5m|1jYd5zz z1O3?w1J$J-6bTXj%t+KU!m^|qwoefBT$-WqQY3ZB!IsG>aySZSyw^yW zC|l5nevjb&$m@Qa3RyAmvU0S$QmUj7A-(aAqnA~;kr0X}odZdgizwsO(bRp7 zoUIKNVpq3Er`(Pbs}9*uc3545_VMPb}c{{+V!|nIU84zWY-8|L+L2 zw05X8;u9RoP#@`)u;d<>H5VT`*jFcu^j#wub~VFOVwY%lHN(yK>odCs5~uCUQHn2! z#?eO$ ze*q(~c}~Vc-|5kP*HIWsQikA#%VjGWH99eX*H6Cg@HX>5ZkKIEPvH$G!Iu zy_a2~*BZFBvJ-szoT0cL=Z=4ZVNGo~*3L`t_%ge-IkZ;U&EC+PFB?3h@rfrTvprYZiyzCGTY<0N!k-Hn_76=Y;ZF`b&jI!?$O zt?<7d?QOr)pi+^4z*T6m1;iOGcVAu%T7ON_+ItdlpGoOphJ87ed9k#4kk;nORQ-qH z_+US?4$YZe_|2#Sh_mx5xLtVkx3y@x<5;st?_e7<$r#b{t!YroEa1+toIc>5dn972 zNYu6_!@VAB%LJaCn~~Mbm5p#_&8b>sI5)hUbq(i5FR{LcO+-e@C!KGR zVJgZVEgZk5*paJ}g~L@nLL~|ixQ^+Q%g)16UO&G#rKGqcK~2#w_{%kY^ECicjpKOP zf+m*{`J*1!l()G(1qby|H~`^nm@sYGAl8F8nBv~`SpQoM4sP-Y6UoC^+&MpUrO^3t zci0n?eMRzdwsYswU*)8y$V6zyUvbx@5+enq(aZ^{^REoQzDHNO20r&KdyZC-s&zc} zNMe~?YrV$Lv{ofoEAVcEN}I7(sZ>Z={mw(Y42@xd#(`#m`QM+2VJr?qVYM^9IbEX% z_K`+UFKA=jPQ_5xbPk_NO)7V6aN#g%G~IoM4vl;%Eq7!X%UnWU>e1@y#1Q$m!u?BU zQDWG=s}ov@Jv9x|86T-`YF*7l+Q&VwQ`rFJDAF3gr##qCj8#ivGc%3$k+3VVC!cWP zuwY-hV1(@brZE^l`Y`+PT>a($SO?J%4cDbM1bif=7D{{}jrzUkY?_m>AFm?SOYl_t z1c_nQ-z%~?)u5}g7pC@g?LNSU##vW7gx1Pv%HF*er+gouIK#=0d~}|zoM%*l)d}_YN!f9HzO+;8bXD}b4hes*u397&Hu>i zaAc;O;o)RO;l1_TQTkD`?qS^cuFt}gpU)`6kse>}PnEQ{nwx03sn9Zlx8z{7D-Exu z%a`%B{fkLc_KMU)(L~AdiJy9~<)IFTyMdZ8&Bq5c1;+);E)7ANNuuef3?*GeKWDFmW2{3Li_TF50!?${^b|{@uAJhe8 z%8!pC&lZ#gn_=^Bye`(asvrN7t7WsG+V=Ck@*wSq#ve5ebIS2OFgtfM<<7>bRCo!$ zY=tHaEgeS-y-3*zZElvMN-kG;F1}; z5`uAgP@BCvhAia1fB9KGDSSw37yE~lg1;h(L!Y6`>brK*M}>g#kMmQ?K-ljKj8*P+ z*B}eHC!zp4hFaYOp9h==k73h9>nk37K6?2NZRQl(>@7&VVcw6fT{t&p?8f@+sW8E+ z#K?=k%w@Wdi{!}8W=7_U&a)`(d(icY%G3BaEb?n@Rw#HI zPsN_%BdXfyqck}8=Pw+jnd9wOg`{;)h|O_jD+(jxD)hO9t7EwF)RdwLW0*|&O$KKX z(k6C=xSXONxK_0j2qhlhlBG@2#v@zXP7I?G=`+d!A1+yR$ukZ%5^2L8%)tqDQ-Mqi z2dO<(A*|iZnCMa;6Nqt;F@6%Y4+)6*xC+ad@8mVP;g=ls`L|nBqv5BDdta+taN~6T z)qWUwVT#V4*Dx<8LxdTzW1>8tlS`M}EKucGl9TH5tF33f{^evPo2$V1{=qXDdr^m7 z9BZ(Wv>|{{NEbOCa@!=GS{CXj1ULxJqVYmbpXS5btW(9*FuFqd zGFRaZ?g^4`V2TIjG=NS-LksPTp+(4eS+s7rZ8txuqU<`P4$C=w@S(ZF_^VU2;}VSb z8qkFjRcj6u{ADrU&_qlg8s4)+v1d2+SS`Y#T*6kIYD?VN!Y<#CskX2>ELF!Pg_Ej( zPp^F!VU)!KCoS15l@^vr+bw(yUR%5Tz+0v@KaQ1cY)o088+=M2xs5#`Lh$m;vSOFq z<%ZAuOdYHD8*KS68TOr@J82( zBM-O_m!I>#q9vN(B~+vL*t_D_^@37<{lr2gIpH@LHsaU$jU;oousHK{N7R!hX|QL> zZi5=m+Z8rgXaO&Z-*fcppAXDCNFs|4J(WUmP`-*%kf zA?`&x$A$;o@(i02Bi8(!y2SMLc$ukKcE9hwRY(T5Yf(myv!@k4W+jbk*uT}{XO$;a zS24-%Cx4QcjOuYLU@P$?S24@hguP0r(9g_$Ox7_V8!Mq5SKA^G<~UEB1BEJPx*m5O zubv)vDp3SG64#<31`*H$n9*$)_j!TW0z2DImd8T@5kAxSZI{aY_<1B*hn;EI&U+t? z)!0bkd(&lU4#n0Pr>n!mdA054Ioo9S29@Z1ykaF~^>l-Qd-bxX*kweb!3Y6R)77?ame z@@_z(E9LFNv>!YuC91q7`tM>IGNLEHH{9_MV3Ooh=fC~A5hEG>7#Y|wuRUh=*GeyWe&)d#e z=FBspV<^=YD%(6{+-6GVStx|G)lny89zq$)ketLeM5atBv)_8;eZTMTy3Rkj&hh_?*`#_{7HJHwV9)k~6QkkvAD zbdQRkw|$&MI{d_iF^PbJv+X(_tDlYLuSQ}5x}B;j*Vd(M;M(ZhR0399^Ezvl+BH8o zj>QV{d&;rxQN`;S;s^UMg?4ON?QXFiQwzR4JKSvTF;&4K;`}=Q&8cKs?JUjVymB_& zqbZYeE4pg<_2lF$^x`~PT(mOsE&);fjvKVUw0PyHX1=q1#DPld4(}Q6+%3dk z^K-7S2zHlz{+ z{8VA_>8(4|>uQb0dZeW+RYFMR$sl+Xn`I=VE>00Ci93oaTqM0AY$4btuYk`=V~O1O zJ8Vjl3CY<#+HI06ajWSQl1w>_e+-79u!v+3gW9GWiVbz~O}c4D+w`r?-dLgyQjS)k zz9I7(b4I8iV-UW^f!@V;yDz4fn@~80k?Ts(7I;tFMK-mjaxuD+#;%@3+ru|2;;<=r(U5?HOwKjQcE%GE%45j3i9w=`tuN?*5_g9FMw=U?X}*o%i22 zR|p^k7++UTTGOXv4em;TZGGSR&d`-q)6TjVp%_>JU|XMaJ%8_>44Y~6S*Pp0X2+gJGwJ74!7E)n5!Kc_8glj|cxG$)oCEl1&$ zf9GoxZGLb(cdS1@**bz&fy7x@E|01}fvGsr4(Nzi<_1z_b4~pRoQ+w9rBs1OtJsP!UOoodeD_X2G43_=gUiAZ{6h^~4DAbA02$!Kl zFSRT~A?u3s=EFZ=>7**{N^6&XnDd75C>pJ-j!oeCQo5g52glSJ|sFT1D!PauTcpPOB!C#cqR64wcvRs^ztXaOL^$+@UW61to^JCI30z zChs!6ro$>Jk0n*dk%(ESnV*p3Mx2K*j=L^w7rbTv>#fPHhZm3nlHTc?XcESlkZco1 z*>*9eCbugPnhjQD+2mcAJ?7`9*~TfcQoI@)uU6T#yUAwV-7u1_p)A;;91sN>q zrW{IK(Ut=H)@J!%OZzp63lIBzW{79P_1$g-Tbd?IDy!4yu#YwC>rpS?2o=J4U!hMr z7VqxE72v_%-YMX=T&){0oVZzq`vg}_;jc|P{7ofImQJ}Q8pkm8n{JfV9e=dCT8vvd`M6hjVmdYsV(c}h90q=?>Hn#b`U$*8PGdvw_@d9eu`mmV2c`PoA> z#SQD6Q5))!?qJl9_CUasoJ)tJ)b&ftyKGJl$J^hUxg15#v3c}7$E;CWkKNVf2NW~W zmB)ter=oeAZk31jc71Kf9hHjMp|I_$4$4{#z}m4@@#hO0I;eJ+Qd1eUGuT*ustcW| zA`IC1*eC|@m(mM42=Svx^Z4{@2w^Xrnses@FJAU`4#Eyw3#3Qr1+obc=qqIHN*u$N z%04TM=kVp;b?z~~%oHkX8~0S%t7W*S`EI+%G()6rhVy-`^G&iO23=qL9L6rSpR^w< zkNWl^@QPpUg$W8}p5@eTo!NyAyZUV^_4AGEj@{)90F|UWXBOnN@E(QL^4{dvGP(Gt zQc-Tp$~tlrMMI%7tJY%g`DtaOX8modCP||j-K@^ZGE#C{9W&@M;$VLJ(fU|Zc1KcG zl8hnpE7}Lqy`2)ew^F!2KOmA9Sxojp;g>U zt(!*c&fD{MUbRXx@Rk?FG}P+DucQ~|Z+_pPE8=^|t`M%FX=|~pu1u3T0}c-CR6wdzchaM)Se33n zJhn%i-T(Y+{%-Ko2B$2o&}_q>-lgz`92^%?FOzkaa%&qT@X!?&SAN$W=$gy9A$9#D zMq~3-%wNkoAji6_RyFB=Uz$(DtH-@9A(lU}iu`_=LnJ*fQDCXA{h|=k{5?B~O7&W@ zma&0HNv-*Ou!@PT;SJes`|8p3UZPRyV#ZDLe%ty6(v3vJ4 z_ny1l7T1t;5htx;9!#m^AzVb;@G?_*KwIy|rNokYHdKaF`))znks-s?I{AKdikarO z+uKj3Hi}S=Zyo5pbQ<+tO`|#zLkiNgtCnh34Yt!iT<|eYs@s~gB=4DUG}`~7y4!Es zAJB{&L;W!L&(X#YDHBw?BXA?0?7RXPpDG9P0h3Oh?m!tFm&)Y{=YZowkFwl(RW3Wc zmArcM_~95vSk^X7*0#c=xOHsr>sX};cc1c`XQU{t;&8M~Q=k(H7szbn zy-2lt-5>q)#Myx5K0S$*@XefNA*yjle*f&^P2TZO40X27S<}f;Q8XG6Jf>^heV?Io zA~%;BlIcBVd6WQ`1`Jq`b^XlJEcVe^BFCL9MGewr+Y&S}-?Y25QKi=M*+-xPo>P&h zCn~JGiVD`;G1v~iCYE7y65!V-%;nTY-uyGwiU!5hDnSA92knuW|aGH1W-%~)hl zGeo^H`mX^{nsZtl?W1=w&B~%@S^~`e#MFa1zV)6pej6=zU6-`fkJ3xn$L7S3D(K%W zBqW(tCefQROqtV_2pvT)-r6cf?SE?sO0A<`Nsiio_Rzfy*ONtv$}!L$2=K9qyY6qM z5cA-|*7vpgXGGB)8s)tPy9rsu;Li*CzZsC}7NDWYn*4~Tj9h;lS&`>xVo7lw8Q?f2S-#(a4u2KVemF$VoI z-IP?Xx@l9@VJ8!K61D5IEDm$-B%d_5DHee})jLk>5ayJ(o}UOiPn@oAI$sI6_Cc)i=OkPRUP z%wExW^avAm1!rQ$CR)7v#7V^WaP6<)VhU{MDm?DdBk>pm>?Zo`fJH<}JbK#H{kcBhe|G<5b;$eF&#d%@vOc z-x0kJr!VD{z`QG${zIUqsufaxWLZBn^+ZOd#K?ARzl@u%@Ky$51kzNIPhq ze?11Hn|x$80(V_Ehwnx)wv7SHYKn$7d5^Y}v#xoqo`Obg&*z0yD`O9YjnfNp(W(!J zD4I}-QkT(n&|a+TaT_?pZO0(Z#}QY_P`^Ft<5wnwyro}B)_A;2H-GA>HCdHmi5`iK zBD&%4o_nLdOr_R3C?qU%xSQZ#hL;!;_w+4mhrEdKE?PlMJs;SlyY#Wn{GaNGD8ey$ zMTcmAh+z1sC;T0WR+WZk6{Ok{q=-%bRK7fjysF#dI8*%NzqQN-r1YvfDu93o^XDB& zC#XSui1Lk}SBZz0JfD4nb@-IM>+S}i;-_O?4MLtKSdyQ1nkhuQ9WxUvh%j_UrviG{3ES0~87Axs= zY4=LV8DLZoM(md5p|Mx3od!F%BbP9EL74NqQf@AL2Ll5Sts06%HrE=v$6d&A4U9tU zcm|*kg1GOROYp9&lIejdI6V{)bgw1q3=pOYr>!G5rJsIQ?bK;?X*O_*;lxC26Sy#r z125-7^kcY2=lvN@T9cdPlIf;dne~^UCvO$g^V0u#!|}J_>0j^4C%9#F)yn^4ZmVO# zooj^$_BJgarqIs9tf$^@(i{&tYUR3947;Z=8!M_qXnuWHT%7cbIDq+ z%R1IPvP0p-l1iu5NS!Ys>2%zd5TOsQ$`8>WTNu7uJkO>3nQnPqc9iJXhwPcbT8?Ti zgYP#6bAbd2H_EK*z!fD39VIX*+S02!A6I9<207#w+o8te=XDni;Cka{@&|MVl62xVngeHrAqki= zAFC7bti3d)ms5nTnPeR(hwTS{XaA-h%|2s_MR)C7`TXYG(~ttYXbi>xg67rc4{Q^e z>S8Z0I$4Cg)Zp_fwId~ud%4@l~Yz5a*zKc&QR;Ui0 zC%$0%s6;4 zQlj_h@9&o%hyKac$KwbpD0<@M=Xwri3@iWU)y12!PrT%zE;ZDS%HE5-NFw;|TfuRg(${W)YLcE>^eFO^b2CC1d{cie1wyJr9DS zgDJBDxF9zZ6NTf`sX*-_I76W-}OKK6M3tn-U(0?_(ljvmROQtFINeP zxslDkc=Z}FS~_2|%MRLe2HhgdEH+^v;=p@(B)18AiT$I;bpNv1YdvMZrSkzN(@#&- z5qv&({$?8@8VtGI>Gd4L6c(fBx3F8{pw2T=SdSharauj9~B?(?0-AfbVl2qEjB zMQy87S1L56Cu(fS#3{B?{xK8)^CRhb);sA+!>=Iy?@f&D-5+Mu-+mgkA0X89b`D8S zbmgRu(Y+0ikIB>bARrIIjjZy{dQ?s#o)SOn`}gUrP@igM={zOBRRlZ#-zqlfgrkt! z#zs*+cx;6CzJbAKH;uW~;(3-hHZO}8R}v>}Azr?OZlB5UY!bO?vH^u+7WprX9J;UZ z%1shwfx5jF<@HAF)qgBW{5xZO*ZvxN>xNBkc|?h=Q@2N4Eo2^(BkfqYkq4J4T=} z867Bsz`H`)ygU05vUbuI3F(piRT5%cpT6+*`iMpHm+vCDUwQY*eyhi!!IE*6aek%) z56W=Ts)vm8Xv@9q^Gqz4i$k;TNt>`NNaku@!tWAszq(`lcn<*e{Gus1-)9}WTj{?t z**kX2CSOUf^-dfc`clMoVWhO4Ehgl3Qq(6r=u0;n@|Hi3yo{BDK_Ja#CwcgA(^KQ zxy{tf+Y5ff&yA^bu>Oe%64d6ZM_sN_&46eop% z0+yLhKjK(d*Iq;_`T@Q&--X;V^;*#mdGU?>wDBl!IkrwZswPxMrp47_PH4eqc^`Kb z%tSgVvN*G=#=mdf#c(#go`Z&UsG~?Yla)`mSodwc`J%u-w&J-qgC9q5hmdv;b+LvlN ziQ`X_WhOA6Yw0h8*5xqIMPuJ&XdAk7m*lz0`H*%qn(x64$qOs9=g$;Mq1EwnlqTs% zZKSf|IFr8~&5ZBu`b+0B5J_}$*@?#$+DG3=W;dk^$Jfcr|K3>O+Ysz~!?G8j(`GsU zuiyG$#d7Omyei12z+dLMHk4AEvpY;)Dl?&N zE%vQGq~N>2UprCIGX_k%Db0Ds^;$vX;O-i-56*4Z{1Y(Zjz<{NYSL*p#zW;4GEb(P ztlg1*B=)wmCRx#~XY`?CF{Uwhfzqe*6p{(Y|6}<6QwVFS9T^!;cdbZ4Jr9+s(R8cb zO_$+#c@!yGX13ExZ0`&0i~@!S`JH5~Mpxj+SMkE^%1z^-4E#=t52bn{+qB0=&q&o? zffM!T!O9bz0xsh|JwGDNBpTT{|Bdgy8KKuW+eDA!%EV>fb}J%|B)^)tK%~ zjGqlSo#d@QU*_d2E^Ss?d*O#$PKU{dS_zygbd)J@?B6dZTy(>~dhXNr_dJs}1O2?b zyqi1YEfz_U+OVG&apXB%58s-)G2`5-G_GIFcUzA7ph@CHSI%%kIaH?tFJnj>e0)YN z%i*7CncH;>p%-i&7OR+T)E_b(#thB@wR~0`hfsH35)5CX7oYzm1_!xzMPP@{oXD7v zK^gz#_34&a_OY;knLLi(5O#`v&A&gb?o2)YM9Pp?ZB3MzBJa@pyac=ADI_@1YsXDM zX$i=a1kTdxy66jtg~=%jJTc00sA?dpcxoQ3_FSzl^;$x)+#5sssbf z;I_zU;byaM54a?yNy2C zmlL2n+`ldy`F=T&HmZ?j!l^}l`%IIf;pJAz>gEES_$%|_lZ6jPrgLmml9*chjnE!# zlE;*JhO%#JN4o}18gMWkZXSP%x@yYBCjApXv@PAzfI_RTPt=SMT4u^_6LSLHkL#q( zJFl7V5nIbu4^?nm87`lHB(g~5c#wZP&sT@%FV=p4+U^%cCIz-pXXC=n3|e2-B}PNz z3VBK%EvXR$%c?S7kqlBZ97d9<)Tha4^zMTfbSx67IC&Fkh_|6uk`x+mH zfed51Zs8&gUA=BVgb0_wFgnjVkW!NKO!BBbf_qPv4C=%$i$z}gn};4fmdS4EtF}9S zjU1M`F+IT?z(U$XokQ12*A3xzg=A+g1I4qcvD%xc5lJAtQkpfLP7{ zuCt2TQ*v;NSX(9^+FIf5|L!nPYyuBy4&6m=Kr`J`PgI^B$}5u<@gWq&73a3A%kxxx zvZ`d;hydsMYHWpZ#4J%H62;`~mBb^*)h)S9}V@29!Ua!t6&{Qvex zJI^9F>wuMOOmEl`P&#`UvvDPH<~%wfo=lGvn%@-iK>-!+Xv%9QC@koPlubx2Bdp^u zvQa2x8o_d~PW$6zXhWjj*U%RrW$x@M=h}TUg177A)_$u4+%!&9nyKOR?)IQ1ZdRH^ zy7R%6<2m6=VUeiNCq;{<6AN?|A-%knno6H?ntGzF3m-T*UmD$Ad85SkXFaUCk6VXL zoiDOmJj6A zs(~(|qa66zDEq_`dZt%4-sEst59G6x@b$9R=x()?q@?Sh)FG{R$S__>HJ+O6`Y_Ri!BJ2> z$iLGr|9;8={(kGge+6Db?i1qR_?j?A+Rf_rlk`*;EMgFs_&%v?+DTXHxLvi-=ELL;VdniW|P zxvoo2rLkCY`RPj;hy&mFhdwvHmE^5(2Cd`CLFq3nNjy7Mc)#zl5Cr3&yua&Bn}KL> zHHDWdtd9SG!SDV_{vN6{gLnt2nF~&a%wc}a7dNxte{0iUKANxB^x#=WeDIu&fa#FL z-r|_A=;0D#MF>cDa?1&b! zbSy{b+Nba2leS1PJVfi4;8^O69T}8hdGYCiXJ@b zB5lREK#yo?zQ_T)J-OV2)yaqb+xLDc`s#QrvOYPPPC7QSC#FMr%a68h6&M;AX00sEwLVikiQ0b8nY=@eWJ;zp{G>aNH1H0A;teC_ph8I&}7n0 zO%fH;dphkRWyq9c94=*q+mTrwtDHEi6bW$}MQWgbVg`N-YvRR+Kl?{Ipv@%lLO5=8 z0OO(yp)fo_-S*u-_+}#{RniSSWsKr2Y@1@(Q-{O{Yns9}~*>Z=} zvD?*%w~#Y$v=w*Nah#SHt)c4SA$5I1fbiGxKQR)2lEjv-C7knFf=P=9olxG5fspjIFVxL3;WI|2myCpBR!vL z-^OqL#5|CLF+5{uSwl!qQ#Ug<>}+W7Q#>2L&OtDW*LEk3Y8lpg()B6qMHf+Z(;t4p zwdoz5j0IP6z^^Jt2JG^&DC)xe8mt;Y7-DmlP}KDEe;gU>=>EIE&yUn_N1~2eJ|Ly} z)M+Ko-&CD2Ni{~!mh@m!<3h!(2UAn8KGoS~kfBaCQFXP1x2~+@h*FJRbF)hblH zNG_tEtt%M{U1nq6TzxOG_TO*0k@R>jPM4Gdig~^+v}5drtDIc+q|awQ`hG$|E*y~FE27W!Ph000Chvw-xOj+xlJyV`PR78o3p%@2g@ zyT@;tbe=u#Xn;=^2TcU=b;I`8rQN-yHI>6NXA>?mU@qEw^fU=NppQsnC^R3R>ZN#R z7%+IBT)*wmsY}uT$kEGKiT-6v-^e|DM4G0ui0CQDoT}s$^7bC*Spm0mSEGhs-OrCB z?PLDGEsH8fkj<6c_17KijlL393)eq2I#!Lw8*l{nWPFgYB)w2a9p4AS3eXO$$Q&++ z-ds1|y)G8o>?E$#uUcuBylhP>G*mWE?cb*%6R7yU`#0KP{rkoa;nZ{M$IUY~-qrbx_C0>Q7HH`p*E3jj5Obcqn_pL zE21B!C|875t*u%Fjw@m~$o{|$g9ryytsIQ&mbh@`APgAjxTW>egn(pUi58u<@oXxW z-SK6IE@-Cg$6oY4uR|y5?LRS(xO-N5DK?1n>`wsW}c*Apq8(;C*Pl&!Nhcb(K z!W8=c1oajPdIU>6Joaa?-L!K>vARNuY*2)~`Ye0OxBg}8U`}oUzxj;m!*wc{#&8c* z%z6fblW^#rFoD>F`GziVi0?+|vIY0K-PkJ{_7r+U|Lhtz+F1-`lFNdrR4_J>2SOLv zWXhxHld!TvtXdrqmq;%2e#v9cZH)8OC5 z#aWbGBbiQCGPb?OJ@Mq&ZfJ)H0fVZXIhry`hgP~;0wwEn98kf{ELm!G^r%fmhl>W# z%wAy6;Ghm73S`K{J~OLeC7sd^GovTXybGs?6z-F>pLM`-TH`JzexEzHPmGc z=40$bih}mg`c)q@80z_OHcNFeiAQSkRx`=j`OD^J(3hp|NC6@O5p#4TexAx6^Gy~| z`2!OwL&}7VpYd^hil46(^wT2uDdb~5Xy!uy7x5bCX0h{X8K7`=Z_!13-lzF#x*Olv zoN#e07J;5BhhCiXCC9heY0+m}gPG%*=-s9hXKR1<=_wsOTs|42VYcrxOe;en-yKJ} zRHQqQx!$uA{-l~ZDLG5s)X@2o($(TH=oIw6ME{J!-pD;SpDOX<0gc;YS3rgrpMAG5 zTP7u#!1HrYagqGt`$*aI%k|IGKWQwIqUkD_5XYj}v{~ca&ylh?x5{HH8M({XrHk`dbS2!DL<=2<7$o5wt>6{riueBCAqkv-RmR_PcKcC^U+zicWEJ**TW@aEaeIhx<;`9qtZ2 zY?@c3T`~X;`9MpIf#C&;hdC&tOPb!YA+__?FS&>{v>dk7&~kt5 zPk>oa+5BnctHXaCQF*Y*f`a1BsOqNTBhxp`@t|3fM#>T5EfU`zWV1WdfxKqXO*=9x z{HJ-o47a33%EO0(uBT#p(6XWVf1XP!+)_qfDGwn!ui49xUYC$_}EFTH4#N{jqfz zbr^(8Fm^80hPS+-r^1KTP^<09Sg(<=CDXR#Dl;>I!T2Jbavi7A>X?f?TzU0Mj?%1Kweb=!@dg0l0-u`T!+t8uyWE-o7rdtpk1)<3*pdIAQ zKOiE-yH3bfv{BI5gi2P8iOI`CN*$%>aDq=Sdd{3%!0y;kC|D>ZRvt7iuV_J;2x=-y z!0+LT(71&IZ~Z{C=BT`V>dxlj7o3e1q{F06LT`W0!ptF3po$>sf6A6v2XX$7%oX%P zZfPRYe7{z>`Yd>{7ktxQObig=9Q+T7HMO(;XU~4CF}?eg0W2!2+#|AXaOYq9{gbZ) z4kHAOra2$e<`P7Q2H>YJs|L+BOg?FVEmn7FDZk&4%5F-KtyjEBa_j>U(m669uXWa!foAg01 zzN|8a2GJ9g1VLY4ySvm-4TZ!N(o*>r0Do9PRfp)`x|WF>FzsUJKg;*y_n%Xk<`yjC zw6GraJUN<@b_7xd1X}GXd#~E#NRu1)skoJ-*A49C;`J>N^Km35Ya2qx`k*Z12huBd zR~$*A3D#{1UQ4WJMZ}O)NwqSXX_x;Jp{(314=pNPO$ej@>e7wRudWprqZi!!y`E3< z!VL*#kOLc$mNZ1_uvNZKHo2GBPiGnG0%Mec;lmHG{hiDpXx8lJ0oiAr#3(tf1kB)% z$Kc0yre#5eC@p*U&xv~onVW^`ilPu{07L=gJk&i5*eBu-?1si#K-AyN5#cGe|6=K{)rkkM+XNMeP2x@ zqMY*VW<(fx@)Tyg9L%f7+P>M%>@uRUVtJRCVFK;7LH+nF3*ISEBpr9v)#FXd%TlWc z6)9=eXdyMI__A!+6NFa2jP3qNm8fn0zgLhkl~mOjg1<^?Jmzg&r*>R(QS)M3I{y@j zNnAq87*#_i5cP?9|Iw9zL^acj#=N36L9@a~N3T);#30=$rau8>AJ8BgnLb24UdF~> z<0;O?gm0@K9Mb_Z;Wi1Bryr6!^P?VO4Tt-=qe_m&VeBW$gq{F2DS7mW0E(IBM9@B@ zhbQp7z@}Xa^nt#!EzJt4Qw&khe(TzuwL?o%5G*0FupR=%qy}tUd;kiUYXz{+vL57B z%?yR7xTCSPu>(|PLRya|Yze&+paO)@9O3^InfwE&rCCwKORu=6uh?nS-HLT(azUt> zk;%iw4;q`@PP20%JiLDX!(B&cRDUzAq8PAAYT9WiFC`#+f=cf>Pa|-tA}#uvkli)Zf}r6( z-cb(r3+6M41jPJNVI&c>W@TN<#k@=R^^{q&-~DEf3p;eI*DBUUTklx1B-cb9&Tff< zW_hqwPz$`hraod=X%)Z+_IW=aNPpjar$BT+InM7AY2iMi5x4W|pfg1}C5_N)ri70< z`uaO@MtR@z$B)A!y;xG7bJ?fq-||23L*29@%YtgfZs_^Vhl3V!>Xp*^9*F!aTmYtV zK@$ne3|@M4@WpPUo}hlOqF*(LRLnaEGas;&>(m|y4X4SI|NCr`idW$PGAI!|=sn^C zVmWmuKt$phHxQtuBZ0&kxSj$uUD!0GwcM-mT@mD_Yo>EJkZWWUR1Hu9nJ`2o-ya_k zWAJISVQVlLfp8;V4^8I2u?^p+)C>^Q0g#0Y6U=-oUV_}iTGOFDJ*_GwH&n>+t3F@~ z4KEcelUjVM=7!)b96x$3%xek1t^x-Maz;2WSo`h=*P!_?BmW*gdC}NLGlmTG4UYcZ zqHEmth|DU!rVI=j^(1T1Z9wEGO!+4s8H)LrPs<_7dbP_({GD|)$OlG64yu=q5juDu zwPSKB=Ya~OC#qrZ`Jq6d*iW>iLf9^{TLz>a;CY~^0ny_lP>AX#964|+P*#~^ZP8~< z)3fLuO|VQvXgk1(dXLbsR}2-rI3RqjJ)c=q{Ul_9M$07AYjMN1Zk_$d{Nb^hN zc`l;a_{^YCO2J*fgxDeiltkub)^&NyB(xkDz8&PF=h|ind=Jf5x7BRk%|uSgSr@bz zRR@B|$OAD@*qmJH@5i7Ds2kfp|35Ej)nz)>0SYcfwDR(3rlDv}xO-ViS50JnHliN_ zq~N#<0wStjkcwRbd4f$8jgPJM@8cN9_EIX3q*4&z3k_$3IQtaRt$aPU$06(WC(f@~ z89T_Ecy^c6fvys$|0kd~$VdeFav1|}@aKC&TysfCgIL31`b3MJtZhq;{I$es+de?t z=-MF+2%HHK*#w5sZX+_KvAhki?rRJqFtp-2$ z31z|!UAQR;5%uD<4!!pQxy2_|CM-R-d}$^~2mP3P(*fzl{ADT6@X~cYOguRMhz1cds8AJJ!V6dsOo-G?P%~?IMRxUJ>nG(A3bCRz^OQWI!!pD? zJ%*%0RnXTy6@st?I=Q^s-yE+!4$q;=_@;#^-*EshdgjcwmifcHjb5CHF0c8XWdg2j zHXih6F@VI=Ct8Y5sg>ulgNwI%6hd03O3KXIE5!b&Fex{0=a{y+HDBSO_@8~D zj7Xz^>&r5obwMXb>MTyWa1$a3qKeMS%FKZ%3}QB_ZwutOIwRK9EaO}*OgB5S&^gO? zlO?qf7dmXM_%bPyo##QXtJYy1tEpr&;F^`!`8vE;ijnIX+!w2sSWV5Sb|HGo>2;UK8>d5cO4WVkGe#y%bBN!5 zd%j`Z?#`d`j)UD{Mjlpx!NDDbWM0{{*h{hnn^?B%y;FcoZE2 zks$*d5Ots}f9`sGlurx+S{e@DD-2LCaJ&bPC5&Cb%Y;c!lSZsf zFnZ7jWJ@WJi(BzmK?cO71sKSM%Y#cePCNsOW||8dM1%{zc(^|g$;@pmB}GO7aKZW+ zPJPpcT=IA3xz_d?g71>C<+#mNh%ul3yUwa>es}=q(JS^fwWk)TNsv4 z>s|)`g=BI7DdTTpI=iOz?2Ph{*Y14#`4P8}wjcR{w2` zzNrE+muA?Lv%z*hjrM;kbC2$PdMyQj;vpHMEw}S?mbp|o<_sx4+!!JQrm8NItrFB~ zw$28i0N>ZBFE9XOkPNT%3_;XhPSt;1mkLyO5LYT=HCD|$BKvp=oc9B_7nj^9!C-4c zHtdA(d6~=b0uJ_ALagNtB#5emFdl6G;dBk?{lIm@vMl880MNYi(+piw%!X<|0I}TQ zMRMw9qW*)(@WEsqL1ccECHry8B~4A+Q>YVb|LIxQ`Ub4T1$XQTwt<*zrfAPqKD*fO zxUr{+e<)(?2IF;T7+Lwz^^&I{R%88XW%0CSyAGlpjx08=01J%qsxU(%e}10`+}y&X zIz&G_i0A=Sd2v38g;|0s*6xEEeD@28ze!eKHSC@FrG@!?@gwr@Dq|mc;kP-J0Is@O z5O+?O1T(7wGpg2n%_+|je+zHaGJ2TKwlE{#T%6DG_Dg!A5QUMx+Aq8+_ z-=!jjjn(x1@a@-dOk{<72DRk>nEX5kg9qXRw#IQU=12i%#?qI8sF~P_7K1p;lE_jK z1M0pvw2+(cc{M*DG8jtz_b-GWnR}n8Z8P;gMY}5im^Jv01KBK8cmOPss{GC( zE<#Xk&BY=LMC<~B(h!unwX`YI?RYdu&B0OT9-;w5foVRVEV68Vk9I<`dKL9qaWSqk z29QXDgdPd{0KPGhi4krSW;$SAFz$L80t5gdCS*BG$AKOlWQS@{1bA7vrCo(zyOnZxY8euUD*_?r0x7;7{ba=5K)?wrmBnrDZmL4+(EaXTRM9B=F9 zw4rSUYM;i125xv@-#yWKu;*0)FSFZh78wbP``++iNT&O-`g-bea~DkWh(tPd{zL{c zkkL!S<;uKWxFiJ;Q3r3oacic^`+%SUn36izeq}tFo9Wv&q zCqR-*k()3E0h|ZSQSBfz61Tt9?k(r>tZc#HYYWS&Xpk*;N&8mAHRmiNvc1~qyEyh8 zc~mBH%w%Mz2g*djXu`J%45cm~J~5!aM7zBvMHi~$HSii1*;(87U+@7=KbtLE|HmoR5SCgwN1CTxm&2ece@5= z$99BK#1gpd|Jrk;w$$2h9FWPQ*x^FS5*3(f!Xd(oo4xx?Yo?y%5eV$SV3Z-^MdK#CF3znZ^-f6-t&xXV)GDnOG6<2oLcylpQ$kj# zI&grb<)`94V}?J++Fi1y=?ad2;j*{`u^gGQa%ADR^k~=F`2|PO^n2`Ta7y!Qy(WKQ z!2ZB!eyVHIgc1qzzPWuol)pf%t>myDkStz3kGKFI0RS2A(N|R8Z?O;V2nxOXt1aBa zF-nc;CAGKyEnG*i%_zti^nWxtK-}KsEe)pgVXpYyusJ5vJ*moaT(}pCd)8jWCJJHH zZH#5QN~qgzR?hHNyz{_f(gz$4xa0yrbx$a?uuL(TG#{BDLiq`06~=N^jsjc{`}bRq zv7X%aG*j1fq6F8-xY@gt+YWzMTgK++`~PI`mu*<#N8f$Uu><}npUJHT~j?WL*j+cq-i0*G~i{D!sO_ocU@8cwi)jK4%+`+ebrv2B=K{$@%}>l zV=l=wVYpQ(SWMvaj>IZY3v!2m%t)*~%_*I0i z-gfncs+Y>a=r1{x6UeYih$ngQ`S;wnKk_llgElsoSci;3;!`{3q49~0b{dKh~-eb+?klRBuU zXHcd!k@Y;ed|4ucAE+^P1mI3j$6`mDbdOIf zz>Je2u#u-SR>c4Xoh-m>kUFe9&UG_@!{`XAPUN25P55hFGYlUqhQjoUtyn4Y&xvE# zuH4=*=(i#L?Nyh3!DYpAx8XL7tU3w4jVv*L!*~)V8i1=5R7DDYqlZev!yHAF zYlmPox`JD3t<5#~x8kp`9DYt5e!Q_DQ(GQ}SgoHM+WjU}-zc{-dNc}s4|=$t5LmVY zj>W=Wu%z_!1LM~Nr?=Ma31&*~;!Bx*MUTP6avbsP_^-_ct)+~tVmHCJDuY?!+Q63q z!c%yca=@Q0gnT}6`*)7rJpD@<3jm@z)c+QP#CW7H-i50&mgOPD1a!hCq!Y?7 zQM;UZwiijW>9D?xFCW4UR;t(kZk`+oj%~xn>PK^J-!Hn;22_(le4xrRDjVh z*!-BB{ZsSWKek(I%DZU)qq+D+std@tEm=1s!iji(C0Rp1&_W!{w0@&ad1`diMq`X< z&@Y#Aom=>2ILshcj!xa}2Ne(gYO($~>RZelvY*e_!6;~dy-)!e>8R)VYXT?Yqw44% z5!z+V%B_`?ZyVNU^24l4i4a`xhLCHrwh|>ygKog#^sj^$5P+UT23c^)^&ta`s0Oz2 z6EbEA56%WGR_q^dZ)vwXfvm{V%)o=JMft-9)y18JuQGXN8)jPd8-iRLs}reby`_AJ zy)sogESk$VYJzzr69O*MbuI7g%IWD`vL0~Fw~J}*IyFxU)Q@&|NZ#eoLP~GohOJ;? zZzzFZOc6>Uo#)C9C!w$YnPuGkGxrMpuij= zwPFw6`tJbL=#Mw2m>#}d&=S1N{qv1!NHTr~T~D;W&(d^^ZRTP|Ua685M^L{^`o!xQ zM@b}iRMc-VeHunq|90wHSJZIWl4!lvtZgH8To>cQKc53WDu#`2G3iL2sp~yi*3An; zeMmH{oxR+VLOYmQpdWO^;lVPhb>-(BP0A85IjFoNi$7o!&_(hfiy>+aku1MT5)txiv394JI=U%d8Mw=3ac_k zz2?D4Q|}M?t(xQ)&xq=XR^BTF|4x5wqR5{1ps)`JNQ!DQuxv0QdvnG;vPqT`h5pXx zczS1;9MyZm{Dz^}s5jfeXb{Za+_=QGq4Vv;x4f9UpH}u-l%GgGCU|r}kM>r&oI&$` z_c8_LHNSAz^toG56^75!oaMkzoRWowoafH+D|=rb&8FnS;*IB zQdu!0@3HT4T^Ph;uje9HU7Mf%97gHB37R{X=d*EVqD6`Fm&TNN)!A8F(l?TQ!W%!u zCtmD*ST&1k?uvVvuVCDLI7!QD>H)rOslc%pmTM&Ux#9Vd=v2~!S->AvkpoJUZ+Jgl zyy<6{`wU>SY7i3>vBl*d`7`bu|LXq)C!a#9ImoReC z1ij>dMWeALaK4G3S8O4P$wBj&E_k42ahPfxm4g>Jw^tdqDIa^_*CxK-C@XNXZblFg zzkcogGQAm6hdMj!MWwtrLgp!k&rW$su`S_$YGr-qn|=ACb6>d1GJV*$9H#CI$>1f zk=`zU?e4GNRkGPEN}*=UCGEl9lFC{u8G$}B1|C8KuJ$7P`QHR+&HaP-ek$|y%jCHb zM#W#07P!z=Rw&)!_CMA1TEMCI=m0h!e;cR>g5F9gFkz_n773xeI|IRChFzEJhI`AG zMb0$v?Gne8iE2cmWe*1*{R9RlR#rV3l8sD10XI34m1XS zPe_CHKN$AW>X#W>nR{w4|Cj%H2OQ=8=&3!4_%AZOCmr|oxG(%Fw0QW{{_Qnv-@{{q zy@Zh1_#qX4xQznlIk9y=*4|UU2{SssAx~`i*pMnPC5p&JY+4kRx5nLa$m4rhxj$6a z{l&`Bkpie3T4OOO$N8$Ji%XP^J$XmR6ttg)Ztj0W#N+3C`# zFs?7@vBs(=o$dA|L#9e$937+sTxG}Z^!(&!<#xj;1yo68lfj-n&uwa8=U51ES&sEa z+|qbpTrt2%>KF9C@OQGNoxS(eJ`So%bq2mOfvh`)l(hekvo`^!vTOT?ZzMy83<(h# zGtV+hh;2x*w|O46NXSefL*``K=CO<$nTg0ePlatLqD&deEVKW*r1$@P-|;@*^S)ol zeH^!3SJz(GTIV{?-}yU#>)d;(qyZ(x2S3^Ngf2J*ZS2hZ`obF-u1xl_NHN?`59Q)) z5N-q1mmWA68AQIPx437wnm8oG`cdKq=(P)uW6mUqxTz8P=$I3e3DeM=Zzf3M@Y`=bIb8StgKIBs zf={*niI-b*#<`-e*nSP_lc3z+!)>;}9>*5F7je|l#`dE9f=vNHQb}bQ-9A4(-jRe< zTKIp1%WI8%or4H#P>BcG_Y9=YUE&0XN1)T&A&c)oM*@$5>wJUw>8%_d>9f<=I_aKL zj_WuJof|WSc(SG?fwRq#1ORFkeq;Nt?KNq7wWCjcYqFIpNHWBT$OQ4scO!P#tC#tm zl5i9Q>Y@3sbzsFeG9FwIS|vTI&n#C5Ty79j(S|&9`8^OIMe#L9{y`TldDrZ8b^EY+ z#BMYKdM$j#QED~u*`YQKI4j4b+^_yDuCgsk&tX$bsO*?PXac4xe&k0~W9dxQlTK-8z3w3Ai{i!gy{W{v^+q~>e%%DH2tUlA z9x88xWRn-zytZdVtvCM+Apl+t2^^rq%Ai;RRp|iPzt(uFRZWng4f!cuoV}RrKQJ8d zIH5Bhdwxq$H7)tl&}}6na#a6Y0Ii9D?U{Gg{U#ix@G1ek1jufoGdE7MqLTM_vrQ!f zd@mi932hMt^t{|ByKa|YoPNq>4B@Q42@t*3t(7K~2ASTaC4nVfV9Fn+8hK4(2~yd> zI#9$Lzcu!(P7<_zWmuE&IovqaBiIi3b03h>IFpUoJSfJ^niUZczOiqsl4_M$D+)2&<7}mRl+2S_<9=MtG_N2<-&Ak8;l26dM z;%xn{IzX~AAt}#XMUg_l>onc-J8nU8pA6|A6>Y`7I>p!v4qmj0@ZZ@SZMb8@E&ue^ zXnoODp8~7`&?R-<=RHlw7YE;0YMlvlXGI><-j1U-fdi!$95)2`p25q%UkKMGLxmZg z`<-<_Iuxf2lrLtTFlc(tN>AX}KctB;vM{-Ts}a`unHOsf_x<&SdSU8zUF5^$1*&(b zcUkF1f0z)>{L$N}l)wrHwt)pAik676rk$MiEyBaAyCf^76bhR%;G2Qo$I!Mm^yOGT z*hl_8`M=sQB zO@{W%P)c!JfAapqsuwTMc$YP$1ptb;J_p}|ymCMJGL%5OTR%mh=ohH>U3eGd3Mwpr z*aX(+^uuN;A!emJj9X0O5%og*veNq|@mnadU#g&W!kDue&I|cWX)5b%sOSW=RpGY3 z#3H>|P4f%Kt)(reB-?`DQ9X)P|HWnE@j|j}BG{k3ebzqVc>}2=Bl0VOV7E1VSoqdv z(J7npg%rU^&?=^a0QXwH2M(YXklcb=ptgEQ6ilSvJi2i68sV$<1@r#HH@;ft0$;q+ zK|*o)29Ut&ra#5OK@GUm;LZpTr1^Dg3iseAbk{*K&1o?2^Zf9jhqpkwqs9H z-w~&T&yWUlcu0+x&dBnvK2MDA9+M+Ungi%ha`OJ9_Th$(@BY=s-!D#Ah921Uh-riH z%|>bWderICAF@^S!O0ylpdAuu9TGax~d$X zxTPo<&(V+8$5k{(Ww0ZYY@A*7#FXaolTPK7TricznyT-YF9F_?+DdzaLMB zz=Xh5xsm^N&E|Nu=>YXxp8E*^r5JXa@4dcc>j2f*LA7G%vIf-l%84aay#h3lpa&gtn(9KY^OqofC(j43S&!p1g0XbdWt_Cc0q7 zkIa-;J?l%-7|@{tBnv=I2DO^0cr6S`5|hYNxHlh-oz0L;Pu03C?c?2V!7S)BCDL50 zO+o}s6%E04xYZsgBy8zA8a#1MBlb~FJ{D~=sud?N5ZVL@x?3jF89wqNL?^#xLO@Fk z-Y6lrsZ}AUYWgVFhlt63k{3&eUjyVYQBhyD6DMua(3nZ)Py;$PAJg?V))C>$lHCs>vJe~&>H^4z# zNckA|4)??(qgY+x_$v9^=h9cT$UgHve(MZM_0V}nTv}G3T8sKo35eDs&OjeZs2=cYb{i;wGhZ+~$pyUl6;~Kwif-41f&Ncz zpnnRe2|(qD#HEUxdZ4RSF=*iBYNF4y0ktyv^~gSuFf4ho?DeTZQ0_kEw}P(6x&aKK z_WLvsH?D4-bwgu=+gF6$gE}d&Os5FZuZr;t;{f?q&;omhtJ2s_KsJz$Hk4)nb-|f5 z4z%hR->`<1IUrpJu<4NP-D#o8F`jIs<8P6gRt83`t##|J5%`Gg7_LP@!GSvH`A24N zY2QIP`MG8~vE!tEQwRy2 z^7y_7QRC|6<(k0dI+pJu-$0)bNpT@zZD6fUKooH$$B3Qx&KopPQS|eI1{v(6fL0K& zoJxUMY_OyXJ5vPoB|`Q~SB|1NejA-D8ET&&5Q}m(WU{e$f(i?xcQh#VStkN^^~*+q z+jdkOP_#jmvn?+GPawAjZ7c#)&w9r}1wqp(P@#rW4aZKAXWO5Y8h;-)4tk$g>!0yv z20Fv15KzUMV&!Wg&ApY}N7f6MSSN1+B{8UM0lzFcpx76rGo1#BWXORaCkUCz8+r}4 z#hna_y4irvR{#4j5^2)t163;;-jZ@Dd?feWIuI7FGX<16d$vb$wXXH+` zGIf}`mHIoaOv-mOp?#rd%=l@B_wIhpnADq3A6W}II5D+oEmK4uHT6+dvV>w3hEgMq znVD2T{>l>U0ZppBi1K2w0zW(eVJ%omf>C+=c?icqeMv*${&9h|-^T}Ela7DsAM*A6 zQC~=zjJLB^JNJO+iS_!-`EXTZ4`qC3JlvQ_#@2Wpu-#`Ke4KbZI-}h8WZ@G!Zy6!T zsCd5+p@a1G((LO~ugEL^te*y+iw;;WI7nl7HcjzY9HBJcPCP+tZ+2*6X*?D}Y)-kx+f>nHlpf zts2h)tqXc-iZSVwFfSw+2>mXzj=^w}`Hc37%K#HKI#F8gK&#Jkn47b3z_gI#7<{sQ znzZD|%!nkoDpZKIqz2ZZN`I$Mdu7%4k=YH|xqCfB$c-I_t+uoMY z%3NlY=D1jW)Rjvqr>({48a6w^TcBn4M3j++sUq3jv{#lt@TX4fvPRnXg8NE^5{c3% z$;wmM2J{2F(GUHEzvi*Zb--+*LEp-~gW{0~;|Nb{tt%wcI0j zdY^bG={vVb`EpOZEVX{{a^GdhC>Pa&a&9l{vFPaNT!rQw>ev_hbF#F#5HnKIq$eG2 zP&Uk!f&`y$S!Lr!lCED&Tb1lZg;UY!rI~jd0}O&Cz&fAJ;6$Y(n_Bsln=`;UpABOI zRLrolR$Da*Yk`VkO3S8OA5PRs_0N}8%3RVN&xuQ{be^HBl>R}%0J?_S+_q}jbk`K) z86VJ~-HNVQwsa)H_yrVm#6UJLYuLA%G!X_ng(gflr&^mHu7PO|X7JhT;VSX?_;=FD zBqioV9jNlX&dflp#ddwBZ<$-0MnBk=UvgOJ65OcZWP}5liDlyzk+Y@No^VjN)m;XQ zZT$eY$bH`xY>j+c`5lrue2$n2t%732=~m52yVmHr#3*n4)6e_2e7bDIdeF{{7Mj39 zdeB?k6I|^w^5gf@l5iqDI1P#od@QxXOdItJ)DdsAYlMTAAJ-y&r_H40GU8M##K~b$ z6(^L1N4qtR-a8l_X{+;jcMemhUw&J%>@6q=?CCZJC3y&Jz`ER(%E0n=SW=cv{zYKP zFl)l>dr$Cer+K9Br=ZijNA*lqfr0p;V_kCdvz@7wsQrU&@24S1M{+-sGWZNK{~dbc z_y}uR=QZU;?#NQw`end(7v+kn-W@PU*`>ALKG0%Ol7flmh}|K+mxc{?oP1S`I)`@m zC?#IOMu8R_xwr~*OV%#fK&&~73gT$O#eir`w&DDAUb^+_3UYNj&bq+NKtj)z>6l}; zyHqcgm04@Gf}whvb|evvXFD8Ef+W>W6Vl+~#&K&S(+;p+TqPLtRUm@(f_fNRIb$L6o|K^s4xwyG|NYe}O_rFy_ToVGMar~A3yg(`j5`_fr&)Plh3 z7UtO!VNBg}t*LM@84|dfgWnlNd{pr&*r|^myxg=W@(x~pQa;Na!{@uim0t440W8#Z ze6TnDy2mQ1ZZN`&&_OpY^Vq6kn!%`K!vp#@Fj_lQ&V8%my|FGZ;CBK>j0+`jtGCsv zbI0?7ikJ25qOmxlByiEjtk^z#)3V!+e|@23wVRyX7UvQSIC%r$BdDP$U>#<;PK2@S zZBzj>{JMO(2rO#POc7>8@-_Lu&43Y(i%8#{?5|`v1}EOHb>bw!WffQL2Kk^IYTX^u z0sUf$J%B0d~ z4tX|bDwvlh3no^gUF|Wtu6$X;8X8nu-@tYsFcM(>mb*kmSRn4Ta{@18>87oLK?R%? z<>te!!8{i96@xj5f{gv=^idW2-=SlbzJGtE_JNv!qrqv@L@Dik*PMgG>%ixBLq_J0 zd5*BQ5}C=Y04^p`di2hd0@sn^p@zC<3o#d7Ci%q_f1k-{RaJ>#4_QenzF-wp(Jhd=_RP@Ee`Z1IBJDCFMQ33JE$bRazmT|{J-#^BcrvYH z?AiV=&z{9~mDk;A`WOcq%r5(Vc2Qt297w{HA{M8{8PLGvWm{9B0>Gy!gYcZGUHIY3 zgaCLlw+l~fR@ekZwrsl$jcB;#E@K+U{T*4~6%#3~ze^e*ZJhJ#*nh$~uy$-!&eeX& zbXv=GKExN12VxHn-m$zZ3X_Onw_lky4;i#2%ua7t6YXb8l9nWD2A62T;*-et-7h9m zXEtegQAIn?5J~4t<<59GaApu6v)yNxTx%}GG0FCLwced^D1N>bGu|MfYVB|+OvXll z#bYthqPr0QAVmP(YK&QhSg*F_fdeZiMo+|6WQThoCYpoOIt_tWfp<6nAsc}TOx%fH zQA}~g_?@O}4$qp0NB#tzdeiaMDMCs4`KDDhjW8ZtuxQrZU6jgc=DDJX2E~^XLnxlp zVllC<=+X!n2p9{a73shv0N|Xr`-h3GCyD3uc2LeZ6Ap4?fb_%KgTI?a%5K+x@~|Hp z8baX!V+yiN@nRn|@_X5`iu@4p80;&SOn)B=cDxY?y%#U~7Hc>3&|@P>hmx=n%!L(+ zNhxS+RS;>=?j9?AUpH_5ormk9PY<8A9FLlcu%$tvfYP83tAc&PhBiO?Z2JLNyhAWS z%X7>zP|hF@_J~59(2_=U-}NGivUw9L{I4b2AY61nkOdn;go6*xp~D^X#)LUGenr;Q z2TV|405H}MgcdCfY9b>YisEIhK7EsQYvP605ASz zMXHB>REdh~>)(D$N&emLuNq8-g_T0GVf(d%$4S^Oivlbq)xHc!;+O_S68 zNW8z7XiASCB_lJEZ#C>M=tzm3KdATlPZN7wgG^j~M#XuhwGS(xhyGdMG$vpD2k>24 z3+klTrPj}_RG5#z?RoySmQlHt8LLs8wT9o$uhh<0ZPSz@(e5$j7luk%4;YBYf_v{9 zPx1csvY1v)2x=GaC#f;~6ioLr&Y$xHyy0RRqpt@3~Sm!M@T8o+uneAw*aN>4b45IHT{ zmuq?G9{PSfnQ7n3W5-34oa`H%emDC&LQy+huC2QQXE(5JDDBiV9)nuhhvol!!|Fw{ zFD)$p>C^xHxcEUP=3zO`S6DS<%5=CMZs`;UQo_rPhjX!@b({v@Ih;-)zt%EN zb+N$xf+ho*vbO@`4w>JG(trMoD{ zN)E@q)=YD#-@twKr-QTlmXo=>*!|yO1yGJT!hy8aTBa1L;&2U1`Wy%04;9Ga<=hj{ zN&&E-K>a`5_CWj>(Lyf6$!}6==D)8SE`4L+<#!UARPziX)iMp>6xo3jk2O1UQHPeg zVcvq=AdJTUx0j28`a$%?x7{f@*(^+t{=5F|>7|-r%+_bn6oS&66B6MF0NM*JSGWOw zKJ)0htOo!71~|xe{A!mvWltDL|1?Zi-x9Pi5EF8s#}j1yx8wQ$814jVVKIXA40GZA z=~tcWnN-H3U`P9gE`I>cwKPq3<~aZV{SW{!2vXzniOGl44|#uDo#uLWmkAlNioWdj z*}*?F3L4Gw3OweOU%4;c;**f&nt$D_vG=0{{8j0+)kAu;()b!gg)pzWLzx)_DhZEf z$3849oo5rqPOC&KykzpO8AR#0=(hmcP|@&%@_flyI~Vv9Z$&L70bp2AT%ZL) zE{9t_K*aysA1c5nX_3H#S~c~H1@y!0bpqnmpFrG z+bOS%y>}3={6UV16K#iaZ>S1qlif-EZKM0XZY~OG5)7 zQ31zE022UmnyEgq1c**w%#nEn5Q-SQbB=|G#<@u5Is_Fp0WbwA z8UVtW<_~!wvjW@xfBJ*zu3dCA6z7|!kB?t`|Gu+lwIqE6B0bKy1wpY# zRcC}iH^|b_HPCAZRA?7|eGTS=2;}2l;j~(=|IeEOmSNK20ft6KMt`8Ya6fHzc;T1c z3Gt`ZU0sy!7QbYkBEftKIj^iH0ag?M>X%|Ln*t=3N8q{M&S09(kNs8GB+ zfIYo;a7!BhPY_cVvUs03B0VP~BIp|Cx4niBHxmC|A|dvjAabveB+|p5`2-!noIVrM zxI7cWF81e={k-goTAFzVsqE1@O2>GE@$cv&=w~@=zYvkJYGy7c9gnKKR7->G4s$)zUj>6!1|sKmAp3>L0-VAVV19lE`@^-&7wzXY79*+O zp=8q}&xql_7h<-v^ZN!S0-&vOMu(mET@yAK7k>TghIP;=*fxNWH#nhR;KgW(1TB;O zhySN_KhZ35D%8gOD^@~YJM6&vqRgt9YQ^P*fxr!Rfi>Bx4%bB7|LliXAv{csJ$^2^ z)Mp&n@p&^AVaf4Z=8sfqEFTeqO(+D?GJ&TtX}PAdj0O;a6MOvJP95U$cX7%^+MD8K zCrGSxK_EE0DY5`;llvk;oJftR6TJ(vM{5jq`=G`PtvQmx zpp%*CeSZ?sI9Vr69TA2{kQ*0$@8aV9DW+CnW)QFY?|x-$C1MJy5XE}xPvRR7dQ1NA zLo+7L2Cxx2pccYSBYp|QIFPEEn_?OPi`K+_QTw=XK;^&xMaBRnY9c8eVwNC032|MM z`{!H9nd*Hf!pVUKWP`VN^6r(jYO5V+oh=~vSHRI5?&Jxz>s2%99D^JZ1OSM4f-d)F zq!KG@GwY;{Z=OQDmLyOeoxS{k`EOl!6oSDlgyC#ofR!OF2mI4rZ7mQIVAa3|L88%v z76PGPtJEb1tdcyNqZE2XVoR@l*LXtfrEe!0~f0d<2#b>;J&AK`@s;E|btg96!`c}9R4tRruH(R93N!?=?< zAOhgP=2CiXr9{9$MFSR17gIrL8Z(;%ZtnYi+d!4ltbgO(XI17JHvFH zqE6!o`zNB@fG*cglY6Y3cRx#M027|=tCYFi zvnI1Y_w{&eYW=UB(n)q_{u0v4QwAF|1EK^UPtaQSPSdfEIfC+Ce)>qoJ06W3iyv0C zE;WBAsJJw?sO_s0vX|k^cMuH}4PX~awEuIe)VTixq8|$j3rT%;n&Xc*kAI^;pxpv+ z<=ElbaflM8}8nG0a}KV{@t_{>~4V9h**BD|`UhCaPH${>l-+xZ_{38mn7BcX1{zGy8w+ zsZ@I9v(b8b^6l2?l7S$;UeHUIIT5p%OXB#X6pV^7heuP>r#NIew%e!$W%+CtP3q>L z@05&vVi(Qs22kf1-o5(<=HD9eW<)?`Dv1|ujvt^};^LANk;#|G30|y3q?}~~&4hS? zcx@rP^vH|6;q+k8-7JF$$_cjCZyLYub^5 zx8gyeD;qz^wsg4&Q1YM@2ntckKl3h29^K~5Cc0ytv@n*#&~W$*Vs__5$cdMNrri@Q z6%hC26snnCMDO8SloQnkab}_4n~I0@;Z{y6J&&R4;Lvz*m&oXwU#`NHPnOtHSg#&k z(09v4U1rpIJugRMU7d=iAxg$eW*Vm<5QS}-#H*^BSuqL`zQK{`-_)OD9HT3+2DJpn zV`y+^Icyk34cp&YH?U*F+jURJF=&RUyL6s`yPx~Md?mGHipmb&1IxDySgC9xa=eL` zsa?kUY)lrKDD8FS+i?(ymOH5w#v;q)5;|0(YM#v!LuP}oVS3?>jUY+3(2xKY6ORbK z&pt_>c1J5IHpgwex{zD2?_YPOC${8K|Fo3F9icDNeN0WJ#=0Jm_-f1Pu8&1IV-&@U zPgq9%Oa{vVMaJcb#V7V(yhBbmUY&OO|AjmBr5Qv)>TDM^fIl8e0`bEn%>a}$KZ|}v zrcZohXwy&~x&XVMt*Uu#Nj^@H9vtrtQexYL?9sIQg$qndm|$ij_T{R)8c|MMkR#_j zTNKP@J}Zaw0me3v+R*);5+$QUo%`|CWieKfM3kRzf= zvRv>f+z2=E_up8R1(|LC!(K5$CDpY9cuWB}1XGqlIt#)rC@g8d7uNoZeSSSZo|CEl zNjJX9E{P?t1zfuP(QlPPWUMTOXER_cqxQNe?Xs+-H%SQaw}v&3>{w8Y9+pf)vEaDe z+Xz^_@pmhU7MyARS{01(?XQ38Ua&Jt;E{Dpb}SstO19glVE?iG zH%i%$YckcORe-7$2%n&^NXIgZ_w6^y)4c#>D=E$JtFPW;C5me0jE7N)%4TyMXeXvS zh(dC7uhah8>4Afk8k%V~>Mrb7+Y0YpzLTy}7Utv#SeHw-knk{zakfVTy!Bza0!oWd z>C+S=IRka`4Pk34 z-?Xo<9`Erzmfz9b$~2Y?qIkOvFKmUd zurM-J*@nd_$bA3JTuT(|97>j%z;aWcIgwq3%8W6wmOv<(%q8^sy2AH2E2W(x+}!MZgmnP*Vw3=Lto*df}9sHNoEG@xO>;09?*v1_f6_a9-n7}wbxvOYjb`B zKwywcJf5}tG9%tD2xW%Id!a>B|NHA8ARK)yhAz;=D!@pXR&KzpZfX*EUN}x$I|{b* zkLMN8XJR&pp1SO1BN!5+Ro7Oq^mRw}*JC=Yqrhm3XT{Nt_)%Oi-L{+ih?h-tMum~W z?9I%rvr+JG*EK%2|KIV+*&)a^uG4e&1d)67HWxyDACQ;n>@3 zB+eVF<<<(hp>SG}RoYq*Q3Gm=6=-XLbwI0rZXl&HI4DK8diZP(XTXe^u9#OUbVTYO zFiuBjDH~g|3WAb+k;+QBVGmndm$xuMto_Y)Y9*;dZ%yZ8U!|CZhveNb>d_k^V{cDC zq-s{bw$)|DzbjVx%iJ*X`Nh0XiIIXFz?}%lVGKh2KK%YQ?am$RZoHt;m6!@@R;OkO z2*NKz@l)R!%vM^=s%$W!%O;qL+Yh_bD%}3dK&SDO>UMq~w(CaWrxF!#T?2HtsRs#~PeBjAC}Wo@etov38t- zwvi%~Jke$BW2)`}>w%`5j7jiH@}s*mBW?K2N7#lh6cF`E56K4~rmy2wDqjv==1j(> zHxur3B^>D0<6qqSu^_v5U!-?Aig$hXL=<5+Jz^%9k;bpFU0tCgS-l9 z+ZTVm)U`1HcG)f~=Z+vfK{!JqoRy@HRQ_9ByQ2!z(Ox-sg1;5T5q6yUoObdyO1}Fc z6LB-AZ$8A32Y^U0~f8N}rCMUSbho z474G)xB%=r^waXqKx(F$qV;!?$^uOcW&-%HiuxaL<2y$t@iyzfK%}{S&M|%ic(Al0 z2`(TRX|p;QN;v&qaoTzH>%lTkvUvabCiJ{xC!$l3GBi?wAG9ntu$zq2Vln-}p;g<2 zwtWkjMpZa6hMptFNspI?YzfCwbBL87+9Vp^s%mj)IUo45Xt7Tf+hYJzTQb~FicP_JB- z(9UL6C!pD8+NaGDrgC?D|B%(H_Cy?J%Y1D1fR%-#@0Fw=Gb|8($B9MFX|D6?Q-|x( ztH9yW9{`}*t}2l&RemiRfDSfn8sdKZf|vhzUcR8Jn+f}x9d5By*qvo@TNZAmJ7;*8 zpQL&19XfgDwj-`QMJQ(o*1hI;pfJlU@z(iOME8MieuY~yHE)03D?L~=y7o2z>CB6u z3CbBz(g-15Y+Anf4iFNzG47^6WZ-zKQLj=AVI1@!E}<|@%i9;2SKlVtDH>BCI3oIP zst7m{`uN*mjNabR{VIna+x0OzLcv&Gp`7_Rnr6QtKwBlmMZn)!tp)qK(p8STN?oB3 zgF|@Dg67@hXvWA8&-2%tWw-(7DRY$3V z?89iTvT=$JTLEi)V@ol@e(`L|FIF2+ZabuJeIJ8E$$_C8E96_MvD(eaz%-VEM&t?K zglG7$Fp|@>P#KN3hUE9Sv#>F_#!-c8cqq`SB+k&uUERROZh-I8x69#3JaDD22^qbK zE18PJLHx*ZaXv0>_37I2B=jC4o;NgC8HeLqq>N$(XvF!s(uH+`w{Z7dmzI}%LW#uq zu0B|qa=c1o*-`eF!WFTLcN?D|9aKL|ukcbL8o%M7x1hv9{aF4ca}?A5uyZ`#(PMagXRp7C+$A z!uVZ@ZI?1CTp~9V8z^Ns-ShQGjo$KpTdS{{u+EaV5O&S%UqoAOCh``efR-NONN|{RC9A(^;x2wA~my1(MjpU?~U%qgDWt{C?-dYn=Uaxd>@W-rt@4c z&~<5wDdq8jL!Z|D-x;!uxx+caJ?liXRehX8-$?Drp7LSVo-N9zZf*@=?$*uaV!Up> z744X7Jm-lkV7m78EYzd@^I%knZ@%u<8PDbx?e&3X4w_xG{VQZ=(plBbD;zj{Zg z4C*T#30+b~*M@SMwhdL-=i^NNc`K@U?H%I6Bvr$tT)QVl1DG2YC1 z{AkTjIE@)iJEVyFA{4Ri3OKZ*a%s8Fm6X~`MQQf0qF**z_>jk7A!3O)*2c>X)7fP9 zFnHRtFTUAI8ab5^zT@e2^8DNcUM3->=IyBz`}*sdqz#f!Ua7@TAj)T9zXfR%o)*a3 z^&HY<=-CP2jn|auTi!J*kRMl7s-yI+i0lqMa%u|!2%{@tT5gV{nz-^vxxl7&0EO?v z5j3Yae6&yX~P>5(7d^B-E@UT7V`PDNr7>a4Xa7 z@twFCVXR@(4gvhUM`*e(-XL<0uMbt2yV8q-P-QB>%J6nx7lA@W*{Wu?ZEl;dfg#!A zNsD7u8n3s@q3^m}z45`@@48p}d&3d}*zb{~FW7&}*r@yHHCf$pMq@2rO37iVdB<^1 zb!0*!o-h@$pI;mv4dp=lY)+-m-O#@&ex>md`;~HosEWM;*}PRQ*BPm%ElA3#H;J zCN8Tyv%KxYsma@GmFNP)AT^CG66~*Xa+Ucl`hu8&ThhwHgR|U@YxvW|uT0XlVw;+h-V`<-mAv!JO&xGO?@IEbF^M+%2fJhPA%g-ZFAh5a=W;8Ka7HeL}>pJD5x+ z+Hv>@A<$x~9V44bY<0VpHuaMf9v%a~N1tfl{gce58^Wx2skHm$dwefM3-}DgJ6`Kk z@)UhiK5AKA+-+TNJu2@tTJN@frV(098&+RFskS{6SAeV(2#1q!h5)RwP2%cr30iOX z?Zew2ZKx~|zoH;dgLrzK=4Jo$mr2Eu4K=y^1%Z8ce6lbDJ^0`E+kdc*$A>mNIi9A2 zsjUjzkuy4cALHs{yh4v+Y+2={OQRXJZ_Dkyv8t8`zuEVMekwJoK`)uJ(YRb_Y~)jH zqGl$FEO+^1hxNjeu8((xiuKP*RpU&*?Lq8Z9z`^gWABy4r=Uigg@_{gc8)DlM`J^W zPsPQ{oTDactlxu~*?tLck?jT={>)W%)FP1dAEs;!urONv9>=pZ%E4~mUa`n)$EeYk z*617p7&NAn8P6M4H`{=^2gva6K+*rX#zBuw$*hXgD6G=lGc|}mSxb=VaanjNL+RsE*~+xc z$2oDy*-|mI(ccNMeD0MOl=hc;53!b$BQ94{i28Yj3g4+(r;erRxgn@1$RK1!LW!K! zQTJ(sl1jyHe4pHetW^I;wj|_C!y$UOf?~zFXw>u(Ybcv(I>}?ahsCB@E$DlasKU#@ z>Y;)aMXo9k#!y^Rgmb@e%^$x8%!?Pi^FQ&oF4juaBdV+GCX)(N@HAa>LKFyR%fqC4 zG5uK)LLP8F(bAZ_FU%ERl2b;pw#0oXwWerkYU*w?wGRdxR}Zre7Fk_&=5o`XedWKX z+S6J;&n-h*Pvg;2ja-Qz?Wu?Tou4tfT5okAKehyC4}x>p0a@-p;Q;oaYp{u{Zni2g z&Q%{9SQwEas`^p6nduOXO(a@fF;4VKHLPX(JDF(>4vcU}rn|I~m)DH4(s^uazx2WY#$ZH+f zF>nk1a82h{%`y7w)vKakUA|wOowOF~q+YaryiPOwsNvccE50x>k&sk)UWZs=pL>hU z_x>%HSSx0uO+#>%H2k@B*Qm$1be#rW@4IqpPWrlxO|F-* zGfbrPdp{CxE&mcpH?=dAu=L2PyhM9A2n$iO?tf(~SnNGyY_I$^_WMS2-7%oPlYhW1 z?+EF|svJtR-FGS?Ves~jS!Y^CWmFO`?`{ALC<9hM7_grPc`pd2E3Uv@8a=fu` z-1W&uxHnWD;2#_W+`p2EA`r!E{&KSDys(r7+@J3`K>KBg6* zvAW$E{B@$BX9wQ@@mXq|!VpMwo+CNXdPgjLN@rzUT{;d;5sF#a5Upx_g?7){8m_`6 zP4f#YnF&MQEkex44=!$(8-`iG&E#B+P+j}zKD)di4Cl+8_EJl6W)NVaxJ9st`8*?} zbE_2_M}qHZBR|gOI;k#&dz#!u;m29Mn;r-we2$BY5v7>ueuWjzAi+$t3H~qpbO}{1 z-N()%iY=D$^FvuYxD|qhX8c&QQkOhF)Z>MOC8W~?74!1dzpoTL81Oh1tCOqld!#Z> z&;NMEA&}<_gJ<6RFAL#gzNa7Y(Gg0n9TR%SSO&QmKLt^cvJH}bm<1luuQ(S{p!R+^ixiglE+SXeECYPq)d_rjDA@maP(bp~`u6gj4JasbI(6aB9-E(AaS8#}DWl8(VIR zbD6;2^DoB3&kvP`BXDKab?>U<92IguI&F__?N+KJDT;jNx|NN6kNtI(Ipjtwo6F;Q zJ)J~|J*bIY1fmaxGC}EJjMyWL0pEYln6+r8o5$#(uv2rt79#Y0W9AD3!u z1*~Kw+4(&?oMQ~6PQk)b;~$O|A2q#e>UM~1VUg+Ewrd)?E`9LA38N5ZeL&mxoXtjt z&4G4-BJm3TQ-b1Z!WNIV5MhHY;p82fQbRLD#jsKLqhPdId$uyBFZL9_jG`LfrQLHw zCspt?0{4?dYl&-zz0yjAV*0IJ``YmLPOi>dC0kq#dYu3>Es8DFWB%}!IoTA8g^m4>S*NA9fww z=X^Yr=#Yw*)g47sc5p~D|a+$lW zAWDb*?Ci>Caph=q67{KG(erE6qjFW>$=7vO?e_6pMk>P;Q-&F+7tL|-q^H{OkKAW% zncqAaD_}beepe?RVh~56a|^g}3hkzD?b&bBEyY&(JXF6!-Oca(+!cGBZf1>fnF#MB8PKl%h|lwL~Oh0ZLNRFFk8> zp4Be^DwO*>eLz_l3kma=YaAH3MYp&W;wk{?cNLO*+(YW|CY7WQrt&3_zU6zznCGEs{6vg4S_ zC?k;ixGVEFHLnL(_w$>vo3pVYwVOfNGIv>rpCg7}0J%~hD2`iErB`Jr6dz88)z2-n zTqSnrWr;-TLl7g`x_zm@IkHj`^p(YSlQQQ8hSG=0)rrBba{D#>3<5aNTuZ(wTUme^ zsthEV$+!j<{%l^0XcvaJV{ekKlXCa6o|5dww{UI+28%R1+3V^`MC0_1d7zt2_>xf~55I@zyp@aL;{sS)jN;e^>b98)ow9u^;fwg%2q|W`&ZoI| zX02Vw-fnyhkJNqhmLTQf1tKBhbe{UacK+#TGg`=^g~Itftj7CEfFL6gh+31)!SRRn zFTjJVk}~n29|#(7a|E#fk}z*QPVMbC=9?*{X_1EVZ|4%O-u*(|<^62ty3C0m3}vGB zY$^`C6SsfysQdI(q>mvUeuvgj8t3wL$I5kI^As7xi%qfc;sF&&PyDI)i|}po z?rLn6+T=GIi*}w_Ep5j1=K$66rp|(4-=cnnVX%fDm<7MdMj%-Xuk5B)c{4cELYxa(F+0V&e)Omf`CD>z(jto z4v4;#I^6TebG>B%=xl^Tv;ZVrJrk_Etra3=OX#@Mb`^(+L;IYL-RI&yc#{*S2t2i! z7Rz~ASCYqI5+{oDA=G?z5%rxx=IDB(vaUpqhU2y%emH-yDanmAGtrlNK`#abd4^c; z@?U2QYJZ5n=LbuOlOmZ5VME4LJ0i`4WL8392R9FsQ_%nT4|f<_s*Qs=#p=zWo00md z$p^GCI7_#j0SIxPo$j17@^30%hZ~BWoaG0eW&MB~u@@vYC_|fH+*|9w^gpg&ZnrSh zN+%@sZ7U`a8~kdF8^Rrw}0-$;XFohJE{*`u_#N{{m-*9ot52btE~WOp`3AO7Hq(c{8EFmIys>a&c= z(Tnm|K#dPlpI|!6Kq|JoB~SBl6`U7iY>zTg=8fCskuiwog|R++?=AoHuHCgGtjvaZ zha|f@g#eEnzio49|26fVeTYp(TQTJ7k`QNK7ZdS71YcSK@^?Nk-p5 z#ovRTP=s|J4R<#=ethoRRJXClpL&Vz_%%P?^HcozUjRDS&S|KO1Gz%J8`uAjT8P^U4u2_6WN;!GZ96J z0YL?uc;c*gTp1j|X~H=~tdvz@cHOJrDayGCw!oUVR%b66yO$bxfirdBNMQyoI0HY< zQ<8iv6;k?9XKfRN~Fd=h8I;HUwjjuN_v;kakg-jCIrM%zmlZc|Uv2`8Zw%`B6( z3PFjRV3$X9kcG`o?V6N)lF$vny9AB)=w?(Xj4!cyDr(MzyiKg9EJ&{1Sj!C8QccCR zZm*gt5qorkH4y$7zzUaG&+#xtDxoIdTW{TjXnzw}GdX`NGMrld^>s$=t$j7x*zV0* zeT&jZ)!$erSSuZk0R;GkL=@>b3%C>Jzut2v9EC1DAz5c=CU&mt=HHt22$P<&Nhce~ z3(=>CdGS}n3Hw4*y(ZlKvPBdyS%GqqZzXJnn+N3s^6T{c{!h3gbpmk&W(Se9 z{y4!4W?luqVhb%TF>M@pHbyr<{%CIvct9%Tkpm&IO}41Q18EmRP_ z!THQP|LKj1f={z0p~}Qd()dBE6I{`ySER2wXKPTK^pr<42h2B{+()lYAQ2K2pB-*R zkF{Cr^BF~OhyNd{&N?c}uKW8pf^OJ3#G*hv*95$6TnG47R7f02B z_*wMiu>&t)&E}4#7XoH!{f>9e|F1RYoB!9E>!X7<446w4Uxa3t-){^iFsPsDc{4V* z%#M47>pIyV`_a_G1$M;z&ox&FC7wCfPl(8)aIU#J9rUFbT_c&BKzF~018HDQl2nGn z(5j7`LCmi_KbTa8=g0=DuU?(&$du~)M}ygA|I4@CV3iD!%y=eqh(FV;JaGwNn?{*3f7u3UN1XfFXp+zIQ&B zZxFAxjr3{@ZBrP7to2YT{q){1^bQIJq6mF>6iHWk4#L9pI;Cy9sZ-_(7f%0C5U56g zPMc{{1zn?We5^|*-Mu@`sm;s8Eb=Ff9iYMx0rNfl#F4IU#y7F!91*dHj`07OG_cwu zo5I8a|7;b?Pd2An_y`vOM$OE;`ma%2ZFYgJFpqqFZ;c&Wg8kp;P<#_|W_Cp(#KsRLB2S0X%E-NilN+Meb|MsH2H;8nu5Lt zLbuSf5w`}!o)Vh|b_oRerJyF!i>ut7;p7%gN`8UF_u>Bjh9k?Q1 zhWX`e`nJ;27p-g6nuQ4a_y_s;0=wcdXecN9jZH&J@NEcbO?1lPpyE44`+LBkaaJPH z(=BNN6!~3P<;DaMa`4v0E>o`$SQ0f#GvAaPhaFoU3BN28PLTN6+?iF1_n2cFJkxrh z@T>90RNfpKUUWyCWjMB$Ob&&$gaE_2ggNPFe~nsynZWIHeo3lK2?3IQ-dRHcc~ zz!xu`mP=Z>N^@N2)M*uY3$(j47K~147Nyp&QskqXIJlLjq!tnl=wqlI!#Te;an4K2 zDKsJS4UryY_jQ2I;`h>w&Y=|{hIK=34N)4jrtz*g!B7g)K0qu9*T(t=Qt3e$KrBf$ zYA(T3Wy|@sFU_ePZ0aCmraL7)DlXFI_0Q|$RFVF9Uv=O=5E+ed9Z(v{zfV5kb4xf57(-z0N9(F= zvitL`*1vMIhoE0jrDd+F2rr8ype(-AYI~Q0Fz>3)p-!>y9=X6kuoKWyp6B7@Gb-zX>R`68<7OM zi`_^$?~&L4Mj|K|abK52vM$C_V#|>v=1v)@b8Ou0=zPuMeG_MDO@I9#&;8cM!lkr% zzXX)OYlNm_H4+hjg^088(H*{EaaA^MVZ9ATh z*L?T@65|GF3%#@Prd`D-IMWgy<*h&50Vy0S6i90JxwPlTA*I9H!q3A8D;b^{ zbTyw}?Qf;xCue~5Zl$sRoQ-c@U-D$kLr7|-^UM>zVZ-OZ(b6BDEE}GXzf_1Xp{S^QOBvU0$AuoAz(@XYN$WlVWIaO(;2aU2Yw%<4 zL`)i}$&Yt%=77(=!8r}hHfnJGI>lit6x&SRyTx|Q{-h09>N3YvQcXXp)~6{CB-=gD zPPNsen-#N!g_eQ9ce70|+db~WgRhlB7KcsLPW{|;+%;Mw+BvaI<9>DCm>X)$Jldef zGu&cimYloRkXSMate-`Gr*=A1_@Zmru>E&}C|6xdEKDu^GeB~JWO15`SzY6}?OB`6alZhfJONRz z|8dIk|2kzKpEsuWmn`JnUz$!$0Y3TB-njr>VHAl}CF~j2V_4> z%sf-LE{<2&&6(r3y%hko9H_>dL-H z_mi6-HZy33Q0C*8|9lLw6E8CaJ+Nzt`%0ICiUaMaDx~A*#xlUsgjW;q44tJUJ+g$6 z8>$Fm3@}uU6UI2pjwn>;Q#*KBL4AjNu6jKd)(R0sk7-fuiv({*KY!E8_!i?uonw`( zm{f6?jd{sHIr>X|*CFVnj(6Nc+tN)eDKtf-nxDE>CbPl8acY>EVLAt7gq1{`_H4+e zuMSr;Xhs1f9H6@<`jlVA3xI63o48MU@8>z3@lsJ+(UQ}WPp#G;M*QacT#lcc zeL$XD|E`R@{(V#LOz@ct#dzZ$+viWV-l~_=ADGCqp*Xh-vQm6|!P1`ZK%Dpi~O&;e@Nf>So$f3d+$mZI7*%7X-!^ zX_}orN-=NfdO?b$!DDg{-nBcbARYKJe6DtISN-x#D>&^%?!5~pe^1Bs-L}t^3VoJj?!Vl} zette~(y1Oe|0&ukoJQ$=kJ{B0HT?N5NNoOzq>4xuh?4Esy0}vO8YUvhKCUyWBBuA-tk3$cTzQbu4!2l3R0TedFjb^0%^A z{4sJdmCV`q@7!TYV zQpuXNanJP8^$_0qo8LZEmeT{}dYHNGK&>rm5XbzoG(IWyW5iWh;UmlR%xWfA=7z1H zj`is8qEoBlSI%^-z}WcUkJpYJgJG6eZ96^C^m2HM?1oKt;&I#)i0AJtJf-=o5-f;)Cy zv)#Sj7j~v|d@Y$*wYag?r=E&l|~QEeMI09d|4OQ(KXj zg|n8Amhhtmr*e@FU_)isUn6A}DpCjJbQ%^TMW^O)+5ZXOWKtP7`mtT^T?GBdsYJ}? z`qshwjo{|f59H^CAmPlnHm_gazxfA9OiV;FdL%Y+xZXNnzaP-e1^VU)eQjgTjlX5P z^+9>AjleW(I0ia;_tVqTPzS`f4WHv{=TC-zb2y!t$6=Yp@3GLEERz|8zKEFk;z9nK z#jjo6x z{h!h?>fd~#B@NUfMo$MP>+7E0@S7pL>#O=Jw6PqF`cHzqcK!sW@u}>n!B@`!>l&{k zrl2rd%Kj8arWL1qouQ-0s6bw^rXM98&u5;&z)i-b*qSfTKtV(*P?mNfWI$Lklj>kX ztbWD1wz14gf~it8)nB%kC9h}0^xhgRs*j&}1O4W+ul_uC>J3{zvr+Dj6iscF1JdYl zqlj=9gDV-C_O#JA#_2<>Hg58WO=qC-k~YJfdaQaM6umzfSRfETccq(V-wTh|EAqHh zONNltAg_q{AL;5iD195<7dchyq8)o%-1WBoqJm54B(U?X^&P3~vEfIfH$8tZj}ZS0 z3P+au1PP)x1;o<9%h1T9H-U3Q)~cqc6y}NPCJ9|qH>_7Vv40x9+E)#z6%kLyn*l~% z$!!E{^Cot`p+a)nl)9tbBbk1h!p=O|FW!H;S0$O2$;r1}toiZcUKL08xCFy=rKBMf zuXh&;W^s_X9GZjZD_oYAX{aPf4d)#-nJ2Hgk7lZV45KzYiAzrYroSh)d?Od10T7fP z_Wg9_oFcY(E*ntPsDmY85}UA0l|IW*ygna!pCc9JzRJtGI3P^!8+4i|8FF<|TtM8U z{r#%_oG$Ky@~E=5dnFKi@7S_>Q@HxG6?48v0OHptPOKdA9NY>TQ)dc>E*##O+)Sc( zphzG?6V(<8$Ah|;X(H9!fwzg`@3j_dY6a%T#vxTt50d91gD2uCzty^ROh0ZPX{OGCATs0(B zkO^tz${!=X1(c2^*?WetuP7u)&ScG!&B*FR~N~@fMX8)w!pyu*9*6{ zLUS_`10nPd`8-*zY9)h0Or%FPAer%~=(E0wkbBBYlx5$g<;>HXA+Bdw&G>wO(qu$T zgj`knC6KR}3z1ina4}Hy3wu-#4~dJ2#IT5Ct}YI5JhdbS;Z3w5RDwk(fqJ&N(A8&O zWC?dyzWSi?BwJ3nI`l?>VKkD^`4Q63FKa^~e)JcG$V)p{lWDe+E~_is`+&t)hZ41@ zSd6%uCbK+SXww8Z7%Z6PgO(t+DScZ;kiq%bhhOOY zK^vW3-dOB^I*j5}G@2+6!DcxHjIwd;Pn!A8Aa{f70HtGa<`-s>kC&F5aiY52aoCo1 zpc7R1QHOV(cNL7EH{(leb60lS6bNF30@;>wW^ugKuJItQ7;;x9#mpKe%*7(J&lxu# zV3oHQC1mA+S{~OYqBU3T&F4e65sO%G2>^*S{kYz(Sd3wR^P1J|3996{hv7fyE61E> zwY9fqf8lea*Om=fv<#sTx)AG8=}cV!5uSG=dwJ#)&G4&tKQ@^7fNH{o-IawC0ndt7 zPM!(cZ!rytr|Iw`I}6e{5AzrthrYqXNO%aNA+#jFeYaU4n5Wdn%x-zP+=EcV0us%KZg<-o$Ihw zx9>PJqbfr@Xl6U*fz=C9-QBie|fX6ByZyjS39e*Q`~@>8R+}`nBmL}W0oqux<|d(Jlo2! zpHPhm5hihxq&BLM2hsH9FtZ6k21-{YGu zw;ro}2bvBm4l&S^69f`E;KypA#B&k%b?w2k5)dGH{>un>-}|_bEIWJUqri}R+<10X zrg0A-wovT39vkZS`xE7u?f$;~R7ag#I&0rKW~e=ZC~1BvmC>#1TIv{Y%$fOiyOQ+t zp(L=1$QqAqH?_JG+)a-G9lsAea3mIWwDF8>+!}iMfOX9OM@{^QqP}fYVF^gne7fJG zlzAqGE%nco<+Rh_cX|t)f4}hZeMw_$cX>%k8v(G=N}dG>YRI@>8!|)GkVO#C7)XDq zcE)a`fx=*Ia&mHbqMxUugeg%DkI?cB7q4XjSVJ|?8INl)ZHSb|h8VpJgUf;x^qOt` z+>;Xm_kkzc1I*6?$}Yu9Yx0CglHsgk)&+n?w;nX1X6eRu{;T?dzQdPDn&!vq#o7YS z0DvMe7Q)YHe;7IJ{XI`Gj*5?pwKlU|`4ga46KL6$nQIPOo`_2}bSc~huMndR)4AN{ z1g?$B7>;QxlAXgu9KmZtq$6p3-s?XcIY)}SDlVM@y5`*!FKe)DJFBSU{5j?iJ7vU6 zn%?Im4NG*~F}TYBW~*D-N0t8_&<>C>^5!%grMe*kEyee#V(xe# zve}2U-v;V#6Opip#OPga4t?(h(2{?|&oDo4D$M2`n8gCq4U(wM@#&&cvC#_v4!C71 zo3A?aXyrd*qnTT0uf~PEQYym`r7IrO)xf}@*?W`6g=y;0X^1J3tPt(ldj3=T5*>>+(R8Mo-gaLO|wI>So4Mn7Az8 zXUK?scghICQb5Q7VnR$k)qmEjJWtCc&mo(sFja80Is)(ooJLgp$<<&YO?E@=RBLt2 z%O-BM4=-~EKMSWGr)Ka^<1v^a2{8qNV@A)<2hu#8&t5s}ittpKRaf}I#HSy&itT3` zQ*JDj%G7vS-*OQJC`_yKTGCOMAJ@;KBK|{7kTV|EmjH;#5{y?^@?H>K9>8uT&+J-V z^8T6UVQ30M=>Fz1fHqQ7LP>?BHgh?73{4ZXT6aL4BZniE;4qgMu3AIHNvff!^3G7= zdX7=;0ZNr0ZBp3hK~BRHmD@cz&aJJjXd)kSwDI@`(?s^!8oq$$R5vbtQ+OXuUN@jW zK=%K)jQmaQGmF`{AXWSIeRshbNUy* z79GUw<%F{P^C>l77=H~&<&L20b3a0mM>d^^o(BRb92C*iGEtzp)d3*~?!(a?4W9jM zHW)K%Uyf)=2@(*dYm2Rk$^$sos9#9lvd}+bKI4D=H*h-#Hye{3e0mKK+U@Bym;ZB{;^FHP8k?>d(G*w7x%}phF2NfkQLJRlD1*Z`NHsl9T1s z@GFT-o5vktGzoWr243FxX39t%U{KUachHdAg@Wy-L*FBYK+FHmDjxXmHd(-{DP3>5yIQB2{MJNx>i`Tdc3 zv3wRDQq`Glayl^C!|_he+2mordrcnFu~IB;RtMS2pOv+IZis9~Xcwk?I_p}p2p6^4|kg z@6aamu;cAt!nLS48GyA%gyk{WuPeZ4)I*mXXY6$H2iY@mkkWv@MX)9pHm{=$F6DDQTbatJstRk&YX_lm8uf?o=29S;;@J;mWMs^kPf3|-r z>RdmGx}m^e(n^V!REaph{DAc^^Wg)WY5Sv|pY)HrX#c-c9&(lV)d)~Q2EM6SG&CO2 zBuB{R(BC7l3PR=cy%ThPFwe%PwId27=9RoBG}mB}MQ2?qMy=Xxc@7K~;edw$sDLV#UU$)gVCw;;~v{L(%d zUge5m*xOa`{x|d}a-+OlEbOk)i%p&X>lln$5YpX{enJ6Vz%Pc88KGQnS}O$j!yy zxxzP0kOXZ*8v{725TZheBD}i;(djQMAv}ImRan*u6&YRfUki?OrP`(`B{qAJ?@&{` zkm@gm9da#h#s*`+PpO_aRG{we#(`X2MiM}NZhdU`8e;BPhicZvGcw5u1CB0e@+a_? zVcb=G8PaY?JNQzR3z}vINvBa4t|$-{f`9qAe*MQlGm>^oq#leUA0RYUM&f}7(%qdC zeN}nBKH+iLDpcjuZLAcRLI(>!VV6x{m}p1i4@n>vO-ly5I*I-~RU0}5`Ct^XEcUIOH+hIOWFHD|4lDcaVt zASKklOHZ}XJu`iA17h5JTK%m)3Px{=!qoV z7(!EhI?e<~^0A>|upV4jo5%b&0HxtHPcfpe`A+jKA*V!#j#E3h=+&|d0AhR1J;!oR zpeA#6;Di-UFfBacnns7qSRAPaVX%==SqRS>Fw>~K)(7CqfUcaraWl49XRkv5jOl98 zwXSw>i8yfbsGd~p9!D8)3pkw6YdwSsf?7HHsgpTExRqok@))MM5B7iaHOx9uzns?E>FEa=3%cuUXjaF2D{ z-SJL^u2|8+6onS!Xhl=H!lPj6GqEgTMzI<5>VUYURlbfdfjK?Gz-+K?d*s#e80h<1 z?94NkBC*$k`o5Fx6A_jA-OL*F5kuY-Awb$cM!m_rxh1X)e|sb&VYz7isf#9*;dURsBa^!3u{ITpT-x}hu#RJ>I2o^axR{Myq$2EgyLGH`e3a=6V`AV7>QYKtkV(rIL{=Ur&2UJr%M zD)_rYDF!_dlh~zVLU2HRa5;h<4vFp+@V6>05dDhT>=+rq`z1&uVhx@v(4KdY)_bjr|%}& zmc{|og5SSm$#ZWA;s#u#WMTcH41pgWuC<_@PAn@KV1M>G!fXG$+zAZ7GjCFIzyD7{ zH26}y#`_MQNgK#=?cF8AL*MsV=e(7uQ)6jsfT)%K{t~FAky=)qec*JGb+mxB;M*xb>#V>irUb88O5J zz`THBqh5Ug4wUl)FehQjZjMzNmk6{G%?!-|h)+XY6xkz3?nYraR7Efl9Z)mrtyJFX zMt-yD9=xXW4wxumONC`8?vvP-5k1R0u^z6RX)ZN!uwYFT*D zvI?S9v+c7wkf;*oetWp);)VN%a@NmZI7*p$w;ni@4Q>`;2yN-JS$;Xg3f{*OP@t}V z*DfCo@84^gU-&Y+Z`77?o8r{B7ILRRs8)W z$*`#KE5(+dw!1BR$2QpMloHaKtSX2G_(m`m0B4nVd)D|D8gT>o{!;*>?ShcOY?7lJ01>xkDZN5qAxzVCvbRLi~`#G_*(H;B<>_cT+K4V`@@k9lZaKTU-3k z7Hx-5igGg`+lQ_U7^>5MPgiX12dsL6#oNWL;_Zal)fa;qL4E))diK@9h@tYI>7?jL zOIPuIq<@JpGLT#0gz0h5?8FgC=80xKo?_UKR4j#9^n|?>co_DWk+ybXW;oSByrz9J z)kK+Fw|mDbe^3hLv-e!8kNpHY`a4!AV#TAZnoOykzhxHOO%~dl83q*=vV>6w5`4lD zuqS&?c?P^SXo@neFOCN5jGYoxp$@RN_hnlO`k3m86O5j4kL751(eL-CPvz(;S2hw> zOrg;u;7zV~c$>n!1Xsh6s&LZJ`{Y*x!1sg=Yb3N<-{fV zHf)~{QuvR)l2ZKqW^1}1- zBIQw!KdoNf8?<<_{dicVq;57RMXSRRpL6iI?r-YaoF^|BLUGXX$pr*zeA9Qfd1@#9 zOBne^F3YtAI5r*cu$!N#ovLKhB=-jYnMtTS$gU_%X4DRM9c*&OBLsHX^>!{Gu(qs( zA**Sy<)Rwb2v|_ScXC7c?DzYsW=h0o#U8ZD;03p&=^zt{&g60o% zt0D6VH=l<_c1b61Qicsp0w|Ri&x`QWsv_&-0p&6sNd<&uXUqk(+p^ue@QVewrpp{0~)NrDPMP$0JbWpK)l)(4`|l&W&* zBi@h)ncpPcRc&YGSZYXr=TEtv3W@QX@?{v?-GJASamlJ$d{sNGEG*s-Vm65umZ`4& zbnub@b0ii3=3JrITi7Kf2AMbaxrv*@SD#^!8{Pv5p{Xu0X9?G zzuINf(Bk*G&sw_5)v!!%ETpOWoo2O+_DnxqfsSdqk zKf-`37sN+Ij36JZ2v-hRseUwNI*^sUJSx*-AM$w=?4FB{s6(ub8X>`CMeDEs1flF4eG=f>#8J0Sd z1LJptQSXVc_j>+j(k8Xma~tS#5&1w){^&uLEQmcr+IU%SF&E(`c?eS9At&!pOlnJ4 z@`TyS)wv_G>M-Kw-_LM>i7P;m>Z|HC=~#N%`IeNSnq=mmC=2F=yHoPDGR6BIwA7th zZ#WC*&T94qhm%%CH00j;XpH(f5mLinos>y%k(AEa~y6Cn9AkQN1 zqPkh1%gib_2L@DJq)#{_65`bk}rU(?Z?<|0Yu!^|xuAHSSSn~kpQQ_aHN z9{r?AXUm1&vk9hT|5D#2pWp^vHx(?1=E4YuR|Z1W9#{yLWPj=?fwJs)G&GR#vU|Vs zDP+j1b0=#fMBrAJ^Ld|pzMDTz96^We;Mw>@bbylz31z*G`O#G#w#vZud5|s@loEk` z%?#T&csB6(SLyp90RR9b2u+Eg##aV$D*gtrj39yJF9{g8Tkfp))gMz;(U(*{aIMT; z_{`}<^-enIm#Y&Z5XMjaJ!0gGk+(AJ*WFXkn2y5bYTHq9dl3EM#R8>M z?|(8IAP%T5objb`*usq%iGzq6YzgA=S^|Gd$%e>&$d4s@RUty4ZJ_Q?g@Ah?$PGmv zT?5%hTkN;N!IS&M_~c`Zu4|48_&^C>Ngo8iVSDmTUY$;#lqS}rPS*_4?-h1~P>B^dPlalUmdI|4fV1LqtIJ6p z@8L3~4DpgkX0h*BbCH6@6nALa?oLD}G~g!a?hWe!(&)@KaRN-2QFw1P9Xh;wP+?3gYxQ@#T`JY2W*^+kA@wZhoT0#4r1kcsF5^;9OUMA2Po$(XnUC9q3}A2~ zE5D_&@2J+yNUJ@bfHtC%Pop`Aiht3CsrY!?=Ay~6E2_%2WPgb^hCD8LCB;3K1^Z@| zhACxc(=#7$m}Lf6H_l>khbTgY(%9KsB!(TQydF*EUT)k8`kjUokeM0q-2PrGtbAD& zzR**8= zc)rXWk(Nc%x*p)NXuwdlIpJpUHqiRV-~ z)dIAXcGv$H(}xm?3xslZRl#vOEX_SxacpmS&E6Gd381#2QZ7dG1UZz4dY)qRUKNRL zuAuXnT$_4}Yj{C<)S|LAjuw%5f4*L+S=Z=1a{XW(dh#;?KF<6~YCWQu;F-&^pJY=@ zpG^6*xXL0U*(AJ$s<(E!TyT+gpJ!V-LAU(L3t@v+t7&H6ts~bJ9W-t0=AKDC!j|2m zXsyzbDks{y+8AFnptJ<);+(o^9^Sf3$Vc%JjueUclxZqLQ2)?ev(*@etGf-n>KqSw zw?LcyMOcI&&54+({Nlt=(I^cGeW*eGnB3inUYKKN$?qIjx0kO1_(S1Ykk+e{+yf@x z?yesRtJLIC(NF@K$Dd?uOy|#p%?jc&N!)DJSu}d2N)EFr{d<|Oqg_5XdQOp-v|FmqWK{ndv zcr#{fKPtbTsw=ik-pQ$+VPwL;ivwZEg+K4F-gWRxn)Rd@hYE!dIn_QmoiU|H;?#i{kcg!q!QXZuot-rLS_W zhS_{m1Lt}mn@1`^JC*7E=X4Batq>YPgU9aod0&xK^nMrZn2hD%cwLYzbLlHYH$8I&Yx{L^N zTgGolPV{s^=1ID}8GMrBE7>g@pL%90Uwra(iGmnSCr zZli#N;#qPsccnE+Kr~w`cpB%4fw}uN9_y&ot;BvU7HyE*#<>lmkd;***wZhrEnSmq z++t#y^GJL98H0p4Z&%9qk!-`{idD&kCz_0vgN6iZ4K!*g+jYf7YA%(Gko5Vhca`RP zm1oCY2VxVv6l$$)fqbFTVOm8qZdT-eu&qoA9=2wM*Wnc_-RGZ!y9da2HLHWgUpVvr z?#t%_XDwQ0w-Ux|`_rb!4yHLB#P*LLb(1%{HW+!%!9ZNBvmz?0IW zM=sQNLas9JPS)-ubLX_Z+n-l1p8Ut|v8I9>1sX}z<%?pqb%c}$VSf7`d{{L_fg~P9 zLab>NC3v|@ZHa2tsz)>lr|DlUSC)^kXYM~;Wf#wg4fAkB-THptqdfG<&e@5IBZ>)) z)Sad`q7IMtrCSi-d6ED{jyw$!7pTT0N`B9dlR3vMGMdp(_f9SJtms(B#4T`A10*8n zPS(Iyiw6q z%KkZ@9_E&qHVKs1ExOEdoo+$4Ei}i#NJHBHaaGl-u4|P7#1Rz}{%h`P4kvP)Q-Yv} zu3PzZBC!fZL`%=fTZOFeq>CKqm2^|mJM#}H!ayCQWHaAdJHrS3PI5{4JzRa6pPo-P zZ#HR6u+!*`-HUmt+49jmnJ`xlZZ35rG%x%8>Y4aB&CMp;pDgiSV#ea&b$SJ>om5&; z1zS93JL+`jehv^@gJW5y!msf5-;jMSwu^C!nNjtAH7sGb=6@o4}o*%O0&| zc+MtsQso_9SbkAQ5cDpzTiXU^Ue-2tyjDPErSFdV5qJ#jiS8faU?DgTeU(6aVdg@) z92|c8)BSnnB6?#x_GugvOyU{qo61jT7hMh1ETR4f5nNJnp`kv~ zWf-A{y~1@{Qwsxo1VoS|1CD88vDX)@S_krh1kz6}V&Su&iZYs66B$pa>dpH=kI4(O z+O#4%x@qA#A>}-Y2_4P!MT{r#fThj{1$>YlS~oLtTeXp%Y?aiHI=t(mKeY||Ox>ow z4bKidJ=Dr)X8I;{P*q}`fv$?TCUlEt`(RzXtZeRHIw>1pb|NE6zoUTzDaZjna$ef& zz()RDQ+(QZ(1-3+{Yh}lfg2oft-j5N&fbTS!f$?u>WUi|Jv-6(S^?Cdqb}5p%9FH8 zw#+$3NG@`X@sMfZ{wXiD;&*d_Ew#y}uwYYC5W3CGcK;Szr9wWkAPW{Q$)6R@FTet8&3X?zpydefDeh{4!YFXkM}~ntTXwo5X3oZkg-|LraZKJBFup{ zBL$vW6Vs;gi9l4LW-B$1tyLeTTjCYjVqe>>{0-kNqZ`({PxZ^rQuEYtY1;x{G0=a= ztSPXwkls5mi{fq<1U}q0Od2X1pl?*L_h+Pb#~S!QNB44=r}YjhM6I7@&LmqQpbiNb zQ?kw=zz#_2mGs^FUT)Wq)gERcyV80f?F==MKN{Axky{XvTVl@6D6M)ufA?#95d}qO zTa*?lCq%sIS>e33apH$7c1x#V-h@>~l$LeHPNwWoZ3yb3Jco_tu>2iG=#DtS((<>8 zShiMv6cb4%BU9E*&YGAdZ+Cz>XGtaXrXpn+rxqHShWaAZ zr?*1j<-$o}8qmtEhn#%6wrf`@l}PUDY6@bFGFpXr6LpbVu3bXE#thMH47K{k$FaRP z8GbGAco7E5dK!wn7aLUP;sLq#HJb%|d3P8a4wfUomZ`O7shqGp-+#3nBQz9dZ9h)T zV!%JoEJ83q5S6tVw6e2U*I|=>sV+RrW!~bd(4|xK)VU~ikr`YseA4Z1cA}a+s&!Dk zTsH(smc0+zdA&_)QQ9~QUVG>0fEzUbv%vBXNJ7Ewh44&1Oe~Y=>HWm212Pu7GzSPt zk1zJbwXu$go^woY3%)X!S)KY2bc7sm41SW$_#wPe@|X$9`^+_-kqM+Mtn#8u;}df8 zLu@!`PYG7u<;7mZK7D(Mop%QlAnYWsA3-~QVvPyM1@ecQ#HsNWRUkTP!bNHIxbY+k zX5@5!oSF^yC=QwDPPCS-$!7Zy*!qCbI({d!ZrcP_?yy_D@bvR!dH~(0Jbh9q?H;$S zJ8;b7f1ZWWN|UTcd6Zu$M6(s~#$b zyx@>Z%vlgV^-q7;6vmKAO+~Q-1ud>}eP47fDzL@gcA0m?>36g>1D-*5;+B4mMI0T3 z7{a&O=9s3G`L*}Vrnlc;U;HyCF}|N5TCZrI6--r#B8K9-QG4Z30!E|JOF2Ev3E`k0 zgd}V6B=)?3Pkd4(Sq(>Wn2*(hRq_#C)t`pCoTZajN*H7;4wd}JUwfGyL>GA-JYNg{ z=e&H{YV-9hZBbM2r=95mf}L?vCooZ0lwaP6J|4OjU+E$012yMe79!n3{mMxJUu7s_9H%sSG$$C)WTo!_&g?(_Vb%J|| zf7IN{#H%(I934?-$sL1k?)ha<^cnQgc?o_Lqg&ReYl61uDrN?G}kmRui`rakDAyro4ARg?5Qu$ z9w4_v==76Q)GsRL4U;o%om35l`={SOj(N^ql?y zvIkkFvLDr?ItrfQ`Z8-X57OZb)8|_VxseaLJ37O2bR$gTdk6zL5=l#OCwVHoqO9+M zRd6qJVpBg#C3#`r(_inyk%B{FnCdR)6P+B_5u=M8e(_(vh5ni^Aepg*e{VVQaA2fz zD%Hg~_CJ0y8oe90R2WoZYm8#;>)!!_onZn8Rz1h{FOG9#KG3J53 zd_RD6fE1A&cpSk7rK_%VPM2YvF$7A7sVZCeQS^K zsnnwxyNyRY5b^$kLJlr3)&bLTifK0ym4Id4-oyZ;FO{*hh_fl2YoSeC;OEG^_4Y*; z-3Q=^afo@6hX@76W4xX~u4XYCxc<%wf@wJmsof9E95bs!72c!qi$AWt2*zgJZN@8y zYo}Q@jPE<@!k7ixjOQ*<(~2XRx08rR4C7zA9#4O+7?NVYXl`xU)MzrMQ3%Z!Ch}{n zXtV7J*`(I0Zs$kG=klj>^p$fPrvV9_AMMTJbdzN;DBn%JMFOu#!Jm%~!~s0rw=*2Y z@Y74`Mla{`1$)tmVp4J0&SaKSre4)c0@5W6IuAn;b-0sA$JTGlPP7vyLEzuEL+4?( zDiG;@-s)=wUNx`zhwB^5hkw zvn$oFPKT^xFGg_@w0SWnJB!nHja;u|DMs!7EY1*xJDxA0e+6Q{^2e& z5lE~!n)Q81PixC6k4r<8FZFW?km3u@80OR_fzvsY@M7m_GLxqq13o*U2g9oiQRLHe zY2nopnb8%geACrB>F3*0H=LZ*L#LF)dg*%DheV|6r_q2X(C8TCTSB%d!rWIZe2~c!ZtJk)l;9!QKI>=7Vaco{@Ed8(_%&@LL$JE@nE}u#x7Ou4M zVDrfqPjiY(y^p-5I;VnjjR@Heo9BJkAi(m4=|Bw;JNP7F#80`w@Tfn=cy*Fq#rnd>Q<_#vn6SB2%hBj%i_jk}Fk>F1kbPQvL@BgCV$? zryDT8c#4(R_RpD8^?z6po(d24?VEFAP6j;4IBQB_@^bfE{k#7isQfWvU@-p7+v;k` z!Zp?9*DmPKm~`{4UfhYT<#QJmkdK~CpA7cIs;_a~tO5qpPlN?!)=o5HGMSlHqS`^YUv&6To!+ETrbW2gxprXjZ z=9$j>!4_{r5%voaiXWf!nL1f?D@C#*gk|bUClh3=re64D&tKEGU_!O}YU?J;fpoR^G0yH(8SA=&gmwzmAxmV`cP7us<-}$PL5J7^n-Ub6F=nvz0owK z>pmg##+&zdVPEZgYWIIqri)E7n-I~a9&afuNtoJmMC~ySscA?QY4c~*4>6+wOd*W& z34L7Q7g*?|1DCG*RoB<@LaKkP~C=q6<@FZ0GdJmM5 ze8$xQ=0`}r4tVLw5X;l@3@O)QS=w)GFb#aGK1?gIHht>bU72M(|0A&=H&Z zAp4oeT^|^nUEQ9jwiNbRsI_A`S6;uowc(by`Qe7+GfeE_?9$|g4#0S-!gv!eqMsr* zZ&Om*P^u(Si#O2MJgLfRxR|PxUMj8StEggo;g40-rN&hUyD7atxzfI)**q2YQA0R| zjYS8O(3fv%YPyxG@0!JL8jR$Uq_5?BwEBuksdxPsDZw(HTExcf$;dZFo!;+kM1iafh++X7I?dU{jrg7}< zRR#Q%7%R)>TG-1IT3oS@{G<U`OCjh{;}Jm~J@#P{kAP!xMX zK;aPa<_0nEZgsey6JESbI=N&~h`!ZMM_tADGgX2`bo(h)aBLn0M-b|PtHF^Z!MyLZDUxQ&H}y@z8*wIE$b&5aZ`GqJAlrzzkb zt;B6#;>jMdKnn?v{#2VjnPOxtvFtG5J<9becL^nN2@gc^RUZf*LyH&itayZMRLC$x z$74u29c9aa)U%GPHE@#n+{-gsI$_A`f?QaiM|!hGv)`F8W(UX4 zI2fov>Dm=CUtgMsR&%XQ?msD%1WUklA-F(R5R2Xfx=ZjA@4&(zRSe_7-p_cP;7gHPg;0Li`>H%jA z>bgFoD)$R{kqP4AOAJgieQ;DaBO54PU=h?6))k{;nxN#E{Gt5@M%hH5e+f0_C z@c9MS7N)-$_$&VV)Vg~v#PR$=xExxK;WNfiAz}WG#flJzE2>06fLxf2uj#N);?pCa zS-!D&X;Th|Yiw^2POZ0zA`mb)Tg~$X0|@L*gRT2T#*WHeCXj6c9m&3K-g4Y6N}OMr+D56!_Zb3?b1kW zwF@o1f>FnQ@b7QpMQFKhx;4Kph)5|L^-cI6Ms>rTf3U-FBErDv2NK;YDdpfe*h0Dk zcMWj2t80%@J~2Rp$N9J%Qln|NksEgCQWZC zv!_I}InmZr@aY--*s&a_Iki#;ST^UN67z}fNNk-ohwd8L@1WNy>$?e5+LQ7xChG;p zD@sS|EzjMeUHTQSpEGuPx(gxa&)o4o6rnRHK-A?I zBklML28*#-W3`h;T^~SSr|aFdLC%+U^z8{CqA7jFST-}f5)mZrPb&q59Gl=*?1I-c<fa*37i&PnhChB>3xn9p_PdEVAt6Jxy)0t~37&Qrt)JA?ZLb%n*>%LR|GYF;bwB#lA>P5@tMx_Og{yg`9dWDKZIATOOtbqK zzqNt;(q(>z9d6gw{CTd#?tYXxNIHW&m+A0gp`cJ@mz@=dENBw(NwhG~i&q^dtb~~j zU@V#PFPc?S>pd)8OZPmIbveC_WtJJ@HoKizclK=SmzHR#5?8(bjif89R&bOR>T=KZ; zDG!m+8O91Ibox(}Rp_R?oQ_z7xY8yY0eWspi|TauzOxf#$l-Ozje#RLcI@P*2_g&T z72&aIo7QR{NuW^{eFjGkV}iulu}lK~rX^SoNU!a}H~BKAb-78mZm!xAvMGjoLN%2} zWpY)U8(Wn(W}40sir*tNXa*JAIi1v@QyNAQ;p)eNWB9wo%-?IRnN3e#(PPIzhT{ z4yYv=8}ex(lpS#lm4e+(xc4)BX2@FYw!VJhp7Z^IBuuWF$_Cdr8`9ApteSg~$Hwo}zVv4EkB>n;Y;w96 zk#$`Z?Hcapyd}q-6#8|+lje1I21%555e5co)j#KU%-?s5BG}0o7PEoz% zQ_Jv26+UjDYo1C_E*AGbw_w;#Hyt#?SFmjc*!sX&Y+9Gw<)9X)3A6q^t!T<+YP$!Tivywb#RQ`Kk}Tal=OgBH>>a z7j~k%sRYlTsktT4%M-0G#HGNhU@j{cDgV_tHS?#gQqaPD$ZA5F5ot4^CHD`Q322x+ zKfWm0Gko8?G?qK4DlBc<@spuS_p5v77DVo0Kl&tuP=pNLQST`JIQ&uXH^FbCz7BI= z|7uA*l^^*}Y{FzOt2;Dma#LLOj5B|;{-EYp2s1baayi68~wq~MW zb?IbVZNu-mU)ZRU+j|#ql(~p4SUcXxIPEFRbk2sd9z9SQpwH$_iD2`*>#BD6`FmYI z>6gTBUF0R5-)2gx8){792%wd3w)xzIlN`hre`YH1^ljjep_O@q*m=a1!bUOefIi^& zZkiFp!&+#?7~VGcI^;b}O+;8MFSV9Oanpnw-JM^XYNg1$p-cs0XGi*3@*j%|_baQf zVdthh28+cSvUQ%TL{s^d|8Re94qNRF(a3wIntx>&p0f)^XTCD+-gSkMWOAc~-@k+u zL)Q`13i5G}ocKSAE5ouc9n>P5@1BMGxbLnArsk;%g`{u7cjTwUT)@S=|?J~|; zACo85N)pdnC4^>-Ltv{HsvdXcVzW%M2*Ez&zJn`=dSt4Gcb|WSLoYyPLrl8)bo%BV z1~Cat2}Za6_|~#$>D`tj+7VG|UonwVuTuVqNuh}xd%Zi@AR|$cx#eIc$oCp-h7m|) zlv0Bq7=Gfdnd*@q;A206zG0n{e9f(Ir?%D5imp*#a-MX30tApx$+c{yQG;f3&SQ%`57%FEH)FGophmwsh4a?VcSGjm zrxR`mhmCZ}I^3OxGinCk>14~4Y^gA!U=5nj*^PapJGVFHA{^a|FOFFK5w6HM{>8A9 zw~AO9V%TE|Djd)#zGu@BX~)dxs4x%ilB>_9ops@FeZ+we;~3U!+yG=ZQCHRR=v2xJ zf2xr8` zZ0E*>{-??cTp?e$zktTj_?n zzSk!}oB3J>d3E|@wZ#!8N#B!)%mo8i34v<%4BeGCrrT3pvn^>&PPNlH`Rlgk6u8g~ zIK;~KGD5Dm^RY#{(kQ5M*NUH1axFclSi#QrrS;1h+{z;*t5|sJZO5w#Rt5;wI

  • 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

    Tk{uks5Ib7(GUY)%l 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ⓈF92-4u|~~|AB`ibdg6N0Alk%0y9}703~Eof}eDA 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

    _-HRGf`T-(1>`_0dP?`+of1OsHe@Ox;N-6+F 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 Su{2NM2&zw|(|_Z??%x5elXNx! literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Settings/appearance.light.imageset/Contents.json b/Mastodon/Resources/Assets.xcassets/Settings/appearance.light.imageset/Contents.json new file mode 100644 index 000000000..86e635c39 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Settings/appearance.light.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "iPhone 11 Pro _ X - 1 (1).pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Settings/appearance.light.imageset/iPhone 11 Pro _ X - 1 (1).pdf b/Mastodon/Resources/Assets.xcassets/Settings/appearance.light.imageset/iPhone 11 Pro _ X - 1 (1).pdf new file mode 100644 index 0000000000000000000000000000000000000000..2b8b869b03394d1a41dcb65fe04a637a2d00f88b GIT binary patch literal 463573 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

    p1ZRwK7v+?hcj)0!$Ug`PWj3L&;m3tHpCgupi(b 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%0ABiWzIn{9>PV#eE!J@f7^ilq*h6#Zo6FJq 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%0Aiu= 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 z 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 G$A1EU=#!oR literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Welcome/.DS_Store b/Mastodon/Resources/Assets.xcassets/Welcome/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..523b0748c86e7d8534ee845c945a235f40857856 GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NHi%aDE14G_=8gvz92t9q@V~XT%;sWU&n7Vetev+yiSg;6i4lM}V>pC<%o4=r0b*A;Br-y=EG1^C)retP&UmZ5u5d`qa##%? zRySKsC>FQ#{1)l3E>Ttth=DN!*STDH|9_() + + var triggerMenu: UIMenu { + let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone + let follower = L10n.Scene.Settings.Section.Notifications.Trigger.follower + let follow = L10n.Scene.Settings.Section.Notifications.Trigger.follow + let noOne = L10n.Scene.Settings.Section.Notifications.Trigger.noOne + let menu = UIMenu( + image: UIImage(systemName: "escape"), + identifier: nil, + options: .displayInline, + children: [ + UIAction(title: anyone, image: UIImage(systemName: "person.3"), attributes: []) { [weak self] action in + self?.updateTrigger(by: anyone) + }, + UIAction(title: follower, image: UIImage(systemName: "person.crop.circle.badge.plus"), attributes: []) { [weak self] action in + self?.updateTrigger(by: follower) + }, + UIAction(title: follow, image: UIImage(systemName: "person.crop.circle.badge.checkmark"), attributes: []) { [weak self] action in + self?.updateTrigger(by: follow) + }, + UIAction(title: noOne, image: UIImage(systemName: "nosign"), attributes: []) { [weak self] action in + self?.updateTrigger(by: noOne) + }, + ].reversed() + ) + return menu + } + + lazy var notifySectionHeader: UIView = { + let view = UIStackView() + view.translatesAutoresizingMaskIntoConstraints = false + view.isLayoutMarginsRelativeArrangement = true + view.layoutMargins = UIEdgeInsets(top: 15, left: 4, bottom: 5, right: 4) + view.axis = .horizontal + view.alignment = .fill + view.distribution = .equalSpacing + view.spacing = 4 + + let notifyLabel = UILabel() + notifyLabel.translatesAutoresizingMaskIntoConstraints = false + notifyLabel.font = UIFontMetrics(forTextStyle: .title3).scaledFont(for: UIFont.systemFont(ofSize: 20, weight: .semibold)) + notifyLabel.textColor = Asset.Colors.Label.primary.color + notifyLabel.text = L10n.Scene.Settings.Section.Notifications.Trigger.title + view.addArrangedSubview(notifyLabel) + view.addArrangedSubview(whoButton) + return view + }() + + lazy var whoButton: UIButton = { + let whoButton = UIButton(type: .roundedRect) + whoButton.menu = triggerMenu + whoButton.showsMenuAsPrimaryAction = true + whoButton.setBackgroundColor(Asset.Colors.battleshipGrey.color, for: .normal) + whoButton.setTitleColor(Asset.Colors.Label.primary.color, for: .normal) + if let setting = self.viewModel.setting.value, let trigger = setting.triggerBy { + whoButton.setTitle(trigger, for: .normal) + } + whoButton.titleLabel?.font = UIFontMetrics(forTextStyle: .title3).scaledFont(for: UIFont.systemFont(ofSize: 20, weight: .semibold)) + whoButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5) + whoButton.layer.cornerRadius = 10 + whoButton.clipsToBounds = true + return whoButton + }() + + lazy var tableView: UITableView = { + // init with a frame to fix a conflict ('UIView-Encapsulated-Layout-Width' UIStackView:0x7f8c2b6c0590.width == 0) + let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 320, height: 320), style: .grouped) + tableView.translatesAutoresizingMaskIntoConstraints = false + tableView.delegate = self + tableView.rowHeight = UITableView.automaticDimension + tableView.backgroundColor = Asset.Colors.Background.systemGroupedBackground.color + + tableView.register(SettingsAppearanceTableViewCell.self, forCellReuseIdentifier: "SettingsAppearanceTableViewCell") + tableView.register(SettingsToggleTableViewCell.self, forCellReuseIdentifier: "SettingsToggleTableViewCell") + tableView.register(SettingsLinkTableViewCell.self, forCellReuseIdentifier: "SettingsLinkTableViewCell") + return tableView + }() + + lazy var footerView: UIView = { + // init with a frame to fix a conflict ('UIView-Encapsulated-Layout-Height' UIStackView:0x7ffe41e47da0.height == 0) + let view = UIStackView(frame: CGRect(x: 0, y: 0, width: 320, height: 320)) + view.isLayoutMarginsRelativeArrangement = true + view.layoutMargins = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20) + view.axis = .vertical + view.alignment = .center + + let label = ActiveLabel(style: .default) + label.textAlignment = .center + label.configure(content: "Mastodon is open source software. You can contribute or report issues on GitHub at tootsuite/mastodon (v3.3.0).") + label.delegate = self + + view.addArrangedSubview(label) + return view + }() + + override func viewDidLoad() { + super.viewDidLoad() + + setupView() + bindViewModel() + + viewModel.viewDidLoad.send() + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + guard let footerView = self.tableView.tableFooterView else { + return + } + + let width = self.tableView.bounds.size.width + let size = footerView.systemLayoutSizeFitting(CGSize(width: width, height: UIView.layoutFittingCompressedSize.height)) + if footerView.frame.size.height != size.height { + footerView.frame.size.height = size.height + self.tableView.tableFooterView = footerView + } + } + + // MAKR: - Private methods + private func bindViewModel() { + let input = SettingsViewModel.Input() + _ = viewModel.transform(input: input) + } + + private func setupView() { + view.backgroundColor = Asset.Colors.Background.systemGroupedBackground.color + setupNavigation() + setupTableView() + + view.addSubview(tableView) + NSLayoutConstraint.activate([ + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + } + + private func setupNavigation() { + navigationController?.navigationBar.prefersLargeTitles = true + navigationItem.rightBarButtonItem + = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, + target: self, + action: #selector(doneButtonDidClick)) + navigationItem.title = L10n.Scene.Settings.title + + let barAppearance = UINavigationBarAppearance() + barAppearance.configureWithDefaultBackground() + navigationItem.standardAppearance = barAppearance + navigationItem.compactAppearance = barAppearance + navigationItem.scrollEdgeAppearance = barAppearance + } + + private func setupTableView() { + viewModel.dataSource = UITableViewDiffableDataSource(tableView: tableView, cellProvider: { (tableView, indexPath, item) -> UITableViewCell? in + switch item { + case .apperance(let item): + guard let cell = tableView.dequeueReusableCell(withIdentifier: "SettingsAppearanceTableViewCell") as? SettingsAppearanceTableViewCell else { + assertionFailure() + return nil + } + cell.update(with: item, delegate: self) + return cell + case .notification(let item): + guard let cell = tableView.dequeueReusableCell(withIdentifier: "SettingsToggleTableViewCell") as? SettingsToggleTableViewCell else { + assertionFailure() + return nil + } + cell.update(with: item, delegate: self) + return cell + case .boringZone(let item), .spicyZone(let item): + guard let cell = tableView.dequeueReusableCell(withIdentifier: "SettingsLinkTableViewCell") as? SettingsLinkTableViewCell else { + assertionFailure() + return nil + } + cell.update(with: item) + return cell + } + }) + + tableView.tableFooterView = footerView + } + + func signout() { + guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + return + } + + context.authenticationService.signOutMastodonUser( + domain: activeMastodonAuthenticationBox.domain, + userID: activeMastodonAuthenticationBox.userID + ) + .receive(on: DispatchQueue.main) + .sink { [weak self] result in + guard let self = self else { return } + switch result { + case .failure(let error): + assertionFailure(error.localizedDescription) + case .success(let isSignOut): + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: sign out %s", ((#file as NSString).lastPathComponent), #line, #function, isSignOut ? "success" : "fail") + guard isSignOut else { return } + self.coordinator.setup() + self.coordinator.setupOnboardingIfNeeds(animated: true) + } + } + .store(in: &disposeBag) + } + + // Mark: - Actions + @objc func doneButtonDidClick() { + dismiss(animated: true, completion: nil) + } +} + +extension SettingsViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + let sections = viewModel.dataSource.snapshot().sectionIdentifiers + guard section < sections.count else { return nil } + let sectionData = sections[section] + + if section == 1 { + let header = SettingsSectionHeader( + frame: CGRect(x: 0, y: 0, width: 375, height: 66), + customView: notifySectionHeader) + header.update(title: sectionData.title) + + if let setting = self.viewModel.setting.value, let trigger = setting.triggerBy { + whoButton.setTitle(trigger, for: .normal) + } else { + let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone + whoButton.setTitle(anyone, for: .normal) + } + return header + } else { + let header = SettingsSectionHeader(frame: CGRect(x: 0, y: 0, width: 375, height: 66)) + header.update(title: sectionData.title) + return header + } + } + + // remove the gap of table's footer + func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { + return UIView() + } + + // remove the gap of table's footer + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { + return 0 + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + guard indexPath.section == 2 || indexPath.section == 3 else { return } + + if indexPath.section == 2 { + coordinator.present( + scene: .webview(url: URL(string: "https://mastodon.online/terms")!), + from: self, + transition: .modal(animated: true, completion: nil)) + } + + // iTODO: clear media cache + + + // logout + if indexPath.section == 3, indexPath.row == 2 { + signout() + } + } +} + +// Update setting into core data +extension SettingsViewController { + func updateTrigger(by who: String) { + guard let setting = self.viewModel.setting.value else { return } + + context.managedObjectContext.performChanges { + setting.update(triggerBy: who) + } + .sink { (_) in + }.store(in: &disposeBag) + } + + func updateAlert(title: String?, isOn: Bool) { + guard let title = title else { return } + guard let settings = self.viewModel.setting.value else { return } + guard let triggerBy = settings.triggerBy else { return } + + var values: [Bool?]? + if let alerts = settings.subscription?.first(where: { (s) -> Bool in + return s.type == settings.triggerBy + })?.alert { + var items = [Bool?]() + items.append(alerts.favourite) + items.append(alerts.follow) + items.append(alerts.reblog) + items.append(alerts.mention) + values = items + } + guard var alertValues = values else { return } + guard alertValues.count >= 4 else { return } + + switch title { + case L10n.Scene.Settings.Section.Notifications.favorites: + alertValues[0] = isOn + case L10n.Scene.Settings.Section.Notifications.follows: + alertValues[1] = isOn + case L10n.Scene.Settings.Section.Notifications.boosts: + alertValues[2] = isOn + case L10n.Scene.Settings.Section.Notifications.mentions: + alertValues[3] = isOn + default: break + } + self.viewModel.alertUpdate.send((triggerBy: triggerBy, values: alertValues)) + } +} + +extension SettingsViewController: SettingsAppearanceTableViewCellDelegate { + func settingsAppearanceCell(_ view: SettingsAppearanceTableViewCell, didSelect: SettingsItem.AppearanceMode) { + print("[SettingsViewController]: didSelect \(didSelect)") + guard let setting = self.viewModel.setting.value else { return } + + context.managedObjectContext.performChanges { + setting.update(appearance: didSelect.rawValue) + } + .sink { (_) in + // change light / dark mode + var overrideUserInterfaceStyle: UIUserInterfaceStyle! + switch didSelect { + case .automatic: + overrideUserInterfaceStyle = .unspecified + case .light: + overrideUserInterfaceStyle = .light + case .dark: + overrideUserInterfaceStyle = .dark + } + view.window?.overrideUserInterfaceStyle = overrideUserInterfaceStyle + }.store(in: &disposeBag) + } +} + +extension SettingsViewController: SettingsToggleCellDelegate { + func settingsToggleCell(_ cell: SettingsToggleTableViewCell, didChangeStatus: Bool) { + updateAlert(title: cell.data?.title, isOn: didChangeStatus) + } +} + +extension SettingsViewController: ActiveLabelDelegate { + func activeLabel(_ activeLabel: ActiveLabel, didSelectActiveEntity entity: ActiveEntity) { + coordinator.present( + scene: .webview(url: URL(string: "https://github.com/tootsuite/mastodon")!), + from: self, + transition: .modal(animated: true, completion: nil)) + } +} + +extension SettingsViewController { + static func updateOverrideUserInterfaceStyle(window: UIWindow?) { + guard let box = AppContext.shared.authenticationService.activeMastodonAuthenticationBox.value else { + return + } + + guard let setting: Setting? = { + let domain = box.domain + let request = Setting.sortedFetchRequest + request.predicate = Setting.predicate(domain: domain) + request.fetchLimit = 1 + request.returnsObjectsAsFaults = false + do { + return try AppContext.shared.managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + }() else { return } + + guard let didSelect = SettingsItem.AppearanceMode(rawValue: setting?.appearance ?? "") else { + return + } + + var overrideUserInterfaceStyle: UIUserInterfaceStyle! + switch didSelect { + case .automatic: + overrideUserInterfaceStyle = .unspecified + case .light: + overrideUserInterfaceStyle = .light + case .dark: + overrideUserInterfaceStyle = .dark + } + window?.overrideUserInterfaceStyle = overrideUserInterfaceStyle + } +} + +#if canImport(SwiftUI) && DEBUG +import SwiftUI + +struct SettingsViewController_Previews: PreviewProvider { + + static var previews: some View { + Group { + UIViewControllerPreview { () -> UIViewController in + return SettingsViewController() + } + .previewLayout(.fixed(width: 390, height: 844)) + } + } + +} + +#endif diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift new file mode 100644 index 000000000..1f5bf4e4f --- /dev/null +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -0,0 +1,295 @@ +// +// SettingsViewModel.swift +// Mastodon +// +// Created by ihugo on 2021/4/7. +// + +import Combine +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import UIKit +import os.log + +class SettingsViewModel: NSObject, NeedsDependency { + // confirm set only once + weak var context: AppContext! { willSet { precondition(context == nil) } } + weak var coordinator: SceneCoordinator! { willSet { precondition(coordinator == nil) } } + + var dataSource: UITableViewDiffableDataSource! + var disposeBag = Set() + let viewDidLoad = PassthroughSubject() + lazy var fetchResultsController: NSFetchedResultsController = { + let fetchRequest = Setting.sortedFetchRequest + if let box = + self.context.authenticationService.activeMastodonAuthenticationBox.value { + let domain = box.domain + fetchRequest.predicate = Setting.predicate(domain: domain) + } + + fetchRequest.fetchLimit = 1 + fetchRequest.returnsObjectsAsFaults = false + let controller = NSFetchedResultsController( + fetchRequest: fetchRequest, + managedObjectContext: context.managedObjectContext, + sectionNameKeyPath: nil, + cacheName: nil + ) + controller.delegate = self + return controller + }() + let setting = CurrentValueSubject(nil) + + /// trigger when + /// - init alerts + /// - change subscription status everytime + let alertUpdate = PassthroughSubject<(triggerBy: String, values: [Bool?]), Never>() + + lazy var notificationDefaultValue: [String: [Bool?]] = { + let followerSwitchItems: [Bool?] = [true, nil, true, true] + let anyoneSwitchItems: [Bool?] = [true, true, true, true] + let noOneSwitchItems: [Bool?] = [nil, nil, nil, nil] + let followSwitchItems: [Bool?] = [true, true, true, true] + + let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone + let follower = L10n.Scene.Settings.Section.Notifications.Trigger.follower + let follow = L10n.Scene.Settings.Section.Notifications.Trigger.follow + let noOne = L10n.Scene.Settings.Section.Notifications.Trigger.noOne + return [anyone: anyoneSwitchItems, + follower: followerSwitchItems, + follow: followSwitchItems, + noOne: noOneSwitchItems] + }() + + struct Input { + } + + struct Output { + } + + init(context: AppContext, coordinator: SceneCoordinator) { + self.context = context + self.coordinator = coordinator + + super.init() + } + + func transform(input: Input?) -> Output? { + //guard let input = input else { return nil } + + // build data for table view + buildDataSource() + + // request subsription data for updating or initialization + requestSubscription() + + typealias SubscriptionResponse = Mastodon.Response.Content + alertUpdate + .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) + .flatMap { [weak self] (arg) -> AnyPublisher in + let (triggerBy, values) = arg + guard let self = self else { + return Empty().eraseToAnyPublisher() + } + guard let activeMastodonAuthenticationBox = + self.context.authenticationService.activeMastodonAuthenticationBox.value else { + return Empty().eraseToAnyPublisher() + } + guard values.count >= 4 else { + return Empty().eraseToAnyPublisher() + } + + typealias Query = Mastodon.API.Notification.CreateSubscriptionQuery + let domain = activeMastodonAuthenticationBox.domain + return self.context.apiService.changeSubscription( + domain: domain, + mastodonAuthenticationBox: activeMastodonAuthenticationBox, + query: Query(favourite: values[0], follow: values[1], reblog: values[2], mention: values[3], poll: nil), + triggerBy: triggerBy) + } + .sink { _ in + } receiveValue: { (subscription) in + } + .store(in: &disposeBag) + + + do { + try fetchResultsController.performFetch() + setting.value = fetchResultsController.fetchedObjects?.first + } catch { + assertionFailure(error.localizedDescription) + } + return nil + } + + // MARK: - Private methods + fileprivate func processDataSource(_ settings: Setting?) { + var snapshot = NSDiffableDataSourceSnapshot() + + // appearance + let appearnceMode = SettingsItem.AppearanceMode(rawValue: settings?.appearance ?? "") ?? .automatic + let appearanceItem = SettingsItem.apperance(item: appearnceMode) + let appearance = SettingsSection.apperance(title: L10n.Scene.Settings.Section.Appearance.title, selectedMode:appearanceItem) + snapshot.appendSections([appearance]) + snapshot.appendItems([appearanceItem]) + + // notifications + var switches: [Bool?]? + if let alerts = settings?.subscription?.first(where: { (s) -> Bool in + return s.type == settings?.triggerBy + })?.alert { + var items = [Bool?]() + items.append(alerts.favourite) + items.append(alerts.follow) + items.append(alerts.reblog) + items.append(alerts.mention) + switches = items + } else if let triggerBy = settings?.triggerBy, + let values = self.notificationDefaultValue[triggerBy] { + switches = values + self.alertUpdate.send((triggerBy: triggerBy, values: values)) + } else { + // fallback a default value + let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone + switches = self.notificationDefaultValue[anyone] + } + let notifications = [L10n.Scene.Settings.Section.Notifications.favorites, + L10n.Scene.Settings.Section.Notifications.follows, + L10n.Scene.Settings.Section.Notifications.boosts, + L10n.Scene.Settings.Section.Notifications.mentions,] + var notificationItems = [SettingsItem]() + for (i, noti) in notifications.enumerated() { + var value: Bool? = nil + if let switches = switches, i < switches.count { + value = switches[i] + } + + let item = SettingsItem.notification(item: SettingsItem.NotificationSwitch(title: noti, isOn: value == true, enable: value != nil)) + notificationItems.append(item) + } + let notificationSection = SettingsSection.notifications(title: L10n.Scene.Settings.Section.Notifications.title, items: notificationItems) + snapshot.appendSections([notificationSection]) + snapshot.appendItems(notificationItems) + + // boring zone + let boringLinks = [L10n.Scene.Settings.Section.BoringZone.terms, + L10n.Scene.Settings.Section.BoringZone.privacy] + var boringLinkItems = [SettingsItem]() + for l in boringLinks { + // FIXME: update color in both light and dark mode + let item = SettingsItem.boringZone(item: SettingsItem.Link(title: l, color: .systemBlue)) + boringLinkItems.append(item) + } + let boringSection = SettingsSection.boringZone(title: L10n.Scene.Settings.Section.BoringZone.title, items: boringLinkItems) + snapshot.appendSections([boringSection]) + snapshot.appendItems(boringLinkItems) + + // spicy zone + let spicyLinks = [L10n.Scene.Settings.Section.SpicyZone.clear, + L10n.Scene.Settings.Section.SpicyZone.signOut] + var spicyLinkItems = [SettingsItem]() + for l in spicyLinks { + // FIXME: update color in both light and dark mode + let item = SettingsItem.boringZone(item: SettingsItem.Link(title: l, color: .systemRed)) + spicyLinkItems.append(item) + } + let spicySection = SettingsSection.boringZone(title: L10n.Scene.Settings.Section.SpicyZone.title, items: spicyLinkItems) + snapshot.appendSections([spicySection]) + snapshot.appendItems(spicyLinkItems) + + self.dataSource.apply(snapshot, animatingDifferences: false) + } + + private func buildDataSource() { + setting.filter({ $0 != nil }).sink { [weak self] (settings) in + guard let self = self else { return } + self.processDataSource(settings) + } + .store(in: &disposeBag) + + // init with no subscription for notification + let settings: Setting? = nil + self.processDataSource(settings) + } + + private func requestSubscription() { + // request subscription of notifications + typealias SubscriptionResponse = Mastodon.Response.Content + viewDidLoad.flatMap { [weak self] (_) -> AnyPublisher in + guard let self = self, + let activeMastodonAuthenticationBox = + self.context.authenticationService.activeMastodonAuthenticationBox.value else { + return Empty().eraseToAnyPublisher() + } + + let domain = activeMastodonAuthenticationBox.domain + return self.context.apiService.subscription( + domain: domain, + mastodonAuthenticationBox: activeMastodonAuthenticationBox) + } + .sink { _ in + } receiveValue: { (subscription) in + } + .store(in: &disposeBag) + } +} + +// MARK: - NSFetchedResultsControllerDelegate +extension SettingsViewModel: NSFetchedResultsControllerDelegate { + + func controllerWillChangeContent(_ controller: NSFetchedResultsController) { + os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + + func controllerDidChangeContent(_ controller: NSFetchedResultsController) { + guard controller === fetchResultsController else { + return + } + + setting.value = fetchResultsController.fetchedObjects?.first + } + +} + +enum SettingsSection: Hashable { + case apperance(title: String, selectedMode: SettingsItem) + case notifications(title: String, items: [SettingsItem]) + case boringZone(title: String, items: [SettingsItem]) + case spicyZone(tilte: String, items: [SettingsItem]) + + var title: String { + switch self { + case .apperance(let title, _), + .notifications(let title, _), + .boringZone(let title, _), + .spicyZone(let title, _): + return title + } + } +} + +enum SettingsItem: Hashable { + enum AppearanceMode: String { + case automatic + case light + case dark + } + + struct NotificationSwitch: Hashable { + let title: String + let isOn: Bool + let enable: Bool + } + + struct Link: Hashable { + let title: String + let color: UIColor + } + + case apperance(item: AppearanceMode) + case notification(item: NotificationSwitch) + case boringZone(item: Link) + case spicyZone(item: Link) +} diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift new file mode 100644 index 000000000..83932a62e --- /dev/null +++ b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift @@ -0,0 +1,207 @@ +// +// SettingsAppearanceTableViewCell.swift +// Mastodon +// +// Created by ihugo on 2021/4/8. +// + +import UIKit + +protocol SettingsAppearanceTableViewCellDelegate: class { + func settingsAppearanceCell(_ view: SettingsAppearanceTableViewCell, didSelect: SettingsItem.AppearanceMode) +} + +class AppearanceView: UIView { + lazy var imageView: UIImageView = { + let view = UIImageView() + return view + }() + lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .systemFont(ofSize: 12, weight: .regular) + label.textColor = Asset.Colors.Label.primary.color + label.textAlignment = .center + return label + }() + lazy var checkBox: UIButton = { + let button = UIButton() + button.isUserInteractionEnabled = false + button.setImage(UIImage(systemName: "circle"), for: .normal) + button.setImage(UIImage(systemName: "checkmark.circle.fill"), for: .selected) + button.imageView?.preferredSymbolConfiguration = UIImage.SymbolConfiguration(textStyle: .body) + button.imageView?.tintColor = Asset.Colors.lightSecondaryText.color + button.imageView?.contentMode = .scaleAspectFill + return button + }() + lazy var stackView: UIStackView = { + let view = UIStackView() + view.axis = .vertical + view.spacing = 10 + view.distribution = .equalSpacing + return view + }() + + var selected: Bool = false { + didSet { + checkBox.isSelected = selected + if selected { + checkBox.imageView?.tintColor = Asset.Colors.lightBrandBlue.color + } else { + checkBox.imageView?.tintColor = Asset.Colors.lightSecondaryText.color + } + } + } + + // MARK: - Methods + init(image: UIImage?, title: String) { + super.init(frame: .zero) + setupUI() + + imageView.image = image + titleLabel.text = title + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - Private methods + private func setupUI() { + stackView.addArrangedSubview(imageView) + stackView.addArrangedSubview(titleLabel) + stackView.addArrangedSubview(checkBox) + + addSubview(stackView) + translatesAutoresizingMaskIntoConstraints = false + stackView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + stackView.topAnchor.constraint(equalTo: self.topAnchor), + stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor), + stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor), + stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor), + imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 218.0 / 100.0), + ]) + } +} + +class SettingsAppearanceTableViewCell: UITableViewCell { + weak var delegate: SettingsAppearanceTableViewCellDelegate? + var appearance: SettingsItem.AppearanceMode = .automatic { + didSet { + guard let delegate = self.delegate else { return } + delegate.settingsAppearanceCell(self, didSelect: appearance) + } + } + + lazy var stackView: UIStackView = { + let view = UIStackView() + view.isLayoutMarginsRelativeArrangement = true + view.layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20) + view.axis = .horizontal + view.distribution = .fillEqually + view.spacing = 18 + view.translatesAutoresizingMaskIntoConstraints = false + return view + }() + + let automatic = AppearanceView(image: Asset.Settings.appearanceAutomatic.image, + title: L10n.Scene.Settings.Section.Appearance.automatic) + let light = AppearanceView(image: Asset.Settings.appearanceLight.image, + title: L10n.Scene.Settings.Section.Appearance.light) + let dark = AppearanceView(image: Asset.Settings.appearanceDark.image, + title: L10n.Scene.Settings.Section.Appearance.dark) + + lazy var automaticTap: UITapGestureRecognizer = { + let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + tapGestureRecognizer.addTarget(self, action: #selector(appearanceDidTap(sender:))) + return tapGestureRecognizer + }() + + lazy var lightTap: UITapGestureRecognizer = { + let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + tapGestureRecognizer.addTarget(self, action: #selector(appearanceDidTap(sender:))) + return tapGestureRecognizer + }() + + lazy var darkTap: UITapGestureRecognizer = { + let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + tapGestureRecognizer.addTarget(self, action: #selector(appearanceDidTap(sender:))) + return tapGestureRecognizer + }() + + // MARK: - Methods + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + + // remove seperator line in section of group tableview + for subview in self.subviews { + if subview != self.contentView && subview.frame.width == self.frame.width { + subview.removeFromSuperview() + } + } + } + + func update(with data: SettingsItem.AppearanceMode, delegate: SettingsAppearanceTableViewCellDelegate?) { + appearance = data + self.delegate = delegate + + automatic.selected = false + light.selected = false + dark.selected = false + + switch data { + case .automatic: + automatic.selected = true + case .light: + light.selected = true + case .dark: + dark.selected = true + } + } + + // MARK: Private methods + private func setupUI() { + backgroundColor = Asset.Colors.Background.systemGroupedBackground.color + selectionStyle = .none + contentView.addSubview(stackView) + + stackView.addArrangedSubview(automatic) + stackView.addArrangedSubview(light) + stackView.addArrangedSubview(dark) + + automatic.addGestureRecognizer(automaticTap) + light.addGestureRecognizer(lightTap) + dark.addGestureRecognizer(darkTap) + + NSLayoutConstraint.activate([ + stackView.topAnchor.constraint(equalTo: contentView.topAnchor), + stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + ]) + } + + // MARK: - Actions + @objc func appearanceDidTap(sender: UIGestureRecognizer) { + if sender == automaticTap { + appearance = .automatic + } + + if sender == lightTap { + appearance = .light + } + + if sender == darkTap { + appearance = .dark + } + } +} diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsLinkTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsLinkTableViewCell.swift new file mode 100644 index 000000000..b5d0306d4 --- /dev/null +++ b/Mastodon/Scene/Settings/View/Cell/SettingsLinkTableViewCell.swift @@ -0,0 +1,31 @@ +// +// SettingsLinkTableViewCell.swift +// Mastodon +// +// Created by ihugo on 2021/4/8. +// + +import UIKit + +class SettingsLinkTableViewCell: UITableViewCell { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + selectionStyle = .none + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func setHighlighted(_ highlighted: Bool, animated: Bool) { + super.setHighlighted(highlighted, animated: animated) + textLabel?.alpha = highlighted ? 0.6 : 1.0 + } + + // MARK: - Methods + func update(with data: SettingsItem.Link) { + textLabel?.text = data.title + textLabel?.textColor = data.color + } +} diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift new file mode 100644 index 000000000..374e05d6d --- /dev/null +++ b/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift @@ -0,0 +1,70 @@ +// +// SettingsToggleTableViewCell.swift +// Mastodon +// +// Created by ihugo on 2021/4/8. +// + +import UIKit + +protocol SettingsToggleCellDelegate: class { + func settingsToggleCell(_ cell: SettingsToggleTableViewCell, didChangeStatus: Bool) +} + +class SettingsToggleTableViewCell: UITableViewCell { + lazy var switchButton: UISwitch = { + let view = UISwitch(frame:.zero) + view.translatesAutoresizingMaskIntoConstraints = false + return view + }() + + var data: SettingsItem.NotificationSwitch? + weak var delegate: SettingsToggleCellDelegate? + + // MARK: - Methods + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: .default, reuseIdentifier: reuseIdentifier) + setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func update(with data: SettingsItem.NotificationSwitch, delegate: SettingsToggleCellDelegate?) { + self.delegate = delegate + self.data = data + textLabel?.text = data.title + switchButton.isOn = data.isOn + setup(enable: data.enable) + } + + // MARK: Actions + @objc func valueDidChange(sender: UISwitch) { + guard let delegate = delegate else { return } + delegate.settingsToggleCell(self, didChangeStatus: sender.isOn) + } + + // MARK: Private methods + private func setupUI() { + selectionStyle = .none + textLabel?.font = .systemFont(ofSize: 17, weight: .regular) + contentView.addSubview(switchButton) + + NSLayoutConstraint.activate([ + switchButton.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + switchButton.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), + ]) + + switchButton.addTarget(self, action: #selector(valueDidChange(sender:)), for: .valueChanged) + } + + private func setup(enable: Bool) { + if enable { + textLabel?.textColor = Asset.Colors.Label.primary.color + } else { + textLabel?.textColor = Asset.Colors.Label.secondary.color + } + switchButton.isEnabled = enable + } +} diff --git a/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift b/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift new file mode 100644 index 000000000..67dff9822 --- /dev/null +++ b/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift @@ -0,0 +1,54 @@ +// +// SettingsSectionHeader.swift +// Mastodon +// +// Created by ihugo on 2021/4/8. +// + +import UIKit + +/// section header which supports add a custom view blelow the title +class SettingsSectionHeader: UIView { + lazy var titleLabel: UILabel = { + let label = UILabel() + label.translatesAutoresizingMaskIntoConstraints = false + label.font = .systemFont(ofSize: 13, weight: .regular) + label.textColor = Asset.Colors.Label.secondary.color + return label + }() + + lazy var stackView: UIStackView = { + let view = UIStackView() + view.translatesAutoresizingMaskIntoConstraints = false + view.isLayoutMarginsRelativeArrangement = true + view.layoutMargins = UIEdgeInsets(top: 40, left: 12, bottom: 10, right: 12) + view.axis = .vertical + return view + }() + + init(frame: CGRect, customView: UIView? = nil) { + super.init(frame: frame) + + backgroundColor = Asset.Colors.Background.systemGroupedBackground.color + stackView.addArrangedSubview(titleLabel) + if let view = customView { + stackView.addArrangedSubview(view) + } + + addSubview(stackView) + NSLayoutConstraint.activate([ + stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor), + stackView.trailingAnchor.constraint(lessThanOrEqualTo: self.trailingAnchor), + stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor), + stackView.topAnchor.constraint(equalTo: self.topAnchor), + ]) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func update(title: String?) { + titleLabel.text = title?.uppercased() + } +} diff --git a/Mastodon/Service/APIService/APIService+Notifications.swift b/Mastodon/Service/APIService/APIService+Notifications.swift new file mode 100644 index 000000000..9bbcd180f --- /dev/null +++ b/Mastodon/Service/APIService/APIService+Notifications.swift @@ -0,0 +1,66 @@ +// +// APIService+Settings.swift +// Mastodon +// +// Created by ihugo on 2021/4/9. +// + +import Foundation +import MastodonSDK +import Combine + +extension APIService { + + func subscription( + domain: String, + mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox + ) -> AnyPublisher, Error> { + let authorization = mastodonAuthenticationBox.userAuthorization + + + return Mastodon.API.Notification.subscription( + session: session, + domain: domain, + authorization: authorization) + .flatMap { response -> AnyPublisher, Error> in + return self.backgroundManagedObjectContext.performChanges { + _ = APIService.CoreData.createOrMergeSubscription( + into: self.backgroundManagedObjectContext, + entity: response.value, + domain: domain) + } + .setFailureType(to: Error.self) + .map { _ in return response } + .eraseToAnyPublisher() + }.eraseToAnyPublisher() + } + + func changeSubscription( + domain: String, + mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox, + query: Mastodon.API.Notification.CreateSubscriptionQuery, + triggerBy: String + ) -> AnyPublisher, Error> { + let authorization = mastodonAuthenticationBox.userAuthorization + + return Mastodon.API.Notification.createSubscription( + session: session, + domain: domain, + authorization: authorization, + query: query + ) + .flatMap { response -> AnyPublisher, Error> in + return self.backgroundManagedObjectContext.performChanges { + _ = APIService.CoreData.createOrMergeSubscription( + into: self.backgroundManagedObjectContext, + entity: response.value, + domain: domain, + triggerBy: triggerBy) + } + .setFailureType(to: Error.self) + .map { _ in return response } + .eraseToAnyPublisher() + }.eraseToAnyPublisher() + } +} + diff --git a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift new file mode 100644 index 000000000..b3cd004b0 --- /dev/null +++ b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift @@ -0,0 +1,129 @@ +// +// APIService+CoreData+Notification.swift +// Mastodon +// +// Created by ihugo on 2021/4/11. +// + +import os.log +import Foundation +import CoreData +import CoreDataStack +import MastodonSDK + +extension APIService.CoreData { + + static func createOrMergeSetting( + into managedObjectContext: NSManagedObjectContext, + domain: String, + property: Setting.Property + ) -> (Subscription: Setting, isCreated: Bool) { + let oldSetting: Setting? = { + let request = Setting.sortedFetchRequest + request.predicate = Setting.predicate(domain: property.domain) + request.fetchLimit = 1 + request.returnsObjectsAsFaults = false + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + }() + + if let oldSetting = oldSetting { + return (oldSetting, false) + } else { + let setting = Setting.insert( + into: managedObjectContext, + property: property) + return (setting, true) + } + } + + static func createOrMergeSubscription( + into managedObjectContext: NSManagedObjectContext, + entity: Mastodon.Entity.Subscription, + domain: String, + triggerBy: String? = nil + ) -> (Subscription: Subscription, isCreated: Bool) { + // create setting entity if possible + let oldSetting: Setting? = { + let request = Setting.sortedFetchRequest + request.predicate = Setting.predicate(domain: domain) + request.fetchLimit = 1 + request.returnsObjectsAsFaults = false + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + }() + var setting: Setting! + if let oldSetting = oldSetting { + setting = oldSetting + } else { + let property = Setting.Property( + appearance: "automatic", + triggerBy: "anyone", + domain: domain) + (setting, _) = createOrMergeSetting( + into: managedObjectContext, + domain: domain, + property: property) + } + + let oldSubscription: Subscription? = { + let request = Subscription.sortedFetchRequest + request.predicate = Subscription.predicate(id: entity.id) + request.fetchLimit = 1 + request.returnsObjectsAsFaults = false + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + }() + + let property = Subscription.Property( + endpoint: entity.endpoint, + id: entity.id, + serverKey: entity.serverKey, + type: triggerBy ?? setting.triggerBy ?? "") + let alertEntity = entity.alerts + let alert = SubscriptionAlerts.Property( + favourite: alertEntity.favourite, + follow: alertEntity.follow, + mention: alertEntity.mention, + poll: alertEntity.poll, + reblog: alertEntity.reblog) + if let oldSubscription = oldSubscription { + oldSubscription.updateIfNeed(property: property) + if nil == oldSubscription.alert { + oldSubscription.alert = SubscriptionAlerts.insert( + into: managedObjectContext, + property: alert) + } else { + oldSubscription.alert?.updateIfNeed(property: alert) + } + + if oldSubscription.alert?.hasChanges == true { + // don't expand subscription if add existed subscription + setting.mutableSetValue(forKey: #keyPath(Setting.subscription)).add(oldSubscription) + } + return (oldSubscription, false) + } else { + let subscription = Subscription.insert( + into: managedObjectContext, + property: property + ) + subscription.alert = SubscriptionAlerts.insert( + into: managedObjectContext, + property: alert) + setting.mutableSetValue(forKey: #keyPath(Setting.subscription)).add(subscription) + return (subscription, true) + } + } +} diff --git a/Mastodon/Supporting Files/SceneDelegate.swift b/Mastodon/Supporting Files/SceneDelegate.swift index e13395ccd..0f5e2bd59 100644 --- a/Mastodon/Supporting Files/SceneDelegate.swift +++ b/Mastodon/Supporting Files/SceneDelegate.swift @@ -27,6 +27,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { sceneCoordinator.setup() sceneCoordinator.setupOnboardingIfNeeds(animated: false) window.makeKeyAndVisible() + + // update `overrideUserInterfaceStyle` with current setting + SettingsViewController.updateOverrideUserInterfaceStyle(window: window) } func sceneDidDisconnect(_ scene: UIScene) { diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift new file mode 100644 index 000000000..555dd22d5 --- /dev/null +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift @@ -0,0 +1,135 @@ +// +// File.swift +// +// +// Created by ihugo on 2021/4/9. +// + +import Foundation +import Combine + +extension Mastodon.API.Notification { + + static func pushEndpointURL(domain: String) -> URL { + return Mastodon.API.endpointURL(domain: domain).appendingPathComponent("push/subscription") + } + + /// Get current subscription + /// + /// Using this endpoint to get current subscription + /// + /// - Since: 2.4.0 + /// - Version: 3.3.0 + /// # Last Update + /// 2021/4/9 + /// # Reference + /// [Document](https://docs.joinmastodon.org/methods/notifications/push/) + /// - Parameters: + /// - session: `URLSession` + /// - domain: Mastodon instance domain. e.g. "example.com" + /// - authorization: User token. Could be nil if status is public + /// - Returns: `AnyPublisher` contains `Poll` nested in the response + public static func subscription( + session: URLSession, + domain: String, + authorization: Mastodon.API.OAuth.Authorization? + ) -> AnyPublisher, Error> { + let request = Mastodon.API.get( + url: pushEndpointURL(domain: domain), + query: nil, + authorization: authorization + ) + return session.dataTaskPublisher(for: request) + .tryMap { data, response in + let value = try Mastodon.API.decode(type: Mastodon.Entity.Subscription.self, from: data, response: response) + return Mastodon.Response.Content(value: value, response: response) + } + .eraseToAnyPublisher() + } + + /// Change types of notifications + /// + /// Using this endpoint to change types of notifications + /// + /// - Since: 2.4.0 + /// - Version: 3.3.0 + /// # Last Update + /// 2021/4/9 + /// # Reference + /// [Document](https://docs.joinmastodon.org/methods/notifications/push/) + /// - Parameters: + /// - session: `URLSession` + /// - domain: Mastodon instance domain. e.g. "example.com" + /// - authorization: User token. Could be nil if status is public + /// - Returns: `AnyPublisher` contains `Poll` nested in the response + public static func createSubscription( + session: URLSession, + domain: String, + authorization: Mastodon.API.OAuth.Authorization?, + query: CreateSubscriptionQuery + ) -> AnyPublisher, Error> { + let request = Mastodon.API.post( + url: pushEndpointURL(domain: domain), + query: query, + authorization: authorization + ) + return session.dataTaskPublisher(for: request) + .tryMap { data, response in + let value = try Mastodon.API.decode(type: Mastodon.Entity.Subscription.self, from: data, response: response) + return Mastodon.Response.Content(value: value, response: response) + } + .eraseToAnyPublisher() + } +} + +extension Mastodon.API.Notification { + public struct CreateSubscriptionQuery: PostQuery { + var queryItems: [URLQueryItem]? + var contentType: String? + var body: Data? + + let follow: Bool? + let favourite: Bool? + let reblog: Bool? + let mention: Bool? + let poll: Bool? + + // iTODO: missing parameters + // subscription[endpoint] + // subscription[keys][p256dh] + // subscription[keys][auth] + public init(favourite: Bool?, + follow: Bool?, + reblog: Bool?, + mention: Bool?, + poll: Bool?) { + self.follow = follow + self.favourite = favourite + self.reblog = reblog + self.mention = mention + self.poll = poll + + queryItems = [URLQueryItem]() + + if let followValue = follow?.queryItemValue { + let followItem = URLQueryItem(name: "data[alerts][follow]", value: followValue) + queryItems?.append(followItem) + } + + if let favouriteValue = favourite?.queryItemValue { + let favouriteItem = URLQueryItem(name: "data[alerts][favourite]", value: favouriteValue) + queryItems?.append(favouriteItem) + } + + if let reblogValue = reblog?.queryItemValue { + let reblogItem = URLQueryItem(name: "data[alerts][reblog]", value: reblogValue) + queryItems?.append(reblogItem) + } + + if let mentionValue = mention?.queryItemValue { + let mentionItem = URLQueryItem(name: "data[alerts][mention]", value: mentionValue) + queryItems?.append(mentionItem) + } + } + } +} diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift index 2fdb9b346..d04071e9d 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift @@ -115,6 +115,7 @@ extension Mastodon.API { public enum Trends { } public enum Suggestions { } public enum Notifications { } + public enum Notification { } } extension Mastodon.API { diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift new file mode 100644 index 000000000..24bb2c189 --- /dev/null +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift @@ -0,0 +1,42 @@ +// +// File.swift +// +// +// Created by ihugo on 2021/4/9. +// + +import Foundation + + +extension Mastodon.Entity { + /// Subscription + /// + /// - Since: 2.4.0 + /// - Version: 3.3.0 + /// # Last Update + /// 2021/4/9 + /// # Reference + /// [Document](https://docs.joinmastodon.org/entities/pushsubscription/) + public struct Subscription: Codable { + // Base + public let id: String + public let endpoint: String + public let alerts: Alerts + public let serverKey: String + + enum CodingKeys: String, CodingKey { + case id + case endpoint + case serverKey = "server_key" + case alerts + } + + public struct Alerts: Codable { + public let follow: Bool + public let favourite: Bool + public let reblog: Bool + public let mention: Bool + public let poll: Bool + } + } +} diff --git a/Podfile.lock b/Podfile.lock index 4f553c4e3..cc8600c7e 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -25,4 +25,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 30e8e3a555251a512e7b5e91183747152f126e7a -COCOAPODS: 1.10.1 +COCOAPODS: 1.10.0 diff --git a/SubscriptionAlerts.swift b/SubscriptionAlerts.swift new file mode 100644 index 000000000..928a777f5 --- /dev/null +++ b/SubscriptionAlerts.swift @@ -0,0 +1,131 @@ +// +// PushSubscriptionAlerts+CoreDataClass.swift +// CoreDataStack +// +// Created by ihugo on 2021/4/9. +// +// + +import Foundation +import CoreData + +@objc(SubscriptionAlerts) +public final class SubscriptionAlerts: NSManagedObject { + @NSManaged public var follow: Bool + @NSManaged public var favourite: Bool + @NSManaged public var reblog: Bool + @NSManaged public var mention: Bool + @NSManaged public var poll: Bool + + @NSManaged public private(set) var createdAt: Date + @NSManaged public private(set) var updatedAt: Date + + // MARK: - relationships + @NSManaged public var pushSubscription: Subscription? +} + +public extension SubscriptionAlerts { + override func awakeFromInsert() { + super.awakeFromInsert() + setPrimitiveValue(Date(), forKey: #keyPath(SubscriptionAlerts.createdAt)) + } + + func didUpdate(at networkDate: Date) { + self.updatedAt = networkDate + } + + @discardableResult + static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> SubscriptionAlerts { + let alerts: SubscriptionAlerts = context.insertObject() + alerts.favourite = property.favourite + alerts.follow = property.follow + alerts.mention = property.mention + alerts.poll = property.poll + alerts.reblog = property.reblog + return alerts + } + + func update(favourite: Bool) { + guard self.favourite != favourite else { return } + self.favourite = favourite + + didUpdate(at: Date()) + } + + func update(follow: Bool) { + guard self.follow != follow else { return } + self.follow = follow + + didUpdate(at: Date()) + } + + func update(mention: Bool) { + guard self.mention != mention else { return } + self.mention = mention + + didUpdate(at: Date()) + } + + func update(poll: Bool) { + guard self.poll != poll else { return } + self.poll = poll + + didUpdate(at: Date()) + } + + func update(reblog: Bool) { + guard self.reblog != reblog else { return } + self.reblog = reblog + + didUpdate(at: Date()) + } +} + +public extension SubscriptionAlerts { + struct Property { + public let favourite: Bool + public let follow: Bool + public let mention: Bool + public let poll: Bool + public let reblog: Bool + + public init(favourite: Bool?, follow: Bool?, mention: Bool?, poll: Bool?, reblog: Bool?) { + self.favourite = favourite ?? true + self.follow = follow ?? true + self.mention = mention ?? true + self.poll = poll ?? true + self.reblog = reblog ?? true + } + } + + func updateIfNeed(property: Property) { + if self.follow != property.follow { + self.follow = property.follow + } + + if self.favourite != property.favourite { + self.favourite = property.favourite + } + + if self.reblog != property.reblog { + self.reblog = property.reblog + } + + if self.mention != property.mention { + self.mention = property.mention + } + + if self.poll != property.poll { + self.poll = property.poll + } + } +} + +extension SubscriptionAlerts: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \SubscriptionAlerts.createdAt, ascending: false)] + } +} From b2b8b707077cd2b90ad1408dec259a54c213d222 Mon Sep 17 00:00:00 2001 From: ihugo Date: Mon, 12 Apr 2021 00:20:40 +0800 Subject: [PATCH 02/37] fix: signout does not work --- Mastodon/Scene/Settings/SettingsViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 95bfc8aa1..8da4faeaf 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -283,7 +283,7 @@ extension SettingsViewController: UITableViewDelegate { // logout - if indexPath.section == 3, indexPath.row == 2 { + if indexPath.section == 3, indexPath.row == 1 { signout() } } From 23a06f04ab6300280dd3b2c3cb068086a74b44d7 Mon Sep 17 00:00:00 2001 From: ihugo Date: Mon, 12 Apr 2021 21:42:43 +0800 Subject: [PATCH 03/37] fixed: subscription API call --- CoreDataStack/Entity/Subscription.swift | 1 + .../Settings/SettingsViewController.swift | 39 +++-- .../Scene/Settings/SettingsViewModel.swift | 156 ++++++++++++------ .../SettingsAppearanceTableViewCell.swift | 10 +- .../APIService/APIService+Notifications.swift | 28 ++++ .../APIService+CoreData+Notification.swift | 16 +- .../MastodonSDK/API/Mastodon+API+Push.swift | 107 +++++++++--- .../Entity/Mastodon+Entity+Subscription.swift | 45 ++++- SubscriptionAlerts.swift | 42 ++--- 9 files changed, 320 insertions(+), 124 deletions(-) diff --git a/CoreDataStack/Entity/Subscription.swift b/CoreDataStack/Entity/Subscription.swift index 5d65129e2..7d7a74570 100644 --- a/CoreDataStack/Entity/Subscription.swift +++ b/CoreDataStack/Entity/Subscription.swift @@ -50,6 +50,7 @@ public extension Subscription { setting.id = property.id setting.endpoint = property.endpoint setting.serverKey = property.serverKey + setting.type = property.type return setting } diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 8da4faeaf..73dc43df4 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -12,6 +12,8 @@ import ActiveLabel import CoreData import CoreDataStack +// iTODO: when to ask permission to Use Notifications + class SettingsViewController: UIViewController, NeedsDependency { weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } @@ -26,7 +28,7 @@ class SettingsViewController: UIViewController, NeedsDependency { let follow = L10n.Scene.Settings.Section.Notifications.Trigger.follow let noOne = L10n.Scene.Settings.Section.Notifications.Trigger.noOne let menu = UIMenu( - image: UIImage(systemName: "escape"), + image: nil, identifier: nil, options: .displayInline, children: [ @@ -173,7 +175,9 @@ class SettingsViewController: UIViewController, NeedsDependency { } private func setupTableView() { - viewModel.dataSource = UITableViewDiffableDataSource(tableView: tableView, cellProvider: { (tableView, indexPath, item) -> UITableViewCell? in + viewModel.dataSource = UITableViewDiffableDataSource(tableView: tableView, cellProvider: { [weak self] (tableView, indexPath, item) -> UITableViewCell? in + guard let self = self else { return nil } + switch item { case .apperance(let item): guard let cell = tableView.dequeueReusableCell(withIdentifier: "SettingsAppearanceTableViewCell") as? SettingsAppearanceTableViewCell else { @@ -227,6 +231,10 @@ class SettingsViewController: UIViewController, NeedsDependency { .store(in: &disposeBag) } + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", ((#file as NSString).lastPathComponent), #line, #function) + } + // Mark: - Actions @objc func doneButtonDidClick() { dismiss(animated: true, completion: nil) @@ -306,38 +314,39 @@ extension SettingsViewController { guard let settings = self.viewModel.setting.value else { return } guard let triggerBy = settings.triggerBy else { return } - var values: [Bool?]? - if let alerts = settings.subscription?.first(where: { (s) -> Bool in + guard let alerts = settings.subscription?.first(where: { (s) -> Bool in return s.type == settings.triggerBy - })?.alert { - var items = [Bool?]() - items.append(alerts.favourite) - items.append(alerts.follow) - items.append(alerts.reblog) - items.append(alerts.mention) - values = items + })?.alert else { + return } - guard var alertValues = values else { return } - guard alertValues.count >= 4 else { return } + var alertValues = [Bool?]() + alertValues.append(alerts.favourite?.boolValue) + alertValues.append(alerts.follow?.boolValue) + alertValues.append(alerts.reblog?.boolValue) + alertValues.append(alerts.mention?.boolValue) + // need to update `alerts` to make update API with correct parameter switch title { case L10n.Scene.Settings.Section.Notifications.favorites: alertValues[0] = isOn + alerts.favourite = NSNumber(booleanLiteral: isOn) case L10n.Scene.Settings.Section.Notifications.follows: alertValues[1] = isOn + alerts.follow = NSNumber(booleanLiteral: isOn) case L10n.Scene.Settings.Section.Notifications.boosts: alertValues[2] = isOn + alerts.reblog = NSNumber(booleanLiteral: isOn) case L10n.Scene.Settings.Section.Notifications.mentions: alertValues[3] = isOn + alerts.mention = NSNumber(booleanLiteral: isOn) default: break } - self.viewModel.alertUpdate.send((triggerBy: triggerBy, values: alertValues)) + self.viewModel.updateSubscriptionSubject.send((triggerBy: triggerBy, values: alertValues)) } } extension SettingsViewController: SettingsAppearanceTableViewCellDelegate { func settingsAppearanceCell(_ view: SettingsAppearanceTableViewCell, didSelect: SettingsItem.AppearanceMode) { - print("[SettingsViewController]: didSelect \(didSelect)") guard let setting = self.viewModel.setting.value else { return } context.managedObjectContext.performChanges { diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index 1f5bf4e4f..6a817ffff 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -20,6 +20,9 @@ class SettingsViewModel: NSObject, NeedsDependency { var dataSource: UITableViewDiffableDataSource! var disposeBag = Set() + var updateDisposeBag = Set() + var createDisposeBag = Set() + let viewDidLoad = PassthroughSubject() lazy var fetchResultsController: NSFetchedResultsController = { let fetchRequest = Setting.sortedFetchRequest @@ -42,10 +45,14 @@ class SettingsViewModel: NSObject, NeedsDependency { }() let setting = CurrentValueSubject(nil) - /// trigger when - /// - init alerts - /// - change subscription status everytime - let alertUpdate = PassthroughSubject<(triggerBy: String, values: [Bool?]), Never>() + /// create a subscription when: + /// - does not has one + /// - does not find subscription for selected trigger when change trigger + let createSubscriptionSubject = PassthroughSubject<(triggerBy: String, values: [Bool?]), Never>() + + /// update a subscription when: + /// - change switch for specified alerts + let updateSubscriptionSubject = PassthroughSubject<(triggerBy: String, values: [Bool?]), Never>() lazy var notificationDefaultValue: [String: [Bool?]] = { let followerSwitchItems: [Bool?] = [true, nil, true, true] @@ -77,7 +84,85 @@ class SettingsViewModel: NSObject, NeedsDependency { } func transform(input: Input?) -> Output? { - //guard let input = input else { return nil } + typealias SubscriptionResponse = Mastodon.Response.Content + createSubscriptionSubject + .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) + .sink { _ in + } receiveValue: { [weak self] (arg) in + let (triggerBy, values) = arg + guard let self = self else { + return + } + guard let activeMastodonAuthenticationBox = + self.context.authenticationService.activeMastodonAuthenticationBox.value else { + return + } + guard values.count >= 4 else { + return + } + + self.createDisposeBag.removeAll() + typealias Query = Mastodon.API.Notification.CreateSubscriptionQuery + let domain = activeMastodonAuthenticationBox.domain + let query = Query( + endpoint: "http://www.google.com", + p256dh: "BLQELIDm-6b9Bl07YrEuXJ4BL_YBVQ0dvt9NQGGJxIQidJWHPNa9YrouvcQ9d7_MqzvGS9Alz60SZNCG3qfpk=", + auth: "4vQK-SvRAN5eo-8ASlrwA==", + favourite: values[0], + follow: values[1], + reblog: values[2], + mention: values[3], + poll: nil) + self.context.apiService.changeSubscription( + domain: domain, + mastodonAuthenticationBox: activeMastodonAuthenticationBox, + query: query, + triggerBy: triggerBy + ) + .sink { (_) in + } receiveValue: { (_) in + } + .store(in: &self.createDisposeBag) + } + .store(in: &disposeBag) + + updateSubscriptionSubject + .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) + .sink { _ in + } receiveValue: { [weak self] (arg) in + let (triggerBy, values) = arg + guard let self = self else { + return + } + guard let activeMastodonAuthenticationBox = + self.context.authenticationService.activeMastodonAuthenticationBox.value else { + return + } + guard values.count >= 4 else { + return + } + + self.updateDisposeBag.removeAll() + typealias Query = Mastodon.API.Notification.UpdateSubscriptionQuery + let domain = activeMastodonAuthenticationBox.domain + let query = Query( + favourite: values[0], + follow: values[1], + reblog: values[2], + mention: values[3], + poll: nil) + self.context.apiService.updateSubscription( + domain: domain, + mastodonAuthenticationBox: activeMastodonAuthenticationBox, + query: query, + triggerBy: triggerBy + ) + .sink { (_) in + } receiveValue: { (_) in + } + .store(in: &self.updateDisposeBag) + } + .store(in: &disposeBag) // build data for table view buildDataSource() @@ -85,36 +170,6 @@ class SettingsViewModel: NSObject, NeedsDependency { // request subsription data for updating or initialization requestSubscription() - typealias SubscriptionResponse = Mastodon.Response.Content - alertUpdate - .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) - .flatMap { [weak self] (arg) -> AnyPublisher in - let (triggerBy, values) = arg - guard let self = self else { - return Empty().eraseToAnyPublisher() - } - guard let activeMastodonAuthenticationBox = - self.context.authenticationService.activeMastodonAuthenticationBox.value else { - return Empty().eraseToAnyPublisher() - } - guard values.count >= 4 else { - return Empty().eraseToAnyPublisher() - } - - typealias Query = Mastodon.API.Notification.CreateSubscriptionQuery - let domain = activeMastodonAuthenticationBox.domain - return self.context.apiService.changeSubscription( - domain: domain, - mastodonAuthenticationBox: activeMastodonAuthenticationBox, - query: Query(favourite: values[0], follow: values[1], reblog: values[2], mention: values[3], poll: nil), - triggerBy: triggerBy) - } - .sink { _ in - } receiveValue: { (subscription) in - } - .store(in: &disposeBag) - - do { try fetchResultsController.performFetch() setting.value = fetchResultsController.fetchedObjects?.first @@ -141,15 +196,15 @@ class SettingsViewModel: NSObject, NeedsDependency { return s.type == settings?.triggerBy })?.alert { var items = [Bool?]() - items.append(alerts.favourite) - items.append(alerts.follow) - items.append(alerts.reblog) - items.append(alerts.mention) + items.append(alerts.favourite?.boolValue) + items.append(alerts.follow?.boolValue) + items.append(alerts.reblog?.boolValue) + items.append(alerts.mention?.boolValue) switches = items } else if let triggerBy = settings?.triggerBy, let values = self.notificationDefaultValue[triggerBy] { switches = values - self.alertUpdate.send((triggerBy: triggerBy, values: values)) + self.createSubscriptionSubject.send((triggerBy: triggerBy, values: values)) } else { // fallback a default value let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone @@ -178,7 +233,6 @@ class SettingsViewModel: NSObject, NeedsDependency { L10n.Scene.Settings.Section.BoringZone.privacy] var boringLinkItems = [SettingsItem]() for l in boringLinks { - // FIXME: update color in both light and dark mode let item = SettingsItem.boringZone(item: SettingsItem.Link(title: l, color: .systemBlue)) boringLinkItems.append(item) } @@ -191,7 +245,6 @@ class SettingsViewModel: NSObject, NeedsDependency { L10n.Scene.Settings.Section.SpicyZone.signOut] var spicyLinkItems = [SettingsItem]() for l in spicyLinks { - // FIXME: update color in both light and dark mode let item = SettingsItem.boringZone(item: SettingsItem.Link(title: l, color: .systemRed)) spicyLinkItems.append(item) } @@ -203,15 +256,11 @@ class SettingsViewModel: NSObject, NeedsDependency { } private func buildDataSource() { - setting.filter({ $0 != nil }).sink { [weak self] (settings) in + setting.sink { [weak self] (settings) in guard let self = self else { return } self.processDataSource(settings) } .store(in: &disposeBag) - - // init with no subscription for notification - let settings: Setting? = nil - self.processDataSource(settings) } private func requestSubscription() { @@ -229,11 +278,22 @@ class SettingsViewModel: NSObject, NeedsDependency { domain: domain, mastodonAuthenticationBox: activeMastodonAuthenticationBox) } - .sink { _ in + .sink { [weak self] competion in + if case .failure(_) = competion { + // create a subscription when doesn't has one + let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone + if let values = self?.notificationDefaultValue[anyone] { + self?.createSubscriptionSubject.send((triggerBy: anyone, values: values)) + } + } } receiveValue: { (subscription) in } .store(in: &disposeBag) } + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", ((#file as NSString).lastPathComponent), #line, #function) + } } // MARK: - NSFetchedResultsControllerDelegate diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift index 83932a62e..7419e2cad 100644 --- a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift +++ b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift @@ -86,12 +86,7 @@ class AppearanceView: UIView { class SettingsAppearanceTableViewCell: UITableViewCell { weak var delegate: SettingsAppearanceTableViewCellDelegate? - var appearance: SettingsItem.AppearanceMode = .automatic { - didSet { - guard let delegate = self.delegate else { return } - delegate.settingsAppearanceCell(self, didSelect: appearance) - } - } + var appearance: SettingsItem.AppearanceMode = .automatic lazy var stackView: UIStackView = { let view = UIStackView() @@ -203,5 +198,8 @@ class SettingsAppearanceTableViewCell: UITableViewCell { if sender == darkTap { appearance = .dark } + + guard let delegate = self.delegate else { return } + delegate.settingsAppearanceCell(self, didSelect: appearance) } } diff --git a/Mastodon/Service/APIService/APIService+Notifications.swift b/Mastodon/Service/APIService/APIService+Notifications.swift index 9bbcd180f..b32251544 100644 --- a/Mastodon/Service/APIService/APIService+Notifications.swift +++ b/Mastodon/Service/APIService/APIService+Notifications.swift @@ -62,5 +62,33 @@ extension APIService { .eraseToAnyPublisher() }.eraseToAnyPublisher() } + + func updateSubscription( + domain: String, + mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox, + query: Mastodon.API.Notification.UpdateSubscriptionQuery, + triggerBy: String + ) -> AnyPublisher, Error> { + let authorization = mastodonAuthenticationBox.userAuthorization + + return Mastodon.API.Notification.updateSubscription( + session: session, + domain: domain, + authorization: authorization, + query: query + ) + .flatMap { response -> AnyPublisher, Error> in + return self.backgroundManagedObjectContext.performChanges { + _ = APIService.CoreData.createOrMergeSubscription( + into: self.backgroundManagedObjectContext, + entity: response.value, + domain: domain, + triggerBy: triggerBy) + } + .setFailureType(to: Error.self) + .map { _ in return response } + .eraseToAnyPublisher() + }.eraseToAnyPublisher() + } } diff --git a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift index b3cd004b0..8dc189734 100644 --- a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift +++ b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift @@ -94,11 +94,12 @@ extension APIService.CoreData { type: triggerBy ?? setting.triggerBy ?? "") let alertEntity = entity.alerts let alert = SubscriptionAlerts.Property( - favourite: alertEntity.favourite, - follow: alertEntity.follow, - mention: alertEntity.mention, - poll: alertEntity.poll, - reblog: alertEntity.reblog) + favourite: alertEntity.favouriteNumber, + follow: alertEntity.followNumber, + mention: alertEntity.mentionNumber, + poll: alertEntity.pollNumber, + reblog: alertEntity.reblogNumber + ) if let oldSubscription = oldSubscription { oldSubscription.updateIfNeed(property: property) if nil == oldSubscription.alert { @@ -109,9 +110,10 @@ extension APIService.CoreData { oldSubscription.alert?.updateIfNeed(property: alert) } - if oldSubscription.alert?.hasChanges == true { + if oldSubscription.alert?.hasChanges == true || oldSubscription.hasChanges { // don't expand subscription if add existed subscription - setting.mutableSetValue(forKey: #keyPath(Setting.subscription)).add(oldSubscription) + //setting.mutableSetValue(forKey: #keyPath(Setting.subscription)).add(oldSubscription) + oldSubscription.didUpdate(at: Date()) } return (oldSubscription, false) } else { diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift index 555dd22d5..3618b06c5 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift @@ -47,9 +47,9 @@ extension Mastodon.API.Notification { .eraseToAnyPublisher() } - /// Change types of notifications + /// Subscribe to push notifications /// - /// Using this endpoint to change types of notifications + /// Add a Web Push API subscription to receive notifications. Each access token can have one push subscription. If you create a new subscription, the old subscription is deleted. /// /// - Since: 2.4.0 /// - Version: 3.3.0 @@ -80,6 +80,40 @@ extension Mastodon.API.Notification { } .eraseToAnyPublisher() } + + /// Change types of notifications + /// + /// Updates the current push subscription. Only the data part can be updated. To change fundamentals, a new subscription must be created instead. + /// + /// - Since: 2.4.0 + /// - Version: 3.3.0 + /// # Last Update + /// 2021/4/9 + /// # Reference + /// [Document](https://docs.joinmastodon.org/methods/notifications/push/) + /// - Parameters: + /// - session: `URLSession` + /// - domain: Mastodon instance domain. e.g. "example.com" + /// - authorization: User token. Could be nil if status is public + /// - Returns: `AnyPublisher` contains `Poll` nested in the response + public static func updateSubscription( + session: URLSession, + domain: String, + authorization: Mastodon.API.OAuth.Authorization?, + query: UpdateSubscriptionQuery + ) -> AnyPublisher, Error> { + let request = Mastodon.API.put( + url: pushEndpointURL(domain: domain), + query: query, + authorization: authorization + ) + return session.dataTaskPublisher(for: request) + .tryMap { data, response in + let value = try Mastodon.API.decode(type: Mastodon.Entity.Subscription.self, from: data, response: response) + return Mastodon.Response.Content(value: value, response: response) + } + .eraseToAnyPublisher() + } } extension Mastodon.API.Notification { @@ -88,27 +122,56 @@ extension Mastodon.API.Notification { var contentType: String? var body: Data? - let follow: Bool? - let favourite: Bool? - let reblog: Bool? - let mention: Bool? - let poll: Bool? - - // iTODO: missing parameters - // subscription[endpoint] - // subscription[keys][p256dh] - // subscription[keys][auth] - public init(favourite: Bool?, - follow: Bool?, - reblog: Bool?, - mention: Bool?, - poll: Bool?) { - self.follow = follow - self.favourite = favourite - self.reblog = reblog - self.mention = mention - self.poll = poll + public init( + endpoint: String, + p256dh: String, + auth: String, + favourite: Bool?, + follow: Bool?, + reblog: Bool?, + mention: Bool?, + poll: Bool? + ) { + queryItems = [URLQueryItem]() + queryItems?.append(URLQueryItem(name: "subscription[endpoint]", value: endpoint)) + queryItems?.append(URLQueryItem(name: "subscription[keys][p256dh]", value: p256dh)) + queryItems?.append(URLQueryItem(name: "subscription[keys][auth]", value: auth)) + + if let followValue = follow?.queryItemValue { + let followItem = URLQueryItem(name: "data[alerts][follow]", value: followValue) + queryItems?.append(followItem) + } + + if let favouriteValue = favourite?.queryItemValue { + let favouriteItem = URLQueryItem(name: "data[alerts][favourite]", value: favouriteValue) + queryItems?.append(favouriteItem) + } + + if let reblogValue = reblog?.queryItemValue { + let reblogItem = URLQueryItem(name: "data[alerts][reblog]", value: reblogValue) + queryItems?.append(reblogItem) + } + + if let mentionValue = mention?.queryItemValue { + let mentionItem = URLQueryItem(name: "data[alerts][mention]", value: mentionValue) + queryItems?.append(mentionItem) + } + } + } + + public struct UpdateSubscriptionQuery: PutQuery { + var queryItems: [URLQueryItem]? + var contentType: String? + var body: Data? + + public init( + favourite: Bool?, + follow: Bool?, + reblog: Bool?, + mention: Bool?, + poll: Bool? + ) { queryItems = [URLQueryItem]() if let followValue = follow?.queryItemValue { diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift index 24bb2c189..3ae5718e6 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Subscription.swift @@ -32,11 +32,46 @@ extension Mastodon.Entity { } public struct Alerts: Codable { - public let follow: Bool - public let favourite: Bool - public let reblog: Bool - public let mention: Bool - public let poll: Bool + public let follow: Bool? + public let favourite: Bool? + public let reblog: Bool? + public let mention: Bool? + public let poll: Bool? + + public var followNumber: NSNumber? { + guard let value = follow else { return nil } + return NSNumber(booleanLiteral: value) + } + public var favouriteNumber: NSNumber? { + guard let value = favourite else { return nil } + return NSNumber(booleanLiteral: value) + } + public var reblogNumber: NSNumber? { + guard let value = reblog else { return nil } + return NSNumber(booleanLiteral: value) + } + public var mentionNumber: NSNumber? { + guard let value = mention else { return nil } + return NSNumber(booleanLiteral: value) + } + public var pollNumber: NSNumber? { + guard let value = poll else { return nil } + return NSNumber(booleanLiteral: value) + } + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + var id = try? container.decode(String.self, forKey: .id) + if nil == id, let numId = try? container.decode(Int.self, forKey: .id) { + id = String(numId) + } + self.id = id ?? "" + + endpoint = try container.decode(String.self, forKey: .endpoint) + alerts = try container.decode(Alerts.self, forKey: .alerts) + serverKey = try container.decode(String.self, forKey: .serverKey) } } } diff --git a/SubscriptionAlerts.swift b/SubscriptionAlerts.swift index 928a777f5..c240a02a5 100644 --- a/SubscriptionAlerts.swift +++ b/SubscriptionAlerts.swift @@ -11,11 +11,11 @@ import CoreData @objc(SubscriptionAlerts) public final class SubscriptionAlerts: NSManagedObject { - @NSManaged public var follow: Bool - @NSManaged public var favourite: Bool - @NSManaged public var reblog: Bool - @NSManaged public var mention: Bool - @NSManaged public var poll: Bool + @NSManaged public var follow: NSNumber? + @NSManaged public var favourite: NSNumber? + @NSManaged public var reblog: NSNumber? + @NSManaged public var mention: NSNumber? + @NSManaged public var poll: NSNumber? @NSManaged public private(set) var createdAt: Date @NSManaged public private(set) var updatedAt: Date @@ -48,35 +48,35 @@ public extension SubscriptionAlerts { return alerts } - func update(favourite: Bool) { + func update(favourite: NSNumber?) { guard self.favourite != favourite else { return } self.favourite = favourite didUpdate(at: Date()) } - func update(follow: Bool) { + func update(follow: NSNumber?) { guard self.follow != follow else { return } self.follow = follow didUpdate(at: Date()) } - func update(mention: Bool) { + func update(mention: NSNumber?) { guard self.mention != mention else { return } self.mention = mention didUpdate(at: Date()) } - func update(poll: Bool) { + func update(poll: NSNumber?) { guard self.poll != poll else { return } self.poll = poll didUpdate(at: Date()) } - func update(reblog: Bool) { + func update(reblog: NSNumber?) { guard self.reblog != reblog else { return } self.reblog = reblog @@ -86,18 +86,18 @@ public extension SubscriptionAlerts { public extension SubscriptionAlerts { struct Property { - public let favourite: Bool - public let follow: Bool - public let mention: Bool - public let poll: Bool - public let reblog: Bool + public let favourite: NSNumber? + public let follow: NSNumber? + public let mention: NSNumber? + public let poll: NSNumber? + public let reblog: NSNumber? - public init(favourite: Bool?, follow: Bool?, mention: Bool?, poll: Bool?, reblog: Bool?) { - self.favourite = favourite ?? true - self.follow = follow ?? true - self.mention = mention ?? true - self.poll = poll ?? true - self.reblog = reblog ?? true + public init(favourite: NSNumber?, follow: NSNumber?, mention: NSNumber?, poll: NSNumber?, reblog: NSNumber?) { + self.favourite = favourite + self.follow = follow + self.mention = mention + self.poll = poll + self.reblog = reblog } } From 6f8b71f25f7cbeb8e01a43630b58403af51fc46d Mon Sep 17 00:00:00 2001 From: ihugo Date: Mon, 12 Apr 2021 23:03:39 +0800 Subject: [PATCH 04/37] chore: remove .lock file --- Mastodon/Resources/Assets.xcassets/.DS_Store | Bin 6148 -> 0 bytes .../Resources/Assets.xcassets/Welcome/.DS_Store | Bin 6148 -> 0 bytes Podfile.lock | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 Mastodon/Resources/Assets.xcassets/.DS_Store delete mode 100644 Mastodon/Resources/Assets.xcassets/Welcome/.DS_Store diff --git a/Mastodon/Resources/Assets.xcassets/.DS_Store b/Mastodon/Resources/Assets.xcassets/.DS_Store deleted file mode 100644 index 4fb9bcc5505725330d7145831e719cf5a4e88381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKK~BRk5Zr|xB5}#FN8dT+2cZft$Olj~S!c&;>E-0Zna6ky5 z-N>G`y}PzYitQBs5!=iJjzy{cH63*3G^4cxb{L? zxszvnqxIkR-F~#-6PvDYn)R+<)Bo^xTwa#1S97tte)BE6{e9JbnR7IKsKG!m5DWwZ z!N89(fIFK~To^_j39`Z_K_ diff --git a/Mastodon/Resources/Assets.xcassets/Welcome/.DS_Store b/Mastodon/Resources/Assets.xcassets/Welcome/.DS_Store deleted file mode 100644 index 523b0748c86e7d8534ee845c945a235f40857856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyG{c^3>-s>NHi%aDE14G_=8gvz92t9q@V~XT%;sWU&n7Vetev+yiSg;6i4lM}V>pC<%o4=r0b*A;Br-y=EG1^C)retP&UmZ5u5d`qa##%? zRySKsC>FQ#{1)l3E>Ttth=DN!*STDH|9_ Date: Tue, 13 Apr 2021 16:22:41 +0800 Subject: [PATCH 05/37] fix: fix some reveiw issues --- Localization/app.json | 40 ++++++ Mastodon/Coordinator/SceneCoordinator.swift | 5 + Mastodon/Generated/Strings.swift | 28 +++-- .../Resources/en.lproj/Localizable.strings | 33 ++--- .../Settings/SettingsViewController.swift | 37 ++++-- .../Scene/Settings/SettingsViewModel.swift | 14 +-- .../Cell/SettingsToggleTableViewCell.swift | 9 +- .../MastodonSDK/API/Mastodon+API+Push.swift | 114 +++++++++++------- 8 files changed, 190 insertions(+), 90 deletions(-) diff --git a/Localization/app.json b/Localization/app.json index 120458f74..facda97cf 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -22,6 +22,11 @@ "publish_post_failure": { "title": "Publish Failure", "message": "Failed to publish the post.\nPlease check your internet connection." + }, + "sign_out": { + "title": "Sign out", + "message": "Are you sure you want to sign out?", + "confirm": "Sign Out" } }, "controls": { @@ -321,6 +326,41 @@ }, "favorite": { "title": "Your Favorites" + }, + "settings": { + "title": "Settings", + "section": { + "appearance": { + "title": "Appearance", + "automatic": "Automatic", + "light": "Always Light", + "dark": "Always Dark" + }, + "notifications": { + "title": "Notifications", + "favorites": "Favorites my post", + "follows": "Follows me", + "boosts": "Reblogs my post", + "mentions": "Mentions me", + "trigger": { + "anyone": "anyone", + "follower": "a follower", + "follow": "anyone I follow", + "noone": "no one", + "title": "Notify me when" + } + }, + "boringzone": { + "title": "The Boring zone", + "terms": "Terms of Service", + "privacy": "Privacy Policy" + }, + "spicyzone": { + "title": "The spicy zone", + "clear": "Clear Media Cache", + "signout": "Sign Out" + } + } } } } diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index 36d42745e..28064ac38 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -65,6 +65,7 @@ extension SceneCoordinator { #if DEBUG case publicTimeline + case settings #endif var isOnboarding: Bool { @@ -262,6 +263,10 @@ private extension SceneCoordinator { let _viewController = PublicTimelineViewController() _viewController.viewModel = PublicTimelineViewModel(context: appContext) viewController = _viewController + case .settings: + let _viewController = SettingsViewController() + _viewController.viewModel = SettingsViewModel(context: appContext, coordinator: self) + viewController = _viewController #endif } diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index dac01a4b3..4b2175e86 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -35,6 +35,14 @@ internal enum L10n { /// Server Error internal static let title = L10n.tr("Localizable", "Common.Alerts.ServerError.Title") } + internal enum SignOut { + /// Sign Out + internal static let confirm = L10n.tr("Localizable", "Common.Alerts.SignOut.Confirm") + /// Are you sure you want to sign out? + internal static let message = L10n.tr("Localizable", "Common.Alerts.SignOut.Message") + /// Sign out + internal static let title = L10n.tr("Localizable", "Common.Alerts.SignOut.Title") + } internal enum SignUpFailure { /// Sign Up Failure internal static let title = L10n.tr("Localizable", "Common.Alerts.SignUpFailure.Title") @@ -595,16 +603,16 @@ internal enum L10n { /// Appearance internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Title") } - internal enum BoringZone { + internal enum Boringzone { /// Privacy Policy - internal static let privacy = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Privacy") + internal static let privacy = L10n.tr("Localizable", "Scene.Settings.Section.Boringzone.Privacy") /// Terms of Service - internal static let terms = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Terms") + internal static let terms = L10n.tr("Localizable", "Scene.Settings.Section.Boringzone.Terms") /// The Boring zone - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Title") + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Boringzone.Title") } internal enum Notifications { - /// Boosts my post + /// Reblogs my post internal static let boosts = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Boosts") /// Favorites my post internal static let favorites = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Favorites") @@ -622,18 +630,18 @@ internal enum L10n { /// a follower internal static let follower = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follower") /// no one - internal static let noOne = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.NoOne") + internal static let noone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Noone") /// Notify me when internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Title") } } - internal enum SpicyZone { + internal enum Spicyzone { /// Clear Media Cache - internal static let clear = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Clear") + internal static let clear = L10n.tr("Localizable", "Scene.Settings.Section.Spicyzone.Clear") /// Sign Out - internal static let signOut = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.SignOut") + internal static let signout = L10n.tr("Localizable", "Scene.Settings.Section.Spicyzone.Signout") /// The spicy zone - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Title") + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Spicyzone.Title") } } } diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings index 6abcb4cfe..d584be424 100644 --- a/Mastodon/Resources/en.lproj/Localizable.strings +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -6,6 +6,9 @@ Please check your internet connection."; "Common.Alerts.PublishPostFailure.Title" = "Publish Failure"; "Common.Alerts.ServerError.Title" = "Server Error"; +"Common.Alerts.SignOut.Confirm" = "Sign Out"; +"Common.Alerts.SignOut.Message" = "Are you sure you want to sign out?"; +"Common.Alerts.SignOut.Title" = "Sign out"; "Common.Alerts.SignUpFailure.Title" = "Sign Up Failure"; "Common.Alerts.VoteFailure.PollExpired" = "The poll has expired"; "Common.Alerts.VoteFailure.Title" = "Vote Failure"; @@ -186,26 +189,26 @@ any server."; "Scene.ServerRules.Subtitle" = "These rules are set by the admins of %@."; "Scene.ServerRules.TermsOfService" = "terms of service"; "Scene.ServerRules.Title" = "Some ground rules."; -"Scene.Welcome.Slogan" = "Social networking -back in your hands."; -"Scene.Settings.Title" = "Settings"; -"Scene.Settings.Section.Appearance.Title" = "Appearance"; "Scene.Settings.Section.Appearance.Automatic" = "Automatic"; -"Scene.Settings.Section.Appearance.Light" = "Always Light"; "Scene.Settings.Section.Appearance.Dark" = "Always Dark"; -"Scene.Settings.Section.Notifications.Title" = "Notifications"; +"Scene.Settings.Section.Appearance.Light" = "Always Light"; +"Scene.Settings.Section.Appearance.Title" = "Appearance"; +"Scene.Settings.Section.Boringzone.Privacy" = "Privacy Policy"; +"Scene.Settings.Section.Boringzone.Terms" = "Terms of Service"; +"Scene.Settings.Section.Boringzone.Title" = "The Boring zone"; +"Scene.Settings.Section.Notifications.Boosts" = "Reblogs my post"; "Scene.Settings.Section.Notifications.Favorites" = "Favorites my post"; "Scene.Settings.Section.Notifications.Follows" = "Follows me"; -"Scene.Settings.Section.Notifications.Boosts" = "Boosts my post"; "Scene.Settings.Section.Notifications.Mentions" = "Mentions me"; +"Scene.Settings.Section.Notifications.Title" = "Notifications"; "Scene.Settings.Section.Notifications.Trigger.Anyone" = "anyone"; -"Scene.Settings.Section.Notifications.Trigger.Follower" = "a follower"; "Scene.Settings.Section.Notifications.Trigger.Follow" = "anyone I follow"; -"Scene.Settings.Section.Notifications.Trigger.NoOne" = "no one"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "a follower"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "no one"; "Scene.Settings.Section.Notifications.Trigger.Title" = "Notify me when"; -"Scene.Settings.Section.BoringZone.Title" = "The Boring zone"; -"Scene.Settings.Section.BoringZone.Terms" = "Terms of Service"; -"Scene.Settings.Section.BoringZone.Privacy" = "Privacy Policy"; -"Scene.Settings.Section.SpicyZone.Title" = "The spicy zone"; -"Scene.Settings.Section.SpicyZone.Clear" = "Clear Media Cache"; -"Scene.Settings.Section.SpicyZone.SignOut" = "Sign Out"; +"Scene.Settings.Section.Spicyzone.Clear" = "Clear Media Cache"; +"Scene.Settings.Section.Spicyzone.Signout" = "Sign Out"; +"Scene.Settings.Section.Spicyzone.Title" = "The spicy zone"; +"Scene.Settings.Title" = "Settings"; +"Scene.Welcome.Slogan" = "Social networking +back in your hands."; \ No newline at end of file diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 73dc43df4..c134ade33 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -26,7 +26,7 @@ class SettingsViewController: UIViewController, NeedsDependency { let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone let follower = L10n.Scene.Settings.Section.Notifications.Trigger.follower let follow = L10n.Scene.Settings.Section.Notifications.Trigger.follow - let noOne = L10n.Scene.Settings.Section.Notifications.Trigger.noOne + let noOne = L10n.Scene.Settings.Section.Notifications.Trigger.noone let menu = UIMenu( image: nil, identifier: nil, @@ -206,11 +206,32 @@ class SettingsViewController: UIViewController, NeedsDependency { tableView.tableFooterView = footerView } + func alertToSignout() { + let alertController = UIAlertController( + title: L10n.Common.Alerts.SignOut.title, + message: L10n.Common.Alerts.SignOut.message, + preferredStyle: .alert + ) + + let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) + let signOutAction = UIAlertAction(title: L10n.Common.Alerts.SignOut.confirm, style: .destructive) { [weak self] _ in + guard let self = self else { return } + self.signout() + } + alertController.addAction(cancelAction) + alertController.addAction(signOutAction) + self.coordinator.present( + scene: .alertController(alertController: alertController), + from: self, + transition: .alertController(animated: true, completion: nil) + ) + } + func signout() { guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - + context.authenticationService.signOutMastodonUser( domain: activeMastodonAuthenticationBox.domain, userID: activeMastodonAuthenticationBox.userID @@ -282,9 +303,10 @@ extension SettingsViewController: UITableViewDelegate { if indexPath.section == 2 { coordinator.present( - scene: .webview(url: URL(string: "https://mastodon.online/terms")!), + scene: .safari(url: URL(string: "https://mastodon.online/terms")!), from: self, - transition: .modal(animated: true, completion: nil)) + transition: .safariPresent(animated: true, completion: nil) + ) } // iTODO: clear media cache @@ -292,7 +314,7 @@ extension SettingsViewController: UITableViewDelegate { // logout if indexPath.section == 3, indexPath.row == 1 { - signout() + alertToSignout() } } } @@ -377,9 +399,10 @@ extension SettingsViewController: SettingsToggleCellDelegate { extension SettingsViewController: ActiveLabelDelegate { func activeLabel(_ activeLabel: ActiveLabel, didSelectActiveEntity entity: ActiveEntity) { coordinator.present( - scene: .webview(url: URL(string: "https://github.com/tootsuite/mastodon")!), + scene: .safari(url: URL(string: "https://github.com/tootsuite/mastodon")!), from: self, - transition: .modal(animated: true, completion: nil)) + transition: .safariPresent(animated: true, completion: nil) + ) } } diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index 6a817ffff..0d625c0ed 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -63,7 +63,7 @@ class SettingsViewModel: NSObject, NeedsDependency { let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone let follower = L10n.Scene.Settings.Section.Notifications.Trigger.follower let follow = L10n.Scene.Settings.Section.Notifications.Trigger.follow - let noOne = L10n.Scene.Settings.Section.Notifications.Trigger.noOne + let noOne = L10n.Scene.Settings.Section.Notifications.Trigger.noone return [anyone: anyoneSwitchItems, follower: followerSwitchItems, follow: followSwitchItems, @@ -229,26 +229,26 @@ class SettingsViewModel: NSObject, NeedsDependency { snapshot.appendItems(notificationItems) // boring zone - let boringLinks = [L10n.Scene.Settings.Section.BoringZone.terms, - L10n.Scene.Settings.Section.BoringZone.privacy] + let boringLinks = [L10n.Scene.Settings.Section.Boringzone.terms, + L10n.Scene.Settings.Section.Boringzone.privacy] var boringLinkItems = [SettingsItem]() for l in boringLinks { let item = SettingsItem.boringZone(item: SettingsItem.Link(title: l, color: .systemBlue)) boringLinkItems.append(item) } - let boringSection = SettingsSection.boringZone(title: L10n.Scene.Settings.Section.BoringZone.title, items: boringLinkItems) + let boringSection = SettingsSection.boringZone(title: L10n.Scene.Settings.Section.Boringzone.title, items: boringLinkItems) snapshot.appendSections([boringSection]) snapshot.appendItems(boringLinkItems) // spicy zone - let spicyLinks = [L10n.Scene.Settings.Section.SpicyZone.clear, - L10n.Scene.Settings.Section.SpicyZone.signOut] + let spicyLinks = [L10n.Scene.Settings.Section.Spicyzone.clear, + L10n.Scene.Settings.Section.Spicyzone.signout] var spicyLinkItems = [SettingsItem]() for l in spicyLinks { let item = SettingsItem.boringZone(item: SettingsItem.Link(title: l, color: .systemRed)) spicyLinkItems.append(item) } - let spicySection = SettingsSection.boringZone(title: L10n.Scene.Settings.Section.SpicyZone.title, items: spicyLinkItems) + let spicySection = SettingsSection.boringZone(title: L10n.Scene.Settings.Section.Spicyzone.title, items: spicyLinkItems) snapshot.appendSections([spicySection]) snapshot.appendItems(spicyLinkItems) diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift index 374e05d6d..b35b2b50f 100644 --- a/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift +++ b/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift @@ -14,7 +14,6 @@ protocol SettingsToggleCellDelegate: class { class SettingsToggleTableViewCell: UITableViewCell { lazy var switchButton: UISwitch = { let view = UISwitch(frame:.zero) - view.translatesAutoresizingMaskIntoConstraints = false return view }() @@ -48,13 +47,7 @@ class SettingsToggleTableViewCell: UITableViewCell { // MARK: Private methods private func setupUI() { selectionStyle = .none - textLabel?.font = .systemFont(ofSize: 17, weight: .regular) - contentView.addSubview(switchButton) - - NSLayoutConstraint.activate([ - switchButton.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), - switchButton.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), - ]) + accessoryView = switchButton switchButton.addTarget(self, action: #selector(valueDidChange(sender:)), for: .valueChanged) } diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift index 3618b06c5..ef383e4db 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift @@ -32,7 +32,7 @@ extension Mastodon.API.Notification { public static func subscription( session: URLSession, domain: String, - authorization: Mastodon.API.OAuth.Authorization? + authorization: Mastodon.API.OAuth.Authorization ) -> AnyPublisher, Error> { let request = Mastodon.API.get( url: pushEndpointURL(domain: domain), @@ -65,7 +65,7 @@ extension Mastodon.API.Notification { public static func createSubscription( session: URLSession, domain: String, - authorization: Mastodon.API.OAuth.Authorization?, + authorization: Mastodon.API.OAuth.Authorization, query: CreateSubscriptionQuery ) -> AnyPublisher, Error> { let request = Mastodon.API.post( @@ -99,7 +99,7 @@ extension Mastodon.API.Notification { public static func updateSubscription( session: URLSession, domain: String, - authorization: Mastodon.API.OAuth.Authorization?, + authorization: Mastodon.API.OAuth.Authorization, query: UpdateSubscriptionQuery ) -> AnyPublisher, Error> { let request = Mastodon.API.put( @@ -117,10 +117,44 @@ extension Mastodon.API.Notification { } extension Mastodon.API.Notification { - public struct CreateSubscriptionQuery: PostQuery { - var queryItems: [URLQueryItem]? - var contentType: String? - var body: Data? + public struct CreateSubscriptionQuery: Codable, PostQuery { + let endpoint: String + let p256dh: String + let auth: String + let favourite: Bool? + let follow: Bool? + let reblog: Bool? + let mention: Bool? + let poll: Bool? + + var queryItems: [URLQueryItem]? { + var items = [URLQueryItem]() + + items.append(URLQueryItem(name: "subscription[endpoint]", value: endpoint)) + items.append(URLQueryItem(name: "subscription[keys][p256dh]", value: p256dh)) + items.append(URLQueryItem(name: "subscription[keys][auth]", value: auth)) + + if let followValue = follow?.queryItemValue { + let followItem = URLQueryItem(name: "data[alerts][follow]", value: followValue) + items.append(followItem) + } + + if let favouriteValue = favourite?.queryItemValue { + let favouriteItem = URLQueryItem(name: "data[alerts][favourite]", value: favouriteValue) + items.append(favouriteItem) + } + + if let reblogValue = reblog?.queryItemValue { + let reblogItem = URLQueryItem(name: "data[alerts][reblog]", value: reblogValue) + items.append(reblogItem) + } + + if let mentionValue = mention?.queryItemValue { + let mentionItem = URLQueryItem(name: "data[alerts][mention]", value: mentionValue) + items.append(mentionItem) + } + return items + } public init( endpoint: String, @@ -132,38 +166,48 @@ extension Mastodon.API.Notification { mention: Bool?, poll: Bool? ) { - queryItems = [URLQueryItem]() - - queryItems?.append(URLQueryItem(name: "subscription[endpoint]", value: endpoint)) - queryItems?.append(URLQueryItem(name: "subscription[keys][p256dh]", value: p256dh)) - queryItems?.append(URLQueryItem(name: "subscription[keys][auth]", value: auth)) + self.endpoint = endpoint + self.p256dh = p256dh + self.auth = auth + self.favourite = favourite + self.follow = follow + self.reblog = reblog + self.mention = mention + self.poll = poll + } + } + + public struct UpdateSubscriptionQuery: Codable, PutQuery { + let favourite: Bool? + let follow: Bool? + let reblog: Bool? + let mention: Bool? + let poll: Bool? + + var queryItems: [URLQueryItem]? { + var items = [URLQueryItem]() if let followValue = follow?.queryItemValue { let followItem = URLQueryItem(name: "data[alerts][follow]", value: followValue) - queryItems?.append(followItem) + items.append(followItem) } if let favouriteValue = favourite?.queryItemValue { let favouriteItem = URLQueryItem(name: "data[alerts][favourite]", value: favouriteValue) - queryItems?.append(favouriteItem) + items.append(favouriteItem) } if let reblogValue = reblog?.queryItemValue { let reblogItem = URLQueryItem(name: "data[alerts][reblog]", value: reblogValue) - queryItems?.append(reblogItem) + items.append(reblogItem) } if let mentionValue = mention?.queryItemValue { let mentionItem = URLQueryItem(name: "data[alerts][mention]", value: mentionValue) - queryItems?.append(mentionItem) + items.append(mentionItem) } + return items } - } - - public struct UpdateSubscriptionQuery: PutQuery { - var queryItems: [URLQueryItem]? - var contentType: String? - var body: Data? public init( favourite: Bool?, @@ -172,27 +216,11 @@ extension Mastodon.API.Notification { mention: Bool?, poll: Bool? ) { - queryItems = [URLQueryItem]() - - if let followValue = follow?.queryItemValue { - let followItem = URLQueryItem(name: "data[alerts][follow]", value: followValue) - queryItems?.append(followItem) - } - - if let favouriteValue = favourite?.queryItemValue { - let favouriteItem = URLQueryItem(name: "data[alerts][favourite]", value: favouriteValue) - queryItems?.append(favouriteItem) - } - - if let reblogValue = reblog?.queryItemValue { - let reblogItem = URLQueryItem(name: "data[alerts][reblog]", value: reblogValue) - queryItems?.append(reblogItem) - } - - if let mentionValue = mention?.queryItemValue { - let mentionItem = URLQueryItem(name: "data[alerts][mention]", value: mentionValue) - queryItems?.append(mentionItem) - } + self.favourite = favourite + self.follow = follow + self.reblog = reblog + self.mention = mention + self.poll = poll } } } From 262eeeccba5d962e3a027065350462715f7ef926 Mon Sep 17 00:00:00 2001 From: ihugo Date: Tue, 13 Apr 2021 13:52:46 +0800 Subject: [PATCH 06/37] add: clear media cache --- .../Scene/Settings/SettingsViewController.swift | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index c134ade33..b43ca30e3 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -11,6 +11,8 @@ import Combine import ActiveLabel import CoreData import CoreDataStack +import AlamofireImage +import Kingfisher // iTODO: when to ask permission to Use Notifications @@ -309,8 +311,19 @@ extension SettingsViewController: UITableViewDelegate { ) } - // iTODO: clear media cache - + // clear media cache + if indexPath.section == 3, indexPath.row == 0 { + // clean image cache for AlamofireImage + let diskBytes = ImageDownloader.defaultURLCache().currentDiskUsage + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: diskBytes %d", ((#file as NSString).lastPathComponent), #line, #function, diskBytes) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: clean image cache", ((#file as NSString).lastPathComponent), #line, #function) + ImageDownloader.defaultURLCache().removeAllCachedResponses() + let cleanedDiskBytes = ImageDownloader.defaultURLCache().currentDiskUsage + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: diskBytes %d", ((#file as NSString).lastPathComponent), #line, #function, cleanedDiskBytes) + + // clean Kingfisher Cache + KingfisherManager.shared.cache.clearDiskCache() + } // logout if indexPath.section == 3, indexPath.row == 1 { From 901176e14dfffeb1973a71bbd7e49cf6479ac28f Mon Sep 17 00:00:00 2001 From: ihugo Date: Tue, 13 Apr 2021 17:37:13 +0800 Subject: [PATCH 07/37] fix: fix compile error caused by git merge --- .../Entity/SubscriptionAlerts.swift | 0 Mastodon.xcodeproj/project.pbxproj | 68 +++++++++++++++++++ Mastodon/Generated/Assets.swift | 6 ++ .../Scene/Settings/SettingsViewModel.swift | 4 +- .../SettingsAppearanceTableViewCell.swift | 6 +- ...s.swift => APIService+Subscriptions.swift} | 10 +-- ...> APIService+CoreData+Subscriptions.swift} | 0 .../MastodonSDK/API/Mastodon+API+Push.swift | 4 +- .../MastodonSDK/API/Mastodon+API.swift | 2 +- 9 files changed, 87 insertions(+), 13 deletions(-) rename SubscriptionAlerts.swift => CoreDataStack/Entity/SubscriptionAlerts.swift (100%) rename Mastodon/Service/APIService/{APIService+Notifications.swift => APIService+Subscriptions.swift} (91%) rename Mastodon/Service/APIService/CoreData/{APIService+CoreData+Notification.swift => APIService+CoreData+Subscriptions.swift} (100%) diff --git a/SubscriptionAlerts.swift b/CoreDataStack/Entity/SubscriptionAlerts.swift similarity index 100% rename from SubscriptionAlerts.swift rename to CoreDataStack/Entity/SubscriptionAlerts.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index b52139898..2911667bf 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -123,6 +123,17 @@ 2DFAD5272616F9D300F9EE7C /* SearchViewController+Searching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFAD5262616F9D300F9EE7C /* SearchViewController+Searching.swift */; }; 2DFAD5372617010500F9EE7C /* SearchingTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFAD5362617010500F9EE7C /* SearchingTableViewCell.swift */; }; 2DFF41892614A4DC00F776A4 /* UIView+Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFF41882614A4DC00F776A4 /* UIView+Constraint.swift */; }; + 5B90C45E262599800002E742 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C456262599800002E742 /* SettingsViewModel.swift */; }; + 5B90C45F262599800002E742 /* SettingsToggleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */; }; + 5B90C460262599800002E742 /* SettingsAppearanceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */; }; + 5B90C461262599800002E742 /* SettingsLinkTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45B262599800002E742 /* SettingsLinkTableViewCell.swift */; }; + 5B90C462262599800002E742 /* SettingsSectionHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45C262599800002E742 /* SettingsSectionHeader.swift */; }; + 5B90C463262599800002E742 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45D262599800002E742 /* SettingsViewController.swift */; }; + 5B90C46E26259B2C0002E742 /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C46C26259B2C0002E742 /* Subscription.swift */; }; + 5B90C46F26259B2C0002E742 /* Setting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C46D26259B2C0002E742 /* Setting.swift */; }; + 5B90C47F26259BA90002E742 /* SubscriptionAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */; }; + 5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C48426259BF10002E742 /* APIService+Subscriptions.swift */; }; + 5B90C48B26259C120002E742 /* APIService+CoreData+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */; }; 5D0393902612D259007FE196 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D03938F2612D259007FE196 /* WebViewController.swift */; }; 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0393952612D266007FE196 /* WebViewModel.swift */; }; 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = 5D526FE125BE9AC400460CB9 /* MastodonSDK */; }; @@ -503,6 +514,17 @@ 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Mastodon_MastodonUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 452147B2903DF38070FE56A2 /* Pods_MastodonTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.debug.xcconfig"; sourceTree = ""; }; + 5B90C456262599800002E742 /* SettingsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; + 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsToggleTableViewCell.swift; sourceTree = ""; }; + 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppearanceTableViewCell.swift; sourceTree = ""; }; + 5B90C45B262599800002E742 /* SettingsLinkTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsLinkTableViewCell.swift; sourceTree = ""; }; + 5B90C45C262599800002E742 /* SettingsSectionHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSectionHeader.swift; sourceTree = ""; }; + 5B90C45D262599800002E742 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + 5B90C46C26259B2C0002E742 /* Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Subscription.swift; sourceTree = ""; }; + 5B90C46D26259B2C0002E742 /* Setting.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Setting.swift; sourceTree = ""; }; + 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscriptionAlerts.swift; sourceTree = ""; }; + 5B90C48426259BF10002E742 /* APIService+Subscriptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+Subscriptions.swift"; sourceTree = ""; }; + 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+Subscriptions.swift"; sourceTree = ""; }; 5D03938F2612D259007FE196 /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; 5D0393952612D266007FE196 /* WebViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewModel.swift; sourceTree = ""; }; 5DDDF1922617442700311060 /* Mastodon+Entity+Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Account.swift"; sourceTree = ""; }; @@ -1136,6 +1158,35 @@ name = Frameworks; sourceTree = ""; }; + 5B90C455262599800002E742 /* Settings */ = { + isa = PBXGroup; + children = ( + 5B90C456262599800002E742 /* SettingsViewModel.swift */, + 5B90C457262599800002E742 /* View */, + 5B90C45D262599800002E742 /* SettingsViewController.swift */, + ); + path = Settings; + sourceTree = ""; + }; + 5B90C457262599800002E742 /* View */ = { + isa = PBXGroup; + children = ( + 5B90C458262599800002E742 /* Cell */, + 5B90C45C262599800002E742 /* SettingsSectionHeader.swift */, + ); + path = View; + sourceTree = ""; + }; + 5B90C458262599800002E742 /* Cell */ = { + isa = PBXGroup; + children = ( + 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */, + 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */, + 5B90C45B262599800002E742 /* SettingsLinkTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; 5D03938E2612D200007FE196 /* Webview */ = { isa = PBXGroup; children = ( @@ -1320,6 +1371,7 @@ DBAE3F932616E28B004B8251 /* APIService+Follow.swift */, DBAE3F8D2616E0B1004B8251 /* APIService+Block.swift */, DBAE3F9D2616E308004B8251 /* APIService+Mute.swift */, + 5B90C48426259BF10002E742 /* APIService+Subscriptions.swift */, ); path = APIService; sourceTree = ""; @@ -1331,6 +1383,7 @@ DB45FADC25CA6F6B005A8AC7 /* APIService+CoreData+MastodonUser.swift */, DB45FAF825CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift */, 2D79E700261EA5550011E398 /* APIService+CoreData+Tag.swift */, + 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */, ); path = CoreData; sourceTree = ""; @@ -1500,6 +1553,9 @@ DB4481AC25EE155900BEFB67 /* Poll.swift */, DB4481B225EE16D000BEFB67 /* PollOption.swift */, DBCC3B9A2615849F0045B23D /* PrivateNote.swift */, + 5B90C46D26259B2C0002E742 /* Setting.swift */, + 5B90C46C26259B2C0002E742 /* Subscription.swift */, + 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */, ); path = Entity; sourceTree = ""; @@ -1551,6 +1607,7 @@ 2D76316325C14BAC00929FB9 /* PublicTimeline */, 0F2021F5261325ED000C64BF /* HashtagTimeline */, DB9D6BEE25E4F5370051B173 /* Search */, + 5B90C455262599800002E742 /* Settings */, DB9D6BFD25E4F57B0051B173 /* Notification */, DB9D6C0825E4F5A60051B173 /* Profile */, DB789A1025F9F29B0071ACA0 /* Compose */, @@ -2227,6 +2284,7 @@ DBE3CE07261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift in Sources */, 2D61335825C188A000CAE157 /* APIService+Persist+Status.swift in Sources */, 2D34D9DB261494120081BFC0 /* APIService+Search.swift in Sources */, + 5B90C48B26259C120002E742 /* APIService+CoreData+Subscriptions.swift in Sources */, DBB5256E2612D5A1002F1F29 /* ProfileStatusDashboardView.swift in Sources */, DB45FAE325CA7181005A8AC7 /* MastodonUser.swift in Sources */, 2D19864F261C372A00F0B013 /* SearchBottomLoader.swift in Sources */, @@ -2241,6 +2299,7 @@ DB49A62B25FF36C700B98345 /* APIService+CustomEmoji.swift in Sources */, DBCBED1D26132E1A00B49291 /* StatusFetchedResultsController.swift in Sources */, 2D79E701261EA5550011E398 /* APIService+CoreData+Tag.swift in Sources */, + 5B90C461262599800002E742 /* SettingsLinkTableViewCell.swift in Sources */, DBE3CDEC261C6B2900430CC6 /* FavoriteViewController.swift in Sources */, 2D939AB525EDD8A90076FA61 /* String.swift in Sources */, DB4481B925EE289600BEFB67 /* UITableView.swift in Sources */, @@ -2269,6 +2328,7 @@ 5DDDF1A92617489F00311060 /* Mastodon+Entity+History.swift in Sources */, DB59F11825EFA35B001F1DAB /* StripProgressView.swift in Sources */, DB59F10425EF5EBC001F1DAB /* TableViewCellHeightCacheableContainer.swift in Sources */, + 5B90C463262599800002E742 /* SettingsViewController.swift in Sources */, DB73B490261F030A002E9E9F /* SafariActivity.swift in Sources */, DB9A48962603685D008B817C /* MastodonAttachmentService+UploadState.swift in Sources */, 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */, @@ -2276,6 +2336,7 @@ DBE0822425CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift in Sources */, 2DF75B9B25D0E27500694EC8 /* StatusProviderFacade.swift in Sources */, DB5086A525CC0B7000C2C187 /* AvatarBarButtonItem.swift in Sources */, + 5B90C45E262599800002E742 /* SettingsViewModel.swift in Sources */, 2D82B9FF25E7863200E36F0F /* OnboardingViewControllerAppearance.swift in Sources */, 5DF1054725F8870E00D6C0D4 /* VideoPlayerViewModel.swift in Sources */, 2DE0FAC12615F04D00CDF649 /* RecommendHashTagSection.swift in Sources */, @@ -2296,6 +2357,7 @@ DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */, 2D3F9E0425DFA133004262D9 /* UITapGestureRecognizer.swift in Sources */, 5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */, + 5B90C45F262599800002E742 /* SettingsToggleTableViewCell.swift in Sources */, 2D694A7425F9EB4E0038ADDC /* ContentWarningOverlayView.swift in Sources */, DBAE3F682615DD60004B8251 /* UserProvider.swift in Sources */, DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */, @@ -2305,6 +2367,7 @@ 0F20222D261457EE000C64BF /* HashtagTimelineViewModel+LoadOldestState.swift in Sources */, DB4563BD25E11A24004DA0B9 /* KeyboardResponderService.swift in Sources */, DB5086BE25CC0D9900C2C187 /* SplashPreference.swift in Sources */, + 5B90C462262599800002E742 /* SettingsSectionHeader.swift in Sources */, DB44768B260B3F2100B66B82 /* CustomEmojiPickerItem.swift in Sources */, 2DF75BA125D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift in Sources */, 5DF1056425F887CB00D6C0D4 /* AVPlayer.swift in Sources */, @@ -2377,7 +2440,9 @@ DB98336B25C9420100AD9700 /* APIService+App.swift in Sources */, DBA0A11325FB3FC10079C110 /* ComposeToolbarView.swift in Sources */, 2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */, + 5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */, 0F20223926146553000C64BF /* Array+removeDuplicates.swift in Sources */, + 5B90C460262599800002E742 /* SettingsAppearanceTableViewCell.swift in Sources */, DB8AF54425C13647002E6C99 /* SceneCoordinator.swift in Sources */, 5DF1058525F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift in Sources */, DB447697260B439000B66B82 /* CustomEmojiPickerHeaderCollectionReusableView.swift in Sources */, @@ -2460,6 +2525,7 @@ 2D927F1425C7EDD9004F19B8 /* Emoji.swift in Sources */, 2DF75BC725D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift in Sources */, DB89BA1225C1105C008580ED /* CoreDataStack.swift in Sources */, + 5B90C46F26259B2C0002E742 /* Setting.swift in Sources */, DB89BA1C25C1107F008580ED /* NSManagedObjectContext.swift in Sources */, DB9D6C2E25E504AC0051B173 /* Attachment.swift in Sources */, 2D927F0E25C7E9C9004F19B8 /* History.swift in Sources */, @@ -2480,6 +2546,8 @@ DB89BA1D25C1107F008580ED /* URL.swift in Sources */, 2D0B7A1D261D839600B44727 /* SearchHistory.swift in Sources */, 2D927F0825C7E9A8004F19B8 /* Tag.swift in Sources */, + 5B90C46E26259B2C0002E742 /* Subscription.swift in Sources */, + 5B90C47F26259BA90002E742 /* SubscriptionAlerts.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index 843fce02c..5fd25edc4 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -81,6 +81,7 @@ internal enum Asset { internal static let invalid = ColorAsset(name: "Colors/TextField/invalid") internal static let valid = ColorAsset(name: "Colors/TextField/valid") } + internal static let battleshipGrey = ColorAsset(name: "Colors/battleshipGrey") internal static let brandBlue = ColorAsset(name: "Colors/brand.blue") internal static let danger = ColorAsset(name: "Colors/danger") internal static let disabled = ColorAsset(name: "Colors/disabled") @@ -98,6 +99,11 @@ internal enum Asset { internal static let usernameGray = ColorAsset(name: "Profile/Banner/username.gray") } } + internal enum Settings { + internal static let appearanceAutomatic = ImageAsset(name: "Settings/appearance.automatic") + internal static let appearanceDark = ImageAsset(name: "Settings/appearance.dark") + internal static let appearanceLight = ImageAsset(name: "Settings/appearance.light") + } internal enum Welcome { internal enum Illustration { internal static let backgroundCyan = ColorAsset(name: "Welcome/illustration/background.cyan") diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index 0d625c0ed..ddee6c5f9 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -102,7 +102,7 @@ class SettingsViewModel: NSObject, NeedsDependency { } self.createDisposeBag.removeAll() - typealias Query = Mastodon.API.Notification.CreateSubscriptionQuery + typealias Query = Mastodon.API.Subscriptions.CreateSubscriptionQuery let domain = activeMastodonAuthenticationBox.domain let query = Query( endpoint: "http://www.google.com", @@ -143,7 +143,7 @@ class SettingsViewModel: NSObject, NeedsDependency { } self.updateDisposeBag.removeAll() - typealias Query = Mastodon.API.Notification.UpdateSubscriptionQuery + typealias Query = Mastodon.API.Subscriptions.UpdateSubscriptionQuery let domain = activeMastodonAuthenticationBox.domain let query = Query( favourite: values[0], diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift index 7419e2cad..a477661ee 100644 --- a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift +++ b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift @@ -29,7 +29,7 @@ class AppearanceView: UIView { button.setImage(UIImage(systemName: "circle"), for: .normal) button.setImage(UIImage(systemName: "checkmark.circle.fill"), for: .selected) button.imageView?.preferredSymbolConfiguration = UIImage.SymbolConfiguration(textStyle: .body) - button.imageView?.tintColor = Asset.Colors.lightSecondaryText.color + button.imageView?.tintColor = Asset.Colors.Label.secondary.color button.imageView?.contentMode = .scaleAspectFill return button }() @@ -45,9 +45,9 @@ class AppearanceView: UIView { didSet { checkBox.isSelected = selected if selected { - checkBox.imageView?.tintColor = Asset.Colors.lightBrandBlue.color + checkBox.imageView?.tintColor = Asset.Colors.Label.highlight.color } else { - checkBox.imageView?.tintColor = Asset.Colors.lightSecondaryText.color + checkBox.imageView?.tintColor = Asset.Colors.Label.secondary.color } } } diff --git a/Mastodon/Service/APIService/APIService+Notifications.swift b/Mastodon/Service/APIService/APIService+Subscriptions.swift similarity index 91% rename from Mastodon/Service/APIService/APIService+Notifications.swift rename to Mastodon/Service/APIService/APIService+Subscriptions.swift index b32251544..d67284c7c 100644 --- a/Mastodon/Service/APIService/APIService+Notifications.swift +++ b/Mastodon/Service/APIService/APIService+Subscriptions.swift @@ -18,7 +18,7 @@ extension APIService { let authorization = mastodonAuthenticationBox.userAuthorization - return Mastodon.API.Notification.subscription( + return Mastodon.API.Subscriptions.subscription( session: session, domain: domain, authorization: authorization) @@ -38,12 +38,12 @@ extension APIService { func changeSubscription( domain: String, mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox, - query: Mastodon.API.Notification.CreateSubscriptionQuery, + query: Mastodon.API.Subscriptions.CreateSubscriptionQuery, triggerBy: String ) -> AnyPublisher, Error> { let authorization = mastodonAuthenticationBox.userAuthorization - return Mastodon.API.Notification.createSubscription( + return Mastodon.API.Subscriptions.createSubscription( session: session, domain: domain, authorization: authorization, @@ -66,12 +66,12 @@ extension APIService { func updateSubscription( domain: String, mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox, - query: Mastodon.API.Notification.UpdateSubscriptionQuery, + query: Mastodon.API.Subscriptions.UpdateSubscriptionQuery, triggerBy: String ) -> AnyPublisher, Error> { let authorization = mastodonAuthenticationBox.userAuthorization - return Mastodon.API.Notification.updateSubscription( + return Mastodon.API.Subscriptions.updateSubscription( session: session, domain: domain, authorization: authorization, diff --git a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Subscriptions.swift similarity index 100% rename from Mastodon/Service/APIService/CoreData/APIService+CoreData+Notification.swift rename to Mastodon/Service/APIService/CoreData/APIService+CoreData+Subscriptions.swift diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift index ef383e4db..062b45ac2 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift @@ -8,7 +8,7 @@ import Foundation import Combine -extension Mastodon.API.Notification { +extension Mastodon.API.Subscriptions { static func pushEndpointURL(domain: String) -> URL { return Mastodon.API.endpointURL(domain: domain).appendingPathComponent("push/subscription") @@ -116,7 +116,7 @@ extension Mastodon.API.Notification { } } -extension Mastodon.API.Notification { +extension Mastodon.API.Subscriptions { public struct CreateSubscriptionQuery: Codable, PostQuery { let endpoint: String let p256dh: String diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift index d04071e9d..1a4496ed3 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift @@ -115,7 +115,7 @@ extension Mastodon.API { public enum Trends { } public enum Suggestions { } public enum Notifications { } - public enum Notification { } + public enum Subscriptions { } } extension Mastodon.API { From db3d16be4162c21bc20d0ddeeac1455d86db6029 Mon Sep 17 00:00:00 2001 From: ihugo Date: Tue, 13 Apr 2021 17:53:18 +0800 Subject: [PATCH 08/37] fix: use readable guider to layout section header --- .gitignore | 4 +++- Mastodon.xcodeproj/project.pbxproj | 2 +- .../Settings/View/SettingsSectionHeader.swift | 16 +++++++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index a766fc629..24e748a9e 100644 --- a/.gitignore +++ b/.gitignore @@ -120,4 +120,6 @@ xcuserdata # End of https://www.toptal.com/developers/gitignore/api/swift,swiftpm,xcode,cocoapods Localization/StringsConvertor/input -Localization/StringsConvertor/output \ No newline at end of file +Localization/StringsConvertor/output +.DS_Store +/Mastodon.xcworkspace/xcshareddata/swiftpm diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 2911667bf..f4127506c 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -1161,8 +1161,8 @@ 5B90C455262599800002E742 /* Settings */ = { isa = PBXGroup; children = ( - 5B90C456262599800002E742 /* SettingsViewModel.swift */, 5B90C457262599800002E742 /* View */, + 5B90C456262599800002E742 /* SettingsViewModel.swift */, 5B90C45D262599800002E742 /* SettingsViewController.swift */, ); path = Settings; diff --git a/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift b/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift index 67dff9822..ccd7fd875 100644 --- a/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift +++ b/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift @@ -7,6 +7,11 @@ import UIKit +struct GroupedTableViewConstraints { + static let topMargin: CGFloat = 40 + static let bottomMargin: CGFloat = 10 +} + /// section header which supports add a custom view blelow the title class SettingsSectionHeader: UIView { lazy var titleLabel: UILabel = { @@ -21,7 +26,12 @@ class SettingsSectionHeader: UIView { let view = UIStackView() view.translatesAutoresizingMaskIntoConstraints = false view.isLayoutMarginsRelativeArrangement = true - view.layoutMargins = UIEdgeInsets(top: 40, left: 12, bottom: 10, right: 12) + view.layoutMargins = UIEdgeInsets( + top: GroupedTableViewConstraints.topMargin, + left: 0, + bottom: GroupedTableViewConstraints.bottomMargin, + right: 0 + ) view.axis = .vertical return view }() @@ -37,8 +47,8 @@ class SettingsSectionHeader: UIView { addSubview(stackView) NSLayoutConstraint.activate([ - stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor), - stackView.trailingAnchor.constraint(lessThanOrEqualTo: self.trailingAnchor), + stackView.leadingAnchor.constraint(equalTo: self.readableContentGuide.leadingAnchor), + stackView.trailingAnchor.constraint(lessThanOrEqualTo: self.readableContentGuide.trailingAnchor), stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor), stackView.topAnchor.constraint(equalTo: self.topAnchor), ]) From 773bfb6dd21e2a9fa9abb788923f410006a27e26 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Mon, 12 Apr 2021 16:31:53 +0800 Subject: [PATCH 09/37] feature: notification API and CoreData --- .../CoreData.xcdatamodel/contents | 18 ++- CoreDataStack/Entity/Notification.swift | 110 +++++++++++++++ Localization/app.json | 13 ++ Mastodon.xcodeproj/project.pbxproj | 40 ++++++ .../Diffiable/Item/NotificationItem.swift | 40 ++++++ .../Section/NotificationSection.swift | 75 +++++++++++ Mastodon/Generated/Strings.swift | 20 +++ .../Resources/en.lproj/Localizable.strings | 7 + .../NotificationViewController.swift | 126 +++++++++++++++++- ...otificationViewModel+LoadLatestState.swift | 96 +++++++++++++ .../NotificationViewModel+diffable.swift | 118 ++++++++++++++++ .../Notification/NotificationViewModel.swift | 87 ++++++++++++ .../NotificationTableViewCell.swift | 109 +++++++++++++++ .../APIService/APIService+Notification.swift | 65 +++++++++ .../API/Mastodon+API+Notifications.swift | 47 ++++--- .../Entity/Mastodon+Entity+Notification.swift | 1 + 16 files changed, 952 insertions(+), 20 deletions(-) create mode 100644 CoreDataStack/Entity/Notification.swift create mode 100644 Mastodon/Diffiable/Item/NotificationItem.swift create mode 100644 Mastodon/Diffiable/Section/NotificationSection.swift create mode 100644 Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift create mode 100644 Mastodon/Scene/Notification/NotificationViewModel+diffable.swift create mode 100644 Mastodon/Scene/Notification/NotificationViewModel.swift create mode 100644 Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift create mode 100644 Mastodon/Service/APIService/APIService+Notification.swift diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents index 5ed4021a7..2569da5e6 100644 --- a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents +++ b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents @@ -65,6 +65,21 @@ + + + + + + + + + + + + + + + @@ -208,6 +223,7 @@ + @@ -217,4 +233,4 @@ - + \ No newline at end of file diff --git a/CoreDataStack/Entity/Notification.swift b/CoreDataStack/Entity/Notification.swift new file mode 100644 index 000000000..f19f68988 --- /dev/null +++ b/CoreDataStack/Entity/Notification.swift @@ -0,0 +1,110 @@ +// +// MastodonNotification.swift +// CoreDataStack +// +// Created by sxiaojian on 2021/4/13. +// + +import Foundation +import CoreData + +public final class MastodonNotification: NSManagedObject { + public typealias ID = UUID + @NSManaged public private(set) var identifier: ID + @NSManaged public private(set) var id: String + @NSManaged public private(set) var domain: String + @NSManaged public private(set) var createAt: Date + @NSManaged public private(set) var updatedAt: Date + @NSManaged public private(set) var type: String + @NSManaged public private(set) var account: MastodonUser + @NSManaged public private(set) var status: Status? + +} + +extension MastodonNotification { + public override func awakeFromInsert() { + super.awakeFromInsert() + setPrimitiveValue(UUID(), forKey: #keyPath(MastodonNotification.identifier)) + } + + public override func willSave() { + super.willSave() + setPrimitiveValue(Date(), forKey: #keyPath(MastodonNotification.updatedAt)) + } + +} + +public extension MastodonNotification { + @discardableResult + static func insert( + into context: NSManagedObjectContext, + domain: String, + property: Property + ) -> MastodonNotification { + let notification: MastodonNotification = context.insertObject() + notification.id = property.id + notification.createAt = property.createdAt + notification.updatedAt = property.createdAt + notification.type = property.type + notification.account = property.account + notification.status = property.status + notification.domain = domain + return notification + } +} + +public extension MastodonNotification { + struct Property { + public init(id: String, + type: String, + account: MastodonUser, + status: Status?, + createdAt: Date) { + self.id = id + self.type = type + self.account = account + self.status = status + self.createdAt = createdAt + } + + public let id: String + public let type: String + public let account: MastodonUser + public let status: Status? + public let createdAt: Date + } +} + +extension MastodonNotification { + static func predicate(domain: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.domain), domain) + } + + static func predicate(type: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.type), type) + } + + public static func predicate(domain: String, type: String) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + MastodonNotification.predicate(domain: domain), + MastodonNotification.predicate(type: type) + ]) + } + + static func predicate(types: [String]) -> NSPredicate { + return NSPredicate(format: "%K IN %@", #keyPath(MastodonNotification.type), types) + } + + public static func predicate(domain: String, types: [String]) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + MastodonNotification.predicate(domain: domain), + MastodonNotification.predicate(types: types) + ]) + } +} + +extension MastodonNotification: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \MastodonNotification.updatedAt, ascending: false)] + } +} diff --git a/Localization/app.json b/Localization/app.json index 120458f74..33f1abc2d 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -321,6 +321,19 @@ }, "favorite": { "title": "Your Favorites" + }, + "notification": { + "title": { + "Everything": "Everything", + "Mentions": "Mentions" + }, + "action": { + "follow": "followed you", + "favourite": "favorited your post", + "reblog": "rebloged your post", + "poll": "Your poll has ended", + "mention": "mentioned you" + } } } } diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index b52139898..b2258c1df 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -30,6 +30,8 @@ 0FB3D33825E6401400AAD544 /* PickServerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D33725E6401400AAD544 /* PickServerCell.swift */; }; 18BC7629F65E6DB12CB8416D /* Pods_Mastodon_MastodonUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */; }; 2D04F42525C255B9003F936F /* APIService+PublicTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */; }; + 2D084B8D26258EA3003AA3AF /* NotificationViewModel+diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */; }; + 2D084B9326259545003AA3AF /* NotificationViewModel+LoadLatestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */; }; 2D0B7A1D261D839600B44727 /* SearchHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D0B7A1C261D839600B44727 /* SearchHistory.swift */; }; 2D152A8C25C295CC009AA50C /* StatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A8B25C295CC009AA50C /* StatusView.swift */; }; 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A9125C2980C009AA50C /* UIFont.swift */; }; @@ -49,6 +51,8 @@ 2D34D9D126148D9E0081BFC0 /* APIService+Recommend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D34D9D026148D9E0081BFC0 /* APIService+Recommend.swift */; }; 2D34D9DB261494120081BFC0 /* APIService+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D34D9DA261494120081BFC0 /* APIService+Search.swift */; }; 2D34D9E226149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D34D9E126149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift */; }; + 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D35237926256D920031AF25 /* NotificationSection.swift */; }; + 2D35238126256F690031AF25 /* NotificationTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D35238026256F690031AF25 /* NotificationTableViewCell.swift */; }; 2D364F7225E66D7500204FDC /* MastodonResendEmailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D364F7125E66D7500204FDC /* MastodonResendEmailViewController.swift */; }; 2D364F7825E66D8300204FDC /* MastodonResendEmailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D364F7725E66D8300204FDC /* MastodonResendEmailViewModel.swift */; }; 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */; }; @@ -76,6 +80,9 @@ 2D5A3D2825CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D2725CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift */; }; 2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */; }; 2D5A3D6225CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D6125CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift */; }; + 2D607AD826242FC500B70763 /* NotificationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D607AD726242FC500B70763 /* NotificationViewModel.swift */; }; + 2D6125472625436B00299647 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6125462625436B00299647 /* Notification.swift */; }; + 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61254C262547C200299647 /* APIService+Notification.swift */; }; 2D61335825C188A000CAE157 /* APIService+Persist+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335725C188A000CAE157 /* APIService+Persist+Status.swift */; }; 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335D25C1894B00CAE157 /* APIService.swift */; }; 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */ = {isa = PBXBuildFile; productRef = 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */; }; @@ -91,6 +98,7 @@ 2D76319F25C1521200929FB9 /* StatusSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D76319E25C1521200929FB9 /* StatusSection.swift */; }; 2D7631A825C1535600929FB9 /* StatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D7631A725C1535600929FB9 /* StatusTableViewCell.swift */; }; 2D7631B325C159F700929FB9 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D7631B225C159F700929FB9 /* Item.swift */; }; + 2D7867192625B77500211898 /* NotificationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D7867182625B77500211898 /* NotificationItem.swift */; }; 2D79E701261EA5550011E398 /* APIService+CoreData+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D79E700261EA5550011E398 /* APIService+CoreData+Tag.swift */; }; 2D82B9FF25E7863200E36F0F /* OnboardingViewControllerAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D82B9FE25E7863200E36F0F /* OnboardingViewControllerAppearance.swift */; }; 2D82BA0525E7897700E36F0F /* MastodonResendEmailViewModelNavigationDelegateShim.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D82BA0425E7897700E36F0F /* MastodonResendEmailViewModelNavigationDelegateShim.swift */; }; @@ -409,6 +417,8 @@ 0FB3D33125E5F50E00AAD544 /* PickServerSearchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerSearchCell.swift; sourceTree = ""; }; 0FB3D33725E6401400AAD544 /* PickServerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCell.swift; sourceTree = ""; }; 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+PublicTimeline.swift"; sourceTree = ""; }; + 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+diffable.swift"; sourceTree = ""; }; + 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+LoadLatestState.swift"; sourceTree = ""; }; 2D0B7A1C261D839600B44727 /* SearchHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistory.swift; sourceTree = ""; }; 2D152A8B25C295CC009AA50C /* StatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusView.swift; sourceTree = ""; }; 2D152A9125C2980C009AA50C /* UIFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFont.swift; sourceTree = ""; }; @@ -428,6 +438,8 @@ 2D34D9D026148D9E0081BFC0 /* APIService+Recommend.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Recommend.swift"; sourceTree = ""; }; 2D34D9DA261494120081BFC0 /* APIService+Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Search.swift"; sourceTree = ""; }; 2D34D9E126149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendTagsCollectionViewCell.swift; sourceTree = ""; }; + 2D35237926256D920031AF25 /* NotificationSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationSection.swift; sourceTree = ""; }; + 2D35238026256F690031AF25 /* NotificationTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTableViewCell.swift; sourceTree = ""; }; 2D364F7125E66D7500204FDC /* MastodonResendEmailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewController.swift; sourceTree = ""; }; 2D364F7725E66D8300204FDC /* MastodonResendEmailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewModel.swift; sourceTree = ""; }; 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentOffsetAdjustableTimelineViewControllerDelegate.swift; sourceTree = ""; }; @@ -453,6 +465,9 @@ 2D5A3D2725CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewModel+Diffable.swift"; sourceTree = ""; }; 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollViewContainer.swift; sourceTree = ""; }; 2D5A3D6125CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewController+DebugAction.swift"; sourceTree = ""; }; + 2D607AD726242FC500B70763 /* NotificationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewModel.swift; sourceTree = ""; }; + 2D6125462625436B00299647 /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = ""; }; + 2D61254C262547C200299647 /* APIService+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Notification.swift"; sourceTree = ""; }; 2D61335725C188A000CAE157 /* APIService+Persist+Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Persist+Status.swift"; sourceTree = ""; }; 2D61335D25C1894B00CAE157 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; 2D650FAA25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Error+Detail.swift"; sourceTree = ""; }; @@ -467,6 +482,7 @@ 2D76319E25C1521200929FB9 /* StatusSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusSection.swift; sourceTree = ""; }; 2D7631A725C1535600929FB9 /* StatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewCell.swift; sourceTree = ""; }; 2D7631B225C159F700929FB9 /* Item.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = ""; }; + 2D7867182625B77500211898 /* NotificationItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationItem.swift; sourceTree = ""; }; 2D79E700261EA5550011E398 /* APIService+CoreData+Tag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+Tag.swift"; sourceTree = ""; }; 2D82B9FE25E7863200E36F0F /* OnboardingViewControllerAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingViewControllerAppearance.swift; sourceTree = ""; }; 2D82BA0425E7897700E36F0F /* MastodonResendEmailViewModelNavigationDelegateShim.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewModelNavigationDelegateShim.swift; sourceTree = ""; }; @@ -878,6 +894,14 @@ path = CollectionViewCell; sourceTree = ""; }; + 2D35237F26256F470031AF25 /* TableViewCell */ = { + isa = PBXGroup; + children = ( + 2D35238026256F690031AF25 /* NotificationTableViewCell.swift */, + ); + path = TableViewCell; + sourceTree = ""; + }; 2D364F7025E66D5B00204FDC /* ResendEmail */ = { isa = PBXGroup; children = ( @@ -1032,6 +1056,7 @@ DB1E346725F518E20079D7DF /* CategoryPickerSection.swift */, 2DE0FAC02615F04D00CDF649 /* RecommendHashTagSection.swift */, 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */, + 2D35237926256D920031AF25 /* NotificationSection.swift */, 2D198648261C0B8500F0B013 /* SearchResultSection.swift */, DB66729525F9F91600D60309 /* ComposeStatusSection.swift */, DB447680260B3ED600B66B82 /* CustomEmojiPickerSection.swift */, @@ -1083,6 +1108,7 @@ children = ( 2D7631B225C159F700929FB9 /* Item.swift */, 2D198642261BF09500F0B013 /* SearchResultItem.swift */, + 2D7867182625B77500211898 /* NotificationItem.swift */, DB4481CB25EE2AFE00BEFB67 /* PollItem.swift */, DB1E347725F519300079D7DF /* PickServerItem.swift */, DB1FD45925F27898004CFCFC /* CategoryPickerItem.swift */, @@ -1312,6 +1338,7 @@ DB71FD5125F8CCAA00512AE1 /* APIService+Status.swift */, DB49A62A25FF36C700B98345 /* APIService+CustomEmoji.swift */, DB9A488326034BD7008B817C /* APIService+Status.swift */, + 2D61254C262547C200299647 /* APIService+Notification.swift */, DB9A488F26035963008B817C /* APIService+Media.swift */, 2D34D9D026148D9E0081BFC0 /* APIService+Recommend.swift */, 2D34D9DA261494120081BFC0 /* APIService+Search.swift */, @@ -1487,6 +1514,7 @@ isa = PBXGroup; children = ( DB89BA2625C110B4008580ED /* Status.swift */, + 2D6125462625436B00299647 /* Notification.swift */, 2D0B7A1C261D839600B44727 /* SearchHistory.swift */, DB8AF52425C131D1002E6C99 /* MastodonUser.swift */, DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */, @@ -1642,6 +1670,10 @@ isa = PBXGroup; children = ( DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */, + 2D607AD726242FC500B70763 /* NotificationViewModel.swift */, + 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */, + 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */, + 2D35237F26256F470031AF25 /* TableViewCell */, ); path = Notification; sourceTree = ""; @@ -2210,6 +2242,7 @@ 2D8434F525FF465D00EECE90 /* HomeTimelineNavigationBarTitleViewModel.swift in Sources */, 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */, DBAE3F882615DDF4004B8251 /* UserProviderFacade.swift in Sources */, + 2D607AD826242FC500B70763 /* NotificationViewModel.swift in Sources */, DBA0A10925FB3C2B0079C110 /* RoundedEdgesButton.swift in Sources */, DBABE3EC25ECAC4B00879EE5 /* WelcomeIllustrationView.swift in Sources */, DB71FD4625F8C6D200512AE1 /* StatusProvider+UITableViewDataSourcePrefetching.swift in Sources */, @@ -2244,6 +2277,7 @@ DBE3CDEC261C6B2900430CC6 /* FavoriteViewController.swift in Sources */, 2D939AB525EDD8A90076FA61 /* String.swift in Sources */, DB4481B925EE289600BEFB67 /* UITableView.swift in Sources */, + 2D35238126256F690031AF25 /* NotificationTableViewCell.swift in Sources */, DBE3CDBB261C427900430CC6 /* TimelineHeaderTableViewCell.swift in Sources */, 0FAA101C25E10E760017CCDE /* UIFont.swift in Sources */, 2D38F1D525CD465300561493 /* HomeTimelineViewController.swift in Sources */, @@ -2263,6 +2297,7 @@ DBD9149025DF6D8D00903DFD /* APIService+Onboarding.swift in Sources */, DBAE3FAF26172FC0004B8251 /* RemoteProfileViewModel.swift in Sources */, DBE3CE0D261D767100430CC6 /* FavoriteViewController+StatusProvider.swift in Sources */, + 2D084B9326259545003AA3AF /* NotificationViewModel+LoadLatestState.swift in Sources */, DB98337F25C9452D00AD9700 /* APIService+APIError.swift in Sources */, DB9E0D6F25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift in Sources */, 2DF123A725C3B0210020F248 /* ActiveLabel.swift in Sources */, @@ -2321,6 +2356,7 @@ DB789A1C25F9F76A0071ACA0 /* ComposeStatusContentCollectionViewCell.swift in Sources */, DB1FD43625F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift in Sources */, 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */, + 2D084B8D26258EA3003AA3AF /* NotificationViewModel+diffable.swift in Sources */, DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */, 2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */, DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */, @@ -2329,6 +2365,7 @@ 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */, DB6C8C0F25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift in Sources */, DB1E346825F518E20079D7DF /* CategoryPickerSection.swift in Sources */, + 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */, DBB525642612C988002F1F29 /* MeProfileViewModel.swift in Sources */, DBAE3F822615DDA3004B8251 /* ProfileViewController+UserProvider.swift in Sources */, DBC7A67C260DFADE00E57475 /* StatusPublishService.swift in Sources */, @@ -2358,6 +2395,7 @@ 2D650FAB25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift in Sources */, DB118A8C25E4BFB500FAB162 /* HighlightDimmableButton.swift in Sources */, DBAE3FA92617106E004B8251 /* MastodonMetricFormatter.swift in Sources */, + 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */, DB084B5725CBC56C00F898ED /* Status.swift in Sources */, DB447691260B406600B66B82 /* CustomEmojiPickerItemCollectionViewCell.swift in Sources */, DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */, @@ -2370,6 +2408,7 @@ DB71FD3625F8A16C00512AE1 /* APIService+Persist+PersistMemo.swift in Sources */, DBBE1B4525F3474B0081417A /* MastodonPickServerAppearance.swift in Sources */, DB98338725C945ED00AD9700 /* Strings.swift in Sources */, + 2D7867192625B77500211898 /* NotificationItem.swift in Sources */, DB45FAB625CA5485005A8AC7 /* UIAlertController.swift in Sources */, DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */, 2DFF41892614A4DC00F776A4 /* UIView+Constraint.swift in Sources */, @@ -2472,6 +2511,7 @@ 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */, DB4481B325EE16D000BEFB67 /* PollOption.swift in Sources */, DB89BA4425C1165F008580ED /* Managed.swift in Sources */, + 2D6125472625436B00299647 /* Notification.swift in Sources */, DB89BA4325C1165F008580ED /* NetworkUpdatable.swift in Sources */, DB8AF56825C13E2A002E6C99 /* HomeTimelineIndex.swift in Sources */, DB45FAED25CA7A9A005A8AC7 /* MastodonAuthentication.swift in Sources */, diff --git a/Mastodon/Diffiable/Item/NotificationItem.swift b/Mastodon/Diffiable/Item/NotificationItem.swift new file mode 100644 index 000000000..e4a53d2b1 --- /dev/null +++ b/Mastodon/Diffiable/Item/NotificationItem.swift @@ -0,0 +1,40 @@ +// +// NotificationItem.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/13. +// + +import Foundation +import CoreData + +enum NotificationItem { + + case notification(ObjectID: NSManagedObjectID) + + case bottomLoader +} + +extension NotificationItem: Equatable { + static func == (lhs: NotificationItem, rhs: NotificationItem) -> Bool { + switch (lhs, rhs) { + case (.bottomLoader, .bottomLoader): + return true + case (.notification(let idLeft),.notification(let idRight)): + return idLeft == idRight + default: + return false + } + } +} + +extension NotificationItem: Hashable { + func hash(into hasher: inout Hasher) { + switch self { + case .notification(let id): + hasher.combine(id) + case .bottomLoader: + hasher.combine(String(describing: NotificationItem.bottomLoader.self)) + } + } +} diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift new file mode 100644 index 000000000..d697d3cef --- /dev/null +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -0,0 +1,75 @@ +// +// NotificationSection.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/13. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import UIKit +import Combine + +enum NotificationSection: Equatable, Hashable { + case main +} + +extension NotificationSection { + static func tableViewDiffableDataSource( + for tableView: UITableView, + timestampUpdatePublisher: AnyPublisher, + managedObjectContext: NSManagedObjectContext + ) -> UITableViewDiffableDataSource { + + return UITableViewDiffableDataSource(tableView: tableView) { (tableView, indexPath, notificationItem) -> UITableViewCell? in + switch notificationItem { + case .notification(let objectID): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationTableViewCell.self), for: indexPath) as! NotificationTableViewCell + let notification = managedObjectContext.object(with: objectID) as! MastodonNotification + let type = Mastodon.Entity.Notification.NotificationType(rawValue: notification.type) + + var actionText: String + var actionImageName: String + switch type { + case .follow: + actionText = L10n.Scene.Notification.Action.follow + actionImageName = "person.crop.circle.badge.checkmark" + case .favourite: + actionText = L10n.Scene.Notification.Action.favourite + actionImageName = "star.fill" + case .reblog: + actionText = L10n.Scene.Notification.Action.reblog + actionImageName = "arrow.2.squarepath" + case .mention: + actionText = L10n.Scene.Notification.Action.mention + actionImageName = "at" + case .poll: + actionText = L10n.Scene.Notification.Action.poll + actionImageName = "list.bullet" + default: + actionText = "" + actionImageName = "" + } + + timestampUpdatePublisher + .sink { _ in + let timeText = notification.createAt.shortTimeAgoSinceNow + cell.actionLabel.text = actionText + " · " + timeText + } + .store(in: &cell.disposeBag) + cell.nameLabel.text = notification.account.displayName + + if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { + cell.actionImageView.image = actionImage + } + return cell + case .bottomLoader: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchBottomLoader.self)) as! SearchBottomLoader + cell.startAnimating() + return cell + } + } + } +} diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index 14b993881..a94afa130 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -339,6 +339,26 @@ internal enum L10n { internal static let publishing = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Publishing") } } + internal enum Notification { + internal enum Action { + /// favorited your toot + internal static let favourite = L10n.tr("Localizable", "Scene.Notification.Action.Favourite") + /// followed you + internal static let follow = L10n.tr("Localizable", "Scene.Notification.Action.Follow") + /// mentioned you + internal static let mention = L10n.tr("Localizable", "Scene.Notification.Action.Mention") + /// Your poll has ended + internal static let poll = L10n.tr("Localizable", "Scene.Notification.Action.Poll") + /// boosted your toot + internal static let reblog = L10n.tr("Localizable", "Scene.Notification.Action.Reblog") + } + internal enum Title { + /// Everything + internal static let everything = L10n.tr("Localizable", "Scene.Notification.Title.Everything") + /// Mentions + internal static let mentions = L10n.tr("Localizable", "Scene.Notification.Title.Mentions") + } + } internal enum Profile { /// %@ posts internal static func subtitle(_ p1: Any) -> String { diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings index 40000befa..e4b10c0cf 100644 --- a/Mastodon/Resources/en.lproj/Localizable.strings +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -114,6 +114,13 @@ tap the link to confirm your account."; "Scene.HomeTimeline.NavigationBarState.Published" = "Published!"; "Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post..."; "Scene.HomeTimeline.Title" = "Home"; +"Scene.Notification.Action.Favourite" = "favorited your toot"; +"Scene.Notification.Action.Follow" = "followed you"; +"Scene.Notification.Action.Mention" = "mentioned you"; +"Scene.Notification.Action.Poll" = "Your poll has ended"; +"Scene.Notification.Action.Reblog" = "boosted your toot"; +"Scene.Notification.Title.Everything" = "Everything"; +"Scene.Notification.Title.Mentions" = "Mentions"; "Scene.Profile.Dashboard.Followers" = "followers"; "Scene.Profile.Dashboard.Following" = "following"; "Scene.Profile.Dashboard.Posts" = "posts"; diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index f8b3ba815..51a94e89e 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -2,23 +2,147 @@ // NotificationViewController.swift // Mastodon // -// Created by MainasuK Cirno on 2021-2-23. +// Created by sxiaojian on 2021/4/12. // import UIKit +import Combine +import OSLog final class NotificationViewController: UIViewController, NeedsDependency { weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + var disposeBag = Set() + private(set) lazy var viewModel = NotificationViewModel(context: context, coordinator: coordinator) + + let segmentControl: UISegmentedControl = { + let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything,L10n.Scene.Notification.Title.mentions]) + control.selectedSegmentIndex = 0 + control.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .touchUpInside) + return control + }() + + let tableView: UITableView = { + let tableView = ControlContainableTableView() + tableView.rowHeight = UITableView.automaticDimension + tableView.separatorStyle = .none + tableView.backgroundColor = .clear + tableView.register(NotificationTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationTableViewCell.self)) + return tableView + }() + + let refreshControl = UIRefreshControl() + } extension NotificationViewController { override func viewDidLoad() { super.viewDidLoad() + view.backgroundColor = Asset.Colors.Background.searchResult.color + navigationItem.titleView = segmentControl + view.addSubview(tableView) + tableView.constrain([ + tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + tableView.refreshControl = refreshControl + refreshControl.addTarget(self, action: #selector(NotificationViewController.refreshControlValueChanged(_:)), for: .valueChanged) + + tableView.delegate = self + viewModel.tableView = tableView + viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self + viewModel.setupDiffableDataSource(for: tableView) + + // bind refresh control + viewModel.isFetchingLatestNotification + .receive(on: DispatchQueue.main) + .sink { [weak self] isFetching in + guard let self = self else { return } + if !isFetching { + UIView.animate(withDuration: 0.5) { [weak self] in + guard let self = self else { return } + self.refreshControl.endRefreshing() + } + } + } + .store(in: &disposeBag) } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + // needs trigger manually after onboarding dismiss + setNeedsStatusBarAppearanceUpdate() + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + DispatchQueue.main.async { [weak self] in + guard let self = self else { return } + if (self.viewModel.fetchedResultsController.fetchedObjects ?? []).count == 0 { + self.viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) + } + } + } + + override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { + super.viewWillTransition(to: size, with: coordinator) + + coordinator.animate { _ in + // do nothing + } completion: { _ in + self.tableView.reloadData() + } + } + } + +extension NotificationViewController { + @objc private func segmentedControlValueChanged(_ sender: UISegmentedControl) { + os_log("%{public}s[%{public}ld], %{public}s: select at index: %ld", ((#file as NSString).lastPathComponent), #line, #function, sender.selectedSegmentIndex) + } + + @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { + guard viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) else { + sender.endRefreshing() + return + } + } +} + +// MARK: - UITableViewDelegate +extension NotificationViewController: UITableViewDelegate { + + func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { + return 68 + } +} + +// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate +extension NotificationViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { + func navigationBar() -> UINavigationBar? { + return navigationController?.navigationBar + } +} + +//// MARK: - UIScrollViewDelegate +//extension NotificationViewController { +// func scrollViewDidScroll(_ scrollView: UIScrollView) { +// handleScrollViewDidScroll(scrollView) +// } +//} +// +//extension NotificationViewController: LoadMoreConfigurableTableViewContainer { +// typealias BottomLoaderTableViewCell = SearchBottomLoader +// typealias LoadingState = NotificationViewController.LoadOldestState.Loading +// var loadMoreConfigurableTableView: UITableView { return tableView } +// var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadoldestStateMachine } +//} diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift new file mode 100644 index 000000000..364085c89 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift @@ -0,0 +1,96 @@ +// +// NotificationViewModel+LoadLatestState.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/13. +// + +import os.log +import func QuartzCore.CACurrentMediaTime +import Foundation +import CoreData +import CoreDataStack +import GameplayKit +import MastodonSDK + +extension NotificationViewModel { + class LoadLatestState: GKState { + weak var viewModel: NotificationViewModel? + + init(viewModel: NotificationViewModel) { + self.viewModel = viewModel + } + + override func didEnter(from previousState: GKState?) { + os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + viewModel?.loadLatestStateMachinePublisher.send(self) + } + } +} + +extension NotificationViewModel.LoadLatestState { + class Initial: NotificationViewModel.LoadLatestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Loading.self + } + } + + class Loading: NotificationViewModel.LoadLatestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Fail.self || stateClass == Idle.self + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + // sign out when loading will enter here + stateMachine.enter(Fail.self) + return + } + let query = Mastodon.API.Notifications.Query( + maxID: nil, + sinceID: nil, + minID: nil, + limit: nil, + excludeTypes: Mastodon.API.Notifications.allExcludeTypes(), + accountID: nil) + viewModel.context.apiService.allNotifications( + domain: activeMastodonAuthenticationBox.domain, + query: query, + mastodonAuthenticationBox: activeMastodonAuthenticationBox) + .sink { completion in + switch completion { + case .failure(let error): + viewModel.isFetchingLatestNotification.value = false + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + case .finished: + // handle isFetchingLatestTimeline in fetch controller delegate + break + } + + stateMachine.enter(Idle.self) + } receiveValue: { response in + if response.value.isEmpty { + viewModel.isFetchingLatestNotification.value = false + } + } + .store(in: &viewModel.disposeBag) + + + } + } + + class Fail: NotificationViewModel.LoadLatestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Loading.self || stateClass == Idle.self + } + } + + class Idle: NotificationViewModel.LoadLatestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Loading.self + } + } + +} diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift new file mode 100644 index 000000000..c68096c86 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -0,0 +1,118 @@ +// +// NotificationViewModel+diffable.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/13. +// + +import os.log +import UIKit +import CoreData +import CoreDataStack + +extension NotificationViewModel { + + func setupDiffableDataSource( + for tableView: UITableView + ) { + let timestampUpdatePublisher = Timer.publish(every: 30.0, on: .main, in: .common) + .autoconnect() + .share() + .eraseToAnyPublisher() + + diffableDataSource = NotificationSection.tableViewDiffableDataSource( + for: tableView, + timestampUpdatePublisher: timestampUpdatePublisher, + managedObjectContext: context.managedObjectContext + ) + } + +} + +extension NotificationViewModel: NSFetchedResultsControllerDelegate { + func controllerWillChangeContent(_ controller: NSFetchedResultsController) { + os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + + func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { + os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + + guard let tableView = self.tableView else { return } + guard let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } + + guard let diffableDataSource = self.diffableDataSource else { return } + let oldSnapshot = diffableDataSource.snapshot() + + let predicate = fetchedResultsController.fetchRequest.predicate + let parentManagedObjectContext = fetchedResultsController.managedObjectContext + let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) + managedObjectContext.parent = parentManagedObjectContext + + managedObjectContext.perform { + + let notifications: [MastodonNotification] = { + let request = MastodonNotification.sortedFetchRequest + request.returnsObjectsAsFaults = false + request.predicate = predicate + do { + return try managedObjectContext.fetch(request) + } catch { + assertionFailure(error.localizedDescription) + return [] + } + }() + + var newSnapshot = NSDiffableDataSourceSnapshot() + newSnapshot.appendSections([.main]) + newSnapshot.appendItems(notifications.map({NotificationItem.notification(ObjectID: $0.objectID)}), toSection: .main) + newSnapshot.appendItems([.bottomLoader], toSection: .main) + + DispatchQueue.main.async { + guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { + diffableDataSource.apply(newSnapshot) + self.isFetchingLatestNotification.value = false + return + } + + diffableDataSource.apply(newSnapshot, animatingDifferences: false) { + tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) + tableView.contentOffset.y = tableView.contentOffset.y - difference.offset + self.isFetchingLatestNotification.value = false + } + } + } + } + + private struct Difference { + let item: T + let sourceIndexPath: IndexPath + let targetIndexPath: IndexPath + let offset: CGFloat + } + + private func calculateReloadSnapshotDifference( + navigationBar: UINavigationBar, + tableView: UITableView, + oldSnapshot: NSDiffableDataSourceSnapshot, + newSnapshot: NSDiffableDataSourceSnapshot + ) -> Difference? { + guard oldSnapshot.numberOfItems != 0 else { return nil } + + // old snapshot not empty. set source index path to first item if not match + let sourceIndexPath = UIViewController.topVisibleTableViewCellIndexPath(in: tableView, navigationBar: navigationBar) ?? IndexPath(row: 0, section: 0) + + guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } + + let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] + guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil } + let targetIndexPath = IndexPath(row: itemIndex, section: 0) + + let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar) + return Difference( + item: timelineItem, + sourceIndexPath: sourceIndexPath, + targetIndexPath: targetIndexPath, + offset: offset + ) + } +} diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift new file mode 100644 index 000000000..4736785f6 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -0,0 +1,87 @@ +// +// NotificationViewModel.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/12. +// + +import Foundation +import Combine +import UIKit +import CoreData +import CoreDataStack +import GameplayKit + +final class NotificationViewModel: NSObject { + + var disposeBag = Set() + + // input + let context: AppContext + weak var coordinator: SceneCoordinator! + weak var tableView: UITableView! + weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? + + + let activeMastodonAuthenticationBox: CurrentValueSubject + let fetchedResultsController: NSFetchedResultsController! + let notificationPredicate = CurrentValueSubject(nil) + let cellFrameCache = NSCache() + + let isFetchingLatestNotification = CurrentValueSubject(false) + + //output + var diffableDataSource: UITableViewDiffableDataSource! + // top loader + private(set) lazy var loadLatestStateMachine: GKStateMachine = { + // exclude timeline middle fetcher state + let stateMachine = GKStateMachine(states: [ + LoadLatestState.Initial(viewModel: self), + LoadLatestState.Loading(viewModel: self), + LoadLatestState.Fail(viewModel: self), + LoadLatestState.Idle(viewModel: self), + ]) + stateMachine.enter(LoadLatestState.Initial.self) + return stateMachine + }() + + lazy var loadLatestStateMachinePublisher = CurrentValueSubject(nil) + + init(context: AppContext,coordinator: SceneCoordinator) { + self.coordinator = coordinator + self.context = context + self.activeMastodonAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) + self.fetchedResultsController = { + let fetchRequest = MastodonNotification.sortedFetchRequest + fetchRequest.returnsObjectsAsFaults = false + fetchRequest.relationshipKeyPathsForPrefetching = [#keyPath(MastodonNotification.status),#keyPath(MastodonNotification.account)] + let controller = NSFetchedResultsController( + fetchRequest: fetchRequest, + managedObjectContext: context.managedObjectContext, + sectionNameKeyPath: nil, + cacheName: nil + ) + + return controller + }() + + super.init() + self.fetchedResultsController.delegate = self + context.authenticationService.activeMastodonAuthenticationBox + .assign(to: \.value, on: activeMastodonAuthenticationBox) + .store(in: &disposeBag) + + notificationPredicate + .compactMap{ $0 } + .sink { [weak self] predicate in + guard let self = self else { return } + self.fetchedResultsController.fetchRequest.predicate = predicate + do { + try self.fetchedResultsController.performFetch() + } catch { + assertionFailure(error.localizedDescription) + } + } + .store(in: &disposeBag) + } +} diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift new file mode 100644 index 000000000..8a1b35721 --- /dev/null +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -0,0 +1,109 @@ +// +// NotificationTableViewCell.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/13. +// + +import Foundation +import UIKit +import Combine + + +final class NotificationTableViewCell: UITableViewCell { + + static let actionImageBorderWidth: CGFloat = 3 + + var disposeBag = Set() + + let avatatImageView: UIImageView = { + let imageView = UIImageView() + imageView.layer.cornerRadius = 4 + imageView.layer.cornerCurve = .continuous + imageView.clipsToBounds = true + return imageView + }() + + let actionImageView: UIImageView = { + let imageView = UIImageView() + imageView.layer.cornerRadius = 4 + imageView.layer.cornerCurve = .continuous + imageView.clipsToBounds = true + imageView.layer.borderWidth = NotificationTableViewCell.actionImageBorderWidth + imageView.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + imageView.tintColor = Asset.Colors.Background.searchResult.color + return imageView + }() + + let actionLabel: UILabel = { + let label = UILabel() + label.textColor = Asset.Colors.Label.secondary.color + label.font = UIFont.preferredFont(forTextStyle: .body) + label.lineBreakMode = .byTruncatingTail + return label + }() + + let nameLabel: UILabel = { + let label = UILabel() + label.textColor = Asset.Colors.brandBlue.color + label.font = .systemFont(ofSize: 15, weight: .semibold) + label.lineBreakMode = .byTruncatingTail + return label + }() + + var nameLabelTop: NSLayoutConstraint! + + override func prepareForReuse() { + super.prepareForReuse() + avatatImageView.af.cancelImageRequest() + + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + configure() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + configure() + } +} + +extension NotificationTableViewCell { + + func configure() { + contentView.addSubview(avatatImageView) + avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) + avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) + + contentView.addSubview(actionImageView) + actionImageView.pin(toSize: CGSize(width: 24, height: 24)) + actionImageView.pin(top: 33, left: 33, bottom: nil, right: nil) + + nameLabelTop = nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor) + nameLabel.constrain([ + nameLabelTop, + nameLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 61) + ]) + + actionLabel.constrain([ + actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), + actionLabel.topAnchor.constraint(equalTo: nameLabel.topAnchor), + contentView.trailingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 4) + ]) + } + + public func nameLabelLayoutIn(center: Bool) { + if center { + nameLabelTop.constant = 24 + } else { + nameLabelTop.constant = 12 + } + } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + self.actionImageView.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + } +} diff --git a/Mastodon/Service/APIService/APIService+Notification.swift b/Mastodon/Service/APIService/APIService+Notification.swift new file mode 100644 index 000000000..745a04fa0 --- /dev/null +++ b/Mastodon/Service/APIService/APIService+Notification.swift @@ -0,0 +1,65 @@ +// +// APIService+Notification.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/13. +// + +import Foundation +import Combine +import CoreData +import CoreDataStack +import MastodonSDK +import OSLog + +extension APIService { + func allNotifications( + domain: String, + query: Mastodon.API.Notifications.Query, + mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox + ) -> AnyPublisher, Error> { + let authorization = mastodonAuthenticationBox.userAuthorization + return Mastodon.API.Notifications.getNotifications( + session: session, + domain: domain, + query: query, + authorization: authorization) + .flatMap { response -> AnyPublisher, Error> in + let log = OSLog.api + return self.backgroundManagedObjectContext.performChanges { + response.value.forEach { notification in + let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) + let flag = isCreated ? "+" : "-" + os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) + var status: Status? + if let statusEntity = notification.status { + let (statusInCoreData,_,_) = APIService.CoreData.createOrMergeStatus( + into: self.backgroundManagedObjectContext, + for: nil, + domain: domain, + entity: statusEntity, + statusCache: nil, + userCache: nil, + networkDate: Date(), + log: log) + status = statusInCoreData + } + // use constrain to avoid repeated save + _ = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: Date())) + + } + } + .setFailureType(to: Error.self) + .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Notification]> in + switch result { + case .success: + return response + case .failure(let error): + throw error + } + } + .eraseToAnyPublisher() + } + .eraseToAnyPublisher() + } +} diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift index cdee82926..b7fd0fb46 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift @@ -1,18 +1,19 @@ // // File.swift -// +// // // Created by BradGao on 2021/4/1. // -import Foundation import Combine +import Foundation -extension Mastodon.API.Notifications { - static func notificationsEndpointURL(domain: String) -> URL { - Mastodon.API.endpointV2URL(domain: domain).appendingPathComponent("notifications") +public extension Mastodon.API.Notifications { + internal static func notificationsEndpointURL(domain: String) -> URL { + Mastodon.API.endpointURL(domain: domain).appendingPathComponent("notifications") } - static func getNotificationEndpointURL(domain: String, notificationID: String) -> URL { + + internal static func getNotificationEndpointURL(domain: String, notificationID: String) -> URL { notificationsEndpointURL(domain: domain).appendingPathComponent(notificationID) } @@ -27,15 +28,15 @@ extension Mastodon.API.Notifications { /// - Parameters: /// - session: `URLSession` /// - domain: Mastodon instance domain. e.g. "example.com" - /// - query: `GetAllNotificationsQuery` with query parameters + /// - query: `NotificationsQuery` with query parameters /// - authorization: User token /// - Returns: `AnyPublisher` contains `Token` nested in the response - public static func getAll( + static func getNotifications( session: URLSession, domain: String, - query: GetAllNotificationsQuery, - authorization: Mastodon.API.OAuth.Authorization? - ) -> AnyPublisher, Error> { + query: Mastodon.API.Notifications.Query, + authorization: Mastodon.API.OAuth.Authorization + ) -> AnyPublisher, Error> { let request = Mastodon.API.get( url: notificationsEndpointURL(domain: domain), query: query, @@ -63,12 +64,12 @@ extension Mastodon.API.Notifications { /// - notificationID: ID of the notification. /// - authorization: User token /// - Returns: `AnyPublisher` contains `Token` nested in the response - public static func get( + static func getNotification( session: URLSession, domain: String, notificationID: String, - authorization: Mastodon.API.OAuth.Authorization? - ) -> AnyPublisher, Error> { + authorization: Mastodon.API.OAuth.Authorization + ) -> AnyPublisher, Error> { let request = Mastodon.API.get( url: getNotificationEndpointURL(domain: domain, notificationID: notificationID), query: nil, @@ -82,12 +83,22 @@ extension Mastodon.API.Notifications { .eraseToAnyPublisher() } - public struct GetAllNotificationsQuery: Codable, PagedQueryType, GetQuery { + static func allExcludeTypes() -> [Mastodon.Entity.Notification.NotificationType] { + [.follow] + } + + static func mentionsExcludeTypes() -> [Mastodon.Entity.Notification.NotificationType] { + [.follow, .followRequest, .favourite, .reblog, .poll] + } +} + +public extension Mastodon.API.Notifications { + struct Query: Codable, PagedQueryType, GetQuery { public let maxID: Mastodon.Entity.Status.ID? public let sinceID: Mastodon.Entity.Status.ID? public let minID: Mastodon.Entity.Status.ID? public let limit: Int? - public let excludeTypes: [String]? + public let excludeTypes: [Mastodon.Entity.Notification.NotificationType]? public let accountID: String? public init( @@ -95,7 +106,7 @@ extension Mastodon.API.Notifications { sinceID: Mastodon.Entity.Status.ID? = nil, minID: Mastodon.Entity.Status.ID? = nil, limit: Int? = nil, - excludeTypes: [String]? = nil, + excludeTypes: [Mastodon.Entity.Notification.NotificationType]? = nil, accountID: String? = nil ) { self.maxID = maxID @@ -114,7 +125,7 @@ extension Mastodon.API.Notifications { limit.flatMap { items.append(URLQueryItem(name: "limit", value: String($0))) } if let excludeTypes = excludeTypes { excludeTypes.forEach { - items.append(URLQueryItem(name: "exclude_types[]", value: $0)) + items.append(URLQueryItem(name: "exclude_types[]", value: $0.rawValue)) } } accountID.flatMap { items.append(URLQueryItem(name: "account_id", value: $0)) } diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Notification.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Notification.swift index 413c89bd3..0cdcc2e7c 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Notification.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Notification.swift @@ -37,6 +37,7 @@ extension Mastodon.Entity { } extension Mastodon.Entity.Notification { + public typealias NotificationType = Type public enum `Type`: RawRepresentable, Codable { case follow case followRequest From 42628398e6891c34d2821262b1abd17c436c3140 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Tue, 13 Apr 2021 21:31:49 +0800 Subject: [PATCH 10/37] chore: display Notification Cell --- CoreDataStack/Entity/Notification.swift | 14 +------ .../Section/NotificationSection.swift | 20 ++++++++++ Mastodon/Generated/Assets.swift | 5 +++ Mastodon/Generated/Strings.swift | 4 +- .../Colors/Notification/Contents.json | 9 +++++ .../favourite.colorset/Contents.json | 20 ++++++++++ .../mention.colorset/Contents.json | 38 +++++++++++++++++++ .../reblog.colorset/Contents.json | 38 +++++++++++++++++++ .../Resources/en.lproj/Localizable.strings | 4 +- .../NotificationViewController.swift | 11 ++++-- ...otificationViewModel+LoadLatestState.swift | 2 +- .../NotificationViewModel+diffable.swift | 4 +- .../Notification/NotificationViewModel.swift | 21 +++++++++- .../NotificationTableViewCell.swift | 31 ++++++++++----- .../APIService/APIService+Notification.swift | 7 ++-- .../API/Mastodon+API+Notifications.swift | 2 +- 16 files changed, 192 insertions(+), 38 deletions(-) create mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Notification/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json diff --git a/CoreDataStack/Entity/Notification.swift b/CoreDataStack/Entity/Notification.swift index f19f68988..144ad9c23 100644 --- a/CoreDataStack/Entity/Notification.swift +++ b/CoreDataStack/Entity/Notification.swift @@ -76,7 +76,7 @@ public extension MastodonNotification { } extension MastodonNotification { - static func predicate(domain: String) -> NSPredicate { + public static func predicate(domain: String) -> NSPredicate { return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.domain), domain) } @@ -90,17 +90,7 @@ extension MastodonNotification { MastodonNotification.predicate(type: type) ]) } - - static func predicate(types: [String]) -> NSPredicate { - return NSPredicate(format: "%K IN %@", #keyPath(MastodonNotification.type), types) - } - - public static func predicate(domain: String, types: [String]) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - MastodonNotification.predicate(domain: domain), - MastodonNotification.predicate(types: types) - ]) - } + } extension MastodonNotification: Managed { diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index d697d3cef..277a40f50 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -32,25 +32,32 @@ extension NotificationSection { var actionText: String var actionImageName: String + var color: UIColor switch type { case .follow: actionText = L10n.Scene.Notification.Action.follow actionImageName = "person.crop.circle.badge.checkmark" + color = Asset.Colors.brandBlue.color case .favourite: actionText = L10n.Scene.Notification.Action.favourite actionImageName = "star.fill" + color = Asset.Colors.Notification.favourite.color case .reblog: actionText = L10n.Scene.Notification.Action.reblog actionImageName = "arrow.2.squarepath" + color = Asset.Colors.Notification.reblog.color case .mention: actionText = L10n.Scene.Notification.Action.mention actionImageName = "at" + color = Asset.Colors.Notification.mention.color case .poll: actionText = L10n.Scene.Notification.Action.poll actionImageName = "list.bullet" + color = Asset.Colors.brandBlue.color default: actionText = "" actionImageName = "" + color = .clear } timestampUpdatePublisher @@ -59,11 +66,24 @@ extension NotificationSection { cell.actionLabel.text = actionText + " · " + timeText } .store(in: &cell.disposeBag) + let timeText = notification.createAt.shortTimeAgoSinceNow + cell.actionImageBackground.backgroundColor = color + cell.actionLabel.text = actionText + " · " + timeText cell.nameLabel.text = notification.account.displayName + cell.avatatImageView.af.setImage( + withURL: URL(string: notification.account.avatar)!, + placeholderImage: UIImage.placeholder(color: .systemFill), + imageTransition: .crossDissolve(0.2) + ) if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { cell.actionImageView.image = actionImage } + if let _ = notification.status { + cell.nameLabelLayoutIn(center: true) + } else { + cell.nameLabelLayoutIn(center: false) + } return cell case .bottomLoader: let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchBottomLoader.self)) as! SearchBottomLoader diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index 843fce02c..ef7ae9292 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -70,6 +70,11 @@ internal enum Asset { internal static let primary = ColorAsset(name: "Colors/Label/primary") internal static let secondary = ColorAsset(name: "Colors/Label/secondary") } + internal enum Notification { + internal static let favourite = ColorAsset(name: "Colors/Notification/favourite") + internal static let mention = ColorAsset(name: "Colors/Notification/mention") + internal static let reblog = ColorAsset(name: "Colors/Notification/reblog") + } internal enum Shadow { internal static let searchCard = ColorAsset(name: "Colors/Shadow/SearchCard") } diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index a94afa130..21a5053b8 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -341,7 +341,7 @@ internal enum L10n { } internal enum Notification { internal enum Action { - /// favorited your toot + /// favorited your post internal static let favourite = L10n.tr("Localizable", "Scene.Notification.Action.Favourite") /// followed you internal static let follow = L10n.tr("Localizable", "Scene.Notification.Action.Follow") @@ -349,7 +349,7 @@ internal enum L10n { internal static let mention = L10n.tr("Localizable", "Scene.Notification.Action.Mention") /// Your poll has ended internal static let poll = L10n.tr("Localizable", "Scene.Notification.Action.Poll") - /// boosted your toot + /// rebloged your post internal static let reblog = L10n.tr("Localizable", "Scene.Notification.Action.Reblog") } internal enum Title { diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Notification/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Colors/Notification/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json new file mode 100644 index 000000000..36de20274 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0", + "green" : "204", + "red" : "255" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json new file mode 100644 index 000000000..9dff2f59b --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "222", + "green" : "82", + "red" : "175" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "242", + "green" : "90", + "red" : "191" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json new file mode 100644 index 000000000..ec427ccaa --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "89", + "green" : "199", + "red" : "52" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "75", + "green" : "215", + "red" : "20" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings index e4b10c0cf..aa43ec64d 100644 --- a/Mastodon/Resources/en.lproj/Localizable.strings +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -114,11 +114,11 @@ tap the link to confirm your account."; "Scene.HomeTimeline.NavigationBarState.Published" = "Published!"; "Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post..."; "Scene.HomeTimeline.Title" = "Home"; -"Scene.Notification.Action.Favourite" = "favorited your toot"; +"Scene.Notification.Action.Favourite" = "favorited your post"; "Scene.Notification.Action.Follow" = "followed you"; "Scene.Notification.Action.Mention" = "mentioned you"; "Scene.Notification.Action.Poll" = "Your poll has ended"; -"Scene.Notification.Action.Reblog" = "boosted your toot"; +"Scene.Notification.Action.Reblog" = "rebloged your post"; "Scene.Notification.Title.Everything" = "Everything"; "Scene.Notification.Title.Mentions" = "Mentions"; "Scene.Profile.Dashboard.Followers" = "followers"; diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 51a94e89e..b87172925 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -27,9 +27,10 @@ final class NotificationViewController: UIViewController, NeedsDependency { let tableView: UITableView = { let tableView = ControlContainableTableView() tableView.rowHeight = UITableView.automaticDimension - tableView.separatorStyle = .none - tableView.backgroundColor = .clear + tableView.separatorStyle = .singleLine + tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) tableView.register(NotificationTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationTableViewCell.self)) + tableView.register(SearchBottomLoader.self, forCellReuseIdentifier: String(describing: SearchBottomLoader.self)) return tableView }() @@ -58,7 +59,7 @@ extension NotificationViewController { viewModel.tableView = tableView viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self viewModel.setupDiffableDataSource(for: tableView) - + viewModel.viewDidLoad.send() // bind refresh control viewModel.isFetchingLatestNotification .receive(on: DispatchQueue.main) @@ -124,6 +125,10 @@ extension NotificationViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return 68 } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + 68 + } } // MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift index 364085c89..3e88de9a7 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift @@ -43,7 +43,7 @@ extension NotificationViewModel.LoadLatestState { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let activeMastodonAuthenticationBox = viewModel.activeMastodonAuthenticationBox.value else { // sign out when loading will enter here stateMachine.enter(Fail.self) return diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index c68096c86..1d77d41b4 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -65,7 +65,9 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { var newSnapshot = NSDiffableDataSourceSnapshot() newSnapshot.appendSections([.main]) newSnapshot.appendItems(notifications.map({NotificationItem.notification(ObjectID: $0.objectID)}), toSection: .main) - newSnapshot.appendItems([.bottomLoader], toSection: .main) + if !notifications.isEmpty { + newSnapshot.appendItems([.bottomLoader], toSection: .main) + } DispatchQueue.main.async { guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 4736785f6..1b4890317 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -11,6 +11,7 @@ import UIKit import CoreData import CoreDataStack import GameplayKit +import MastodonSDK final class NotificationViewModel: NSObject { @@ -19,9 +20,10 @@ final class NotificationViewModel: NSObject { // input let context: AppContext weak var coordinator: SceneCoordinator! - weak var tableView: UITableView! + weak var tableView: UITableView? weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? + let viewDidLoad = PassthroughSubject() let activeMastodonAuthenticationBox: CurrentValueSubject let fetchedResultsController: NSFetchedResultsController! @@ -68,7 +70,13 @@ final class NotificationViewModel: NSObject { super.init() self.fetchedResultsController.delegate = self context.authenticationService.activeMastodonAuthenticationBox - .assign(to: \.value, on: activeMastodonAuthenticationBox) + .sink(receiveValue: { [weak self] box in + guard let self = self else { return } + self.activeMastodonAuthenticationBox.value = box + if let domain = box?.domain { + self.notificationPredicate.value = MastodonNotification.predicate(domain: domain) + } + }) .store(in: &disposeBag) notificationPredicate @@ -83,5 +91,14 @@ final class NotificationViewModel: NSObject { } } .store(in: &disposeBag) + + self.viewDidLoad + .sink { [weak self] in + + guard let domain = self?.activeMastodonAuthenticationBox.value?.domain else { return } + self?.notificationPredicate.value = MastodonNotification.predicate(domain: domain) + + } + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index 8a1b35721..b252b76d8 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -12,7 +12,7 @@ import Combine final class NotificationTableViewCell: UITableViewCell { - static let actionImageBorderWidth: CGFloat = 3 + static let actionImageBorderWidth: CGFloat = 2 var disposeBag = Set() @@ -26,15 +26,21 @@ final class NotificationTableViewCell: UITableViewCell { let actionImageView: UIImageView = { let imageView = UIImageView() - imageView.layer.cornerRadius = 4 - imageView.layer.cornerCurve = .continuous - imageView.clipsToBounds = true - imageView.layer.borderWidth = NotificationTableViewCell.actionImageBorderWidth - imageView.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor imageView.tintColor = Asset.Colors.Background.searchResult.color return imageView }() + let actionImageBackground: UIView = { + let view = UIView() + view.layer.cornerRadius = (24 + NotificationTableViewCell.actionImageBorderWidth)/2 + view.layer.cornerCurve = .continuous + view.clipsToBounds = true + view.layer.borderWidth = NotificationTableViewCell.actionImageBorderWidth + view.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + view.tintColor = Asset.Colors.Background.searchResult.color + return view + }() + let actionLabel: UILabel = { let label = UILabel() label.textColor = Asset.Colors.Label.secondary.color @@ -77,16 +83,21 @@ extension NotificationTableViewCell { avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) - contentView.addSubview(actionImageView) - actionImageView.pin(toSize: CGSize(width: 24, height: 24)) - actionImageView.pin(top: 33, left: 33, bottom: nil, right: nil) + contentView.addSubview(actionImageBackground) + actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationTableViewCell.actionImageBorderWidth, height: 24 + NotificationTableViewCell.actionImageBorderWidth)) + actionImageBackground.pin(top: 33, left: 33, bottom: nil, right: nil) + + actionImageBackground.addSubview(actionImageView) + actionImageView.constrainToCenter() nameLabelTop = nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor) + contentView.addSubview(nameLabel) nameLabel.constrain([ nameLabelTop, nameLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 61) ]) + contentView.addSubview(actionLabel) actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), actionLabel.topAnchor.constraint(equalTo: nameLabel.topAnchor), @@ -104,6 +115,6 @@ extension NotificationTableViewCell { override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - self.actionImageView.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + self.actionImageBackground.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor } } diff --git a/Mastodon/Service/APIService/APIService+Notification.swift b/Mastodon/Service/APIService/APIService+Notification.swift index 745a04fa0..84cb6d3c0 100644 --- a/Mastodon/Service/APIService/APIService+Notification.swift +++ b/Mastodon/Service/APIService/APIService+Notification.swift @@ -28,9 +28,7 @@ extension APIService { let log = OSLog.api return self.backgroundManagedObjectContext.performChanges { response.value.forEach { notification in - let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) - let flag = isCreated ? "+" : "-" - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) + let (mastodonUser,_) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) var status: Status? if let statusEntity = notification.status { let (statusInCoreData,_,_) = APIService.CoreData.createOrMergeStatus( @@ -45,7 +43,8 @@ extension APIService { status = statusInCoreData } // use constrain to avoid repeated save - _ = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: Date())) + let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: Date())) + os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)", (#file as NSString).lastPathComponent, #line, #function, notification.type, notification.account.username) } } diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift index b7fd0fb46..1cc54add5 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift @@ -84,7 +84,7 @@ public extension Mastodon.API.Notifications { } static func allExcludeTypes() -> [Mastodon.Entity.Notification.NotificationType] { - [.follow] + [.followRequest] } static func mentionsExcludeTypes() -> [Mastodon.Entity.Notification.NotificationType] { From 66b07f41dbb0f33724517d1f9236069250555950 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 15:00:48 +0800 Subject: [PATCH 11/37] chore: display status Content --- .../Section/NotificationSection.swift | 377 +++++++++++++++++- Mastodon/Generated/Assets.swift | 1 + .../notification.colorset/Contents.json | 38 ++ .../NotificationViewController.swift | 14 +- .../NotificationViewModel+diffable.swift | 13 +- .../Notification/NotificationViewModel.swift | 5 + .../NotificationTableViewCell.swift | 71 +++- 7 files changed, 494 insertions(+), 25 deletions(-) create mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Border/notification.colorset/Contents.json diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 277a40f50..09f0f87a2 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -20,13 +20,19 @@ extension NotificationSection { static func tableViewDiffableDataSource( for tableView: UITableView, timestampUpdatePublisher: AnyPublisher, - managedObjectContext: NSManagedObjectContext + managedObjectContext: NSManagedObjectContext, + delegate: NotificationTableViewCellDelegate, + dependency: NeedsDependency, + requestUserID: String ) -> UITableViewDiffableDataSource { - - return UITableViewDiffableDataSource(tableView: tableView) { (tableView, indexPath, notificationItem) -> UITableViewCell? in + return UITableViewDiffableDataSource(tableView: tableView) { + [weak delegate,weak dependency] + (tableView, indexPath, notificationItem) -> UITableViewCell? in + guard let dependency = dependency else { return nil } switch notificationItem { case .notification(let objectID): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationTableViewCell.self), for: indexPath) as! NotificationTableViewCell + cell.delegate = delegate let notification = managedObjectContext.object(with: objectID) as! MastodonNotification let type = Mastodon.Entity.Notification.NotificationType(rawValue: notification.type) @@ -69,7 +75,7 @@ extension NotificationSection { let timeText = notification.createAt.shortTimeAgoSinceNow cell.actionImageBackground.backgroundColor = color cell.actionLabel.text = actionText + " · " + timeText - cell.nameLabel.text = notification.account.displayName + cell.nameLabel.text = notification.account.displayName.isEmpty ? notification.account.username : notification.account.displayName cell.avatatImageView.af.setImage( withURL: URL(string: notification.account.avatar)!, placeholderImage: UIImage.placeholder(color: .systemFill), @@ -79,10 +85,18 @@ extension NotificationSection { if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { cell.actionImageView.image = actionImage } - if let _ = notification.status { - cell.nameLabelLayoutIn(center: true) - } else { + if let status = notification.status { + let frame = CGRect(x: 0, y: 0, width: tableView.readableContentGuide.layoutFrame.width - 61 - 2, height: tableView.readableContentGuide.layoutFrame.height) + NotificationSection.configure(cell: cell, + dependency: dependency, + readableLayoutFrame: frame, + timestampUpdatePublisher: timestampUpdatePublisher, + status: status, + requestUserID: "", + statusItemAttribute: Item.StatusAttribute(isStatusTextSensitive: false, isStatusSensitive: false)) cell.nameLabelLayoutIn(center: false) + } else { + cell.nameLabelLayoutIn(center: true) } return cell case .bottomLoader: @@ -93,3 +107,352 @@ extension NotificationSection { } } } + + +extension NotificationSection { + static func configure( + cell: NotificationTableViewCell, + dependency: NeedsDependency, + readableLayoutFrame: CGRect?, + timestampUpdatePublisher: AnyPublisher, + status: Status, + requestUserID: String, + statusItemAttribute: Item.StatusAttribute + ) { + // disable interaction + cell.statusView.isUserInteractionEnabled = false + // remove actionToolBar + cell.statusView.actionToolbarContainer.removeFromSuperview() + // setup attribute + statusItemAttribute.setupForStatus(status: status) + + // set header + NotificationSection.configureHeader(cell: cell, status: status) + ManagedObjectObserver.observe(object: status) + .receive(on: DispatchQueue.main) + .sink { _ in + // do nothing + } receiveValue: { change in + guard case .update(let object) = change.changeType, + let newStatus = object as? Status else { return } + NotificationSection.configureHeader(cell: cell, status: newStatus) + } + .store(in: &cell.disposeBag) + + // set name username + cell.statusView.nameLabel.text = { + let author = (status.reblog ?? status).author + return author.displayName.isEmpty ? author.username : author.displayName + }() + cell.statusView.usernameLabel.text = "@" + (status.reblog ?? status).author.acct + // set avatar + + cell.statusView.avatarButton.isHidden = false + cell.statusView.avatarStackedContainerButton.isHidden = true + cell.statusView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: status.author.avatarImageURL())) + + + // set text + cell.statusView.activeTextLabel.configure(content: (status.reblog ?? status).content) + + // set status text content warning + let isStatusTextSensitive = statusItemAttribute.isStatusTextSensitive ?? false + let spoilerText = (status.reblog ?? status).spoilerText ?? "" + cell.statusView.isStatusTextSensitive = isStatusTextSensitive + cell.statusView.updateContentWarningDisplay(isHidden: !isStatusTextSensitive) + cell.statusView.contentWarningTitle.text = { + if spoilerText.isEmpty { + return L10n.Common.Controls.Status.statusContentWarning + } else { + return L10n.Common.Controls.Status.statusContentWarning + ": \(spoilerText)" + } + }() + + // prepare media attachments + let mediaAttachments = Array((status.reblog ?? status).mediaAttachments ?? []).sorted { $0.index.compare($1.index) == .orderedAscending } + + // set image + let mosiacImageViewModel = MosaicImageViewModel(mediaAttachments: mediaAttachments) + let imageViewMaxSize: CGSize = { + let maxWidth: CGFloat = { + // use timelinePostView width as container width + // that width follows readable width and keep constant width after rotate + let containerFrame = readableLayoutFrame ?? cell.statusView.frame + var containerWidth = containerFrame.width + containerWidth -= 10 + containerWidth -= StatusView.avatarImageSize.width + return containerWidth + }() + let scale: CGFloat = { + switch mosiacImageViewModel.metas.count { + case 1: return 1.3 + default: return 0.7 + } + }() + return CGSize(width: maxWidth, height: maxWidth * scale) + }() + if mosiacImageViewModel.metas.count == 1 { + let meta = mosiacImageViewModel.metas[0] + let imageView = cell.statusView.statusMosaicImageViewContainer.setupImageView(aspectRatio: meta.size, maxSize: imageViewMaxSize) + imageView.af.setImage( + withURL: meta.url, + placeholderImage: UIImage.placeholder(color: .systemFill), + imageTransition: .crossDissolve(0.2) + ) + } else { + let imageViews = cell.statusView.statusMosaicImageViewContainer.setupImageViews(count: mosiacImageViewModel.metas.count, maxHeight: imageViewMaxSize.height) + for (i, imageView) in imageViews.enumerated() { + let meta = mosiacImageViewModel.metas[i] + imageView.af.setImage( + withURL: meta.url, + placeholderImage: UIImage.placeholder(color: .systemFill), + imageTransition: .crossDissolve(0.2) + ) + } + } + cell.statusView.statusMosaicImageViewContainer.isHidden = mosiacImageViewModel.metas.isEmpty + let isStatusSensitive = statusItemAttribute.isStatusSensitive ?? false + cell.statusView.statusMosaicImageViewContainer.contentWarningOverlayView.blurVisualEffectView.effect = isStatusSensitive ? ContentWarningOverlayView.blurVisualEffect : nil + cell.statusView.statusMosaicImageViewContainer.contentWarningOverlayView.vibrancyVisualEffectView.alpha = isStatusSensitive ? 1.0 : 0.0 + cell.statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isUserInteractionEnabled = isStatusSensitive + + // set audio + if let _ = mediaAttachments.filter({ $0.type == .audio }).first { + cell.statusView.audioView.isHidden = false + cell.statusView.audioView.playButton.isSelected = false + cell.statusView.audioView.slider.isEnabled = false + cell.statusView.audioView.slider.setValue(0, animated: false) + } else { + cell.statusView.audioView.isHidden = true + } + + // set GIF & video + let playerViewMaxSize: CGSize = { + let maxWidth: CGFloat = { + // use statusView width as container width + // that width follows readable width and keep constant width after rotate + let containerFrame = readableLayoutFrame ?? cell.statusView.frame + return containerFrame.width + }() + let scale: CGFloat = 1.3 + return CGSize(width: maxWidth, height: maxWidth * scale) + }() + + cell.statusView.playerContainerView.contentWarningOverlayView.blurVisualEffectView.effect = isStatusSensitive ? ContentWarningOverlayView.blurVisualEffect : nil + cell.statusView.playerContainerView.contentWarningOverlayView.vibrancyVisualEffectView.alpha = isStatusSensitive ? 1.0 : 0.0 + cell.statusView.playerContainerView.contentWarningOverlayView.isUserInteractionEnabled = isStatusSensitive + + if let videoAttachment = mediaAttachments.filter({ $0.type == .gifv || $0.type == .video }).first, + let videoPlayerViewModel = dependency.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: videoAttachment) + { + let parent = cell.delegate?.parent() + let playerContainerView = cell.statusView.playerContainerView + let playerViewController = playerContainerView.setupPlayer( + aspectRatio: videoPlayerViewModel.videoSize, + maxSize: playerViewMaxSize, + parent: parent + ) + playerViewController.player = videoPlayerViewModel.player + playerViewController.showsPlaybackControls = videoPlayerViewModel.videoKind != .gif + playerContainerView.setMediaKind(kind: videoPlayerViewModel.videoKind) + if videoPlayerViewModel.videoKind == .gif { + playerContainerView.setMediaIndicator(isHidden: false) + } else { + videoPlayerViewModel.timeControlStatus.sink { timeControlStatus in + UIView.animate(withDuration: 0.33) { + switch timeControlStatus { + case .playing: + playerContainerView.setMediaIndicator(isHidden: true) + case .paused, .waitingToPlayAtSpecifiedRate: + playerContainerView.setMediaIndicator(isHidden: false) + @unknown default: + assertionFailure() + } + } + } + .store(in: &cell.disposeBag) + } + playerContainerView.isHidden = false + + } else { + cell.statusView.playerContainerView.playerViewController.player?.pause() + cell.statusView.playerContainerView.playerViewController.player = nil + } + // set poll + let poll = (status.reblog ?? status).poll + NotificationSection.configurePoll( + cell: cell, + poll: poll, + requestUserID: requestUserID, + updateProgressAnimated: false, + timestampUpdatePublisher: timestampUpdatePublisher + ) + if let poll = poll { + ManagedObjectObserver.observe(object: poll) + .sink { _ in + // do nothing + } receiveValue: { change in + guard case .update(let object) = change.changeType, + let newPoll = object as? Poll else { return } + NotificationSection.configurePoll( + cell: cell, + poll: newPoll, + requestUserID: requestUserID, + updateProgressAnimated: true, + timestampUpdatePublisher: timestampUpdatePublisher + ) + } + .store(in: &cell.disposeBag) + } + + // set date + let createdAt = (status.reblog ?? status).createdAt + cell.statusView.dateLabel.text = createdAt.shortTimeAgoSinceNow + timestampUpdatePublisher + .sink { _ in + cell.statusView.dateLabel.text = createdAt.shortTimeAgoSinceNow + } + .store(in: &cell.disposeBag) + + } + + static func configureHeader( + cell: NotificationTableViewCell, + status: Status + ) { + if status.reblog != nil { + cell.statusView.headerContainerStackView.isHidden = false + cell.statusView.headerIconLabel.attributedText = StatusView.iconAttributedString(image: StatusView.boostIconImage) + cell.statusView.headerInfoLabel.text = { + let author = status.author + let name = author.displayName.isEmpty ? author.username : author.displayName + return L10n.Common.Controls.Status.userReblogged(name) + }() + } else if let replyTo = status.replyTo { + cell.statusView.headerContainerStackView.isHidden = false + cell.statusView.headerIconLabel.attributedText = StatusView.iconAttributedString(image: StatusView.replyIconImage) + cell.statusView.headerInfoLabel.text = { + let author = replyTo.author + let name = author.displayName.isEmpty ? author.username : author.displayName + return L10n.Common.Controls.Status.userRepliedTo(name) + }() + } else { + cell.statusView.headerContainerStackView.isHidden = true + } + } + + + static func configurePoll( + cell: NotificationTableViewCell, + poll: Poll?, + requestUserID: String, + updateProgressAnimated: Bool, + timestampUpdatePublisher: AnyPublisher + ) { + guard let poll = poll, + let managedObjectContext = poll.managedObjectContext + else { + cell.statusView.pollTableView.isHidden = true + cell.statusView.pollStatusStackView.isHidden = true + cell.statusView.pollVoteButton.isHidden = true + return + } + + cell.statusView.pollTableView.isHidden = false + cell.statusView.pollStatusStackView.isHidden = false + cell.statusView.pollVoteCountLabel.text = { + if poll.multiple { + let count = poll.votersCount?.intValue ?? 0 + if count > 1 { + return L10n.Common.Controls.Status.Poll.VoterCount.single(count) + } else { + return L10n.Common.Controls.Status.Poll.VoterCount.multiple(count) + } + } else { + let count = poll.votesCount.intValue + if count > 1 { + return L10n.Common.Controls.Status.Poll.VoteCount.single(count) + } else { + return L10n.Common.Controls.Status.Poll.VoteCount.multiple(count) + } + } + }() + + cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.closed + + + cell.statusView.pollTableView.allowsSelection = !poll.expired + + let votedOptions = poll.options.filter { option in + (option.votedBy ?? Set()).map(\.id).contains(requestUserID) + } + let didVotedLocal = !votedOptions.isEmpty + let didVotedRemote = (poll.votedBy ?? Set()).map(\.id).contains(requestUserID) + cell.statusView.pollVoteButton.isEnabled = didVotedLocal + cell.statusView.pollVoteButton.isHidden = !poll.multiple ? true : (didVotedRemote || poll.expired) + + cell.statusView.pollTableViewDataSource = PollSection.tableViewDiffableDataSource( + for: cell.statusView.pollTableView, + managedObjectContext: managedObjectContext + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + + let pollItems = poll.options + .sorted(by: { $0.index.intValue < $1.index.intValue }) + .map { option -> PollItem in + let attribute: PollItem.Attribute = { + let selectState: PollItem.Attribute.SelectState = { + // check didVotedRemote later to make the local change possible + if !votedOptions.isEmpty { + return votedOptions.contains(option) ? .on : .off + } else if poll.expired { + return .none + } else if didVotedRemote, votedOptions.isEmpty { + return .none + } else { + return .off + } + }() + let voteState: PollItem.Attribute.VoteState = { + var needsReveal: Bool + if poll.expired { + needsReveal = true + } else if didVotedRemote { + needsReveal = true + } else { + needsReveal = false + } + guard needsReveal else { return .hidden } + let percentage: Double = { + guard poll.votesCount.intValue > 0 else { return 0.0 } + return Double(option.votesCount?.intValue ?? 0) / Double(poll.votesCount.intValue) + }() + let voted = votedOptions.isEmpty ? true : votedOptions.contains(option) + return .reveal(voted: voted, percentage: percentage, animated: updateProgressAnimated) + }() + return PollItem.Attribute(selectState: selectState, voteState: voteState) + }() + let option = PollItem.opion(objectID: option.objectID, attribute: attribute) + return option + } + snapshot.appendItems(pollItems, toSection: .main) + cell.statusView.pollTableViewDataSource?.apply(snapshot, animatingDifferences: false, completion: nil) + } + + static func configureEmptyStateHeader( + cell: TimelineHeaderTableViewCell, + attribute: Item.EmptyStateHeaderAttribute + ) { + cell.timelineHeaderView.iconImageView.image = attribute.reason.iconImage + cell.timelineHeaderView.messageLabel.text = attribute.reason.message + } +} + +extension NotificationSection { + private static func formattedNumberTitleForActionButton(_ number: Int?) -> String { + guard let number = number, number > 0 else { return "" } + return String(number) + } +} diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index ef7ae9292..a9963ce9c 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -53,6 +53,7 @@ internal enum Asset { internal static let tertiarySystemGroupedBackground = ColorAsset(name: "Colors/Background/tertiary.system.grouped.background") } internal enum Border { + internal static let notification = ColorAsset(name: "Colors/Border/notification") internal static let searchCard = ColorAsset(name: "Colors/Border/searchCard") } internal enum Button { diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Border/notification.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Border/notification.colorset/Contents.json new file mode 100644 index 000000000..afc18df10 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Colors/Border/notification.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xE8", + "green" : "0xE1", + "red" : "0xD9" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "60", + "green" : "58", + "red" : "58" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index b87172925..5a7009270 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -8,6 +8,8 @@ import UIKit import Combine import OSLog +import CoreData +import CoreDataStack final class NotificationViewController: UIViewController, NeedsDependency { @@ -58,7 +60,7 @@ extension NotificationViewController { tableView.delegate = self viewModel.tableView = tableView viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self - viewModel.setupDiffableDataSource(for: tableView) + viewModel.setupDiffableDataSource(for: tableView, delegate: self, dependency: self) viewModel.viewDidLoad.send() // bind refresh control viewModel.isFetchingLatestNotification @@ -125,10 +127,6 @@ extension NotificationViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return 68 } - - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - 68 - } } // MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate @@ -138,6 +136,12 @@ extension NotificationViewController: ContentOffsetAdjustableTimelineViewControl } } +extension NotificationViewController: NotificationTableViewCellDelegate { + func parent() -> UIViewController { + self + } +} + //// MARK: - UIScrollViewDelegate //extension NotificationViewController { // func scrollViewDidScroll(_ scrollView: UIScrollView) { diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index 1d77d41b4..c9c0dcf6f 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -13,17 +13,24 @@ import CoreDataStack extension NotificationViewModel { func setupDiffableDataSource( - for tableView: UITableView + for tableView: UITableView, + delegate: NotificationTableViewCellDelegate, + dependency: NeedsDependency ) { let timestampUpdatePublisher = Timer.publish(every: 30.0, on: .main, in: .common) .autoconnect() .share() .eraseToAnyPublisher() - + guard let userid = activeMastodonAuthenticationBox.value?.userID else { + return + } diffableDataSource = NotificationSection.tableViewDiffableDataSource( for: tableView, timestampUpdatePublisher: timestampUpdatePublisher, - managedObjectContext: context.managedObjectContext + managedObjectContext: context.managedObjectContext, + delegate: delegate, + dependency: dependency, + requestUserID: userid ) } diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 1b4890317..b8d74152c 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -85,7 +85,12 @@ final class NotificationViewModel: NSObject { guard let self = self else { return } self.fetchedResultsController.fetchRequest.predicate = predicate do { + self.diffableDataSource?.defaultRowAnimation = .fade try self.fetchedResultsController.performFetch() + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in + guard let self = self else { return } + self.diffableDataSource?.defaultRowAnimation = .automatic + } } catch { assertionFailure(error.localizedDescription) } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index b252b76d8..d7decfddf 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -5,17 +5,23 @@ // Created by sxiaojian on 2021/4/13. // +import Combine import Foundation import UIKit -import Combine +protocol NotificationTableViewCellDelegate: class { + var context: AppContext! { get } + + func parent() -> UIViewController +} final class NotificationTableViewCell: UITableViewCell { - static let actionImageBorderWidth: CGFloat = 2 var disposeBag = Set() + var delegate: NotificationTableViewCellDelegate? + let avatatImageView: UIImageView = { let imageView = UIImageView() imageView.layer.cornerRadius = 4 @@ -32,7 +38,7 @@ final class NotificationTableViewCell: UITableViewCell { let actionImageBackground: UIView = { let view = UIView() - view.layer.cornerRadius = (24 + NotificationTableViewCell.actionImageBorderWidth)/2 + view.layer.cornerRadius = (24 + NotificationTableViewCell.actionImageBorderWidth) / 2 view.layer.cornerCurve = .continuous view.clipsToBounds = true view.layer.borderWidth = NotificationTableViewCell.actionImageBorderWidth @@ -58,11 +64,30 @@ final class NotificationTableViewCell: UITableViewCell { }() var nameLabelTop: NSLayoutConstraint! + var nameLabelBottom: NSLayoutConstraint! + + let statusContainer: UIView = { + let view = UIView() + view.backgroundColor = .clear + view.layer.cornerRadius = 6 + view.layer.borderWidth = 2 + view.layer.cornerCurve = .continuous + view.layer.borderColor = Asset.Colors.Border.notification.color.cgColor + view.clipsToBounds = true + return view + }() + + let statusView = StatusView() override func prepareForReuse() { super.prepareForReuse() avatatImageView.af.cancelImageRequest() - + statusView.isStatusTextSensitive = false + statusView.cleanUpContentWarning() + statusView.pollTableView.dataSource = nil + statusView.playerContainerView.reset() + statusView.playerContainerView.isHidden = true + disposeBag.removeAll() } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -74,11 +99,19 @@ final class NotificationTableViewCell: UITableViewCell { super.init(coder: coder) configure() } + + override func layoutSubviews() { + super.layoutSubviews() + DispatchQueue.main.async { + self.statusView.drawContentWarningImageView() + } + } } extension NotificationTableViewCell { - func configure() { + selectionStyle = .none + contentView.addSubview(avatatImageView) avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) @@ -90,7 +123,8 @@ extension NotificationTableViewCell { actionImageBackground.addSubview(actionImageView) actionImageView.constrainToCenter() - nameLabelTop = nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor) + nameLabelTop = nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 24) + nameLabelBottom = contentView.bottomAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: 24) contentView.addSubview(nameLabel) nameLabel.constrain([ nameLabelTop, @@ -100,21 +134,38 @@ extension NotificationTableViewCell { contentView.addSubview(actionLabel) actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), - actionLabel.topAnchor.constraint(equalTo: nameLabel.topAnchor), - contentView.trailingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 4) + actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), + contentView.trailingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) ]) + + statusView.contentWarningBlurContentImageView.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color + } public func nameLabelLayoutIn(center: Bool) { if center { nameLabelTop.constant = 24 + NSLayoutConstraint.activate([nameLabelBottom]) + statusView.removeFromSuperview() + statusContainer.removeFromSuperview() } else { nameLabelTop.constant = 12 + NSLayoutConstraint.deactivate([nameLabelBottom]) + addStatusAndContainer() } } + + func addStatusAndContainer() { + contentView.addSubview(statusContainer) + statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14) + + contentView.addSubview(statusView) + statusView.pin(top: 40 + 12, left: 63 + 12, bottom: 14 + 12, right: 14 + 12) + } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - - self.actionImageBackground.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + statusContainer.layer.borderColor = Asset.Colors.Border.notification.color.cgColor + actionImageBackground.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor } } From d99fb1af7610aa911eb7f397e11d4c40c84e5661 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 15:56:06 +0800 Subject: [PATCH 12/37] chore: make segment work in notification --- .../Notification/NotificationViewController.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 5a7009270..2c96c65d6 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -10,6 +10,7 @@ import Combine import OSLog import CoreData import CoreDataStack +import MastodonSDK final class NotificationViewController: UIViewController, NeedsDependency { @@ -22,7 +23,6 @@ final class NotificationViewController: UIViewController, NeedsDependency { let segmentControl: UISegmentedControl = { let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything,L10n.Scene.Notification.Title.mentions]) control.selectedSegmentIndex = 0 - control.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .touchUpInside) return control }() @@ -33,6 +33,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) tableView.register(NotificationTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationTableViewCell.self)) tableView.register(SearchBottomLoader.self, forCellReuseIdentifier: String(describing: SearchBottomLoader.self)) + tableView.tableFooterView = UIView() return tableView }() @@ -46,6 +47,7 @@ extension NotificationViewController { super.viewDidLoad() view.backgroundColor = Asset.Colors.Background.searchResult.color navigationItem.titleView = segmentControl + segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) view.addSubview(tableView) tableView.constrain([ tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), @@ -111,6 +113,14 @@ extension NotificationViewController { extension NotificationViewController { @objc private func segmentedControlValueChanged(_ sender: UISegmentedControl) { os_log("%{public}s[%{public}ld], %{public}s: select at index: %ld", ((#file as NSString).lastPathComponent), #line, #function, sender.selectedSegmentIndex) + guard let domain = viewModel.activeMastodonAuthenticationBox.value?.domain else { + return + } + if sender.selectedSegmentIndex == 0 { + viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain) + } else { + viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, type: Mastodon.Entity.Notification.NotificationType.mention.rawValue) + } } @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { From 288a8025ced0af0f78e1472067e819e039303b84 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 16:24:40 +0800 Subject: [PATCH 13/37] chore: use NotificationStatusTableViewCell and NotificationTableViewCell --- Mastodon.xcodeproj/project.pbxproj | 4 + .../Section/NotificationSection.swift | 81 ++++++---- .../NotificationViewController.swift | 1 + .../NotificationStatusTableViewCell.swift | 147 ++++++++++++++++++ .../NotificationTableViewCell.swift | 59 +------ 5 files changed, 206 insertions(+), 86 deletions(-) create mode 100644 Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index b2258c1df..150c29afb 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -44,6 +44,7 @@ 2D206B8625F5FB0900143C56 /* Double.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B8525F5FB0900143C56 /* Double.swift */; }; 2D206B8C25F6015000143C56 /* AudioPlaybackService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */; }; 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B9125F60EA700143C56 /* UIControl.swift */; }; + 2D24E11D2626D8B100A59D4F /* NotificationStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */; }; 2D32EAAC25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */; }; 2D32EABA25CB9B0500C9ED86 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAB925CB9B0500C9ED86 /* UIView.swift */; }; 2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */; }; @@ -431,6 +432,7 @@ 2D206B8525F5FB0900143C56 /* Double.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Double.swift; sourceTree = ""; }; 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioPlaybackService.swift; sourceTree = ""; }; 2D206B9125F60EA700143C56 /* UIControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIControl.swift; sourceTree = ""; }; + 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStatusTableViewCell.swift; sourceTree = ""; }; 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineMiddleLoaderTableViewCell.swift; sourceTree = ""; }; 2D32EAB925CB9B0500C9ED86 /* UIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = ""; }; 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PublicTimelineViewModel+LoadMiddleState.swift"; sourceTree = ""; }; @@ -898,6 +900,7 @@ isa = PBXGroup; children = ( 2D35238026256F690031AF25 /* NotificationTableViewCell.swift */, + 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */, ); path = TableViewCell; sourceTree = ""; @@ -2363,6 +2366,7 @@ DB8AF55025C13703002E6C99 /* MainTabBarController.swift in Sources */, DB9D6BE925E4F5340051B173 /* SearchViewController.swift in Sources */, 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */, + 2D24E11D2626D8B100A59D4F /* NotificationStatusTableViewCell.swift in Sources */, DB6C8C0F25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift in Sources */, DB1E346825F518E20079D7DF /* CategoryPickerSection.swift in Sources */, 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */, diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 09f0f87a2..de7f5d6c8 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -31,11 +31,12 @@ extension NotificationSection { guard let dependency = dependency else { return nil } switch notificationItem { case .notification(let objectID): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationTableViewCell.self), for: indexPath) as! NotificationTableViewCell - cell.delegate = delegate + let notification = managedObjectContext.object(with: objectID) as! MastodonNotification let type = Mastodon.Entity.Notification.NotificationType(rawValue: notification.type) + let timeText = notification.createAt.shortTimeAgoSinceNow + var actionText: String var actionImageName: String var color: UIColor @@ -66,39 +67,59 @@ extension NotificationSection { color = .clear } - timestampUpdatePublisher - .sink { _ in - let timeText = notification.createAt.shortTimeAgoSinceNow - cell.actionLabel.text = actionText + " · " + timeText - } - .store(in: &cell.disposeBag) - let timeText = notification.createAt.shortTimeAgoSinceNow - cell.actionImageBackground.backgroundColor = color - cell.actionLabel.text = actionText + " · " + timeText - cell.nameLabel.text = notification.account.displayName.isEmpty ? notification.account.username : notification.account.displayName - cell.avatatImageView.af.setImage( - withURL: URL(string: notification.account.avatar)!, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) - - if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { - cell.actionImageView.image = actionImage - } if let status = notification.status { - let frame = CGRect(x: 0, y: 0, width: tableView.readableContentGuide.layoutFrame.width - 61 - 2, height: tableView.readableContentGuide.layoutFrame.height) + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell + cell.delegate = delegate NotificationSection.configure(cell: cell, dependency: dependency, - readableLayoutFrame: frame, + readableLayoutFrame: nil, timestampUpdatePublisher: timestampUpdatePublisher, status: status, - requestUserID: "", + requestUserID: requestUserID, statusItemAttribute: Item.StatusAttribute(isStatusTextSensitive: false, isStatusSensitive: false)) - cell.nameLabelLayoutIn(center: false) + timestampUpdatePublisher + .sink { _ in + let timeText = notification.createAt.shortTimeAgoSinceNow + cell.actionLabel.text = actionText + " · " + timeText + } + .store(in: &cell.disposeBag) + cell.actionImageBackground.backgroundColor = color + cell.actionLabel.text = actionText + " · " + timeText + cell.nameLabel.text = notification.account.displayName.isEmpty ? notification.account.username : notification.account.displayName + cell.avatatImageView.af.setImage( + withURL: URL(string: notification.account.avatar)!, + placeholderImage: UIImage.placeholder(color: .systemFill), + imageTransition: .crossDissolve(0.2) + ) + + if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { + cell.actionImageView.image = actionImage + } + return cell + } else { - cell.nameLabelLayoutIn(center: true) + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationTableViewCell.self), for: indexPath) as! NotificationTableViewCell + cell.delegate = delegate + timestampUpdatePublisher + .sink { _ in + let timeText = notification.createAt.shortTimeAgoSinceNow + cell.actionLabel.text = actionText + " · " + timeText + } + .store(in: &cell.disposeBag) + cell.actionImageBackground.backgroundColor = color + cell.actionLabel.text = actionText + " · " + timeText + cell.nameLabel.text = notification.account.displayName.isEmpty ? notification.account.username : notification.account.displayName + cell.avatatImageView.af.setImage( + withURL: URL(string: notification.account.avatar)!, + placeholderImage: UIImage.placeholder(color: .systemFill), + imageTransition: .crossDissolve(0.2) + ) + + if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { + cell.actionImageView.image = actionImage + } + return cell } - return cell case .bottomLoader: let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchBottomLoader.self)) as! SearchBottomLoader cell.startAnimating() @@ -111,7 +132,7 @@ extension NotificationSection { extension NotificationSection { static func configure( - cell: NotificationTableViewCell, + cell: NotificationStatusTableViewCell, dependency: NeedsDependency, readableLayoutFrame: CGRect?, timestampUpdatePublisher: AnyPublisher, @@ -317,7 +338,7 @@ extension NotificationSection { } static func configureHeader( - cell: NotificationTableViewCell, + cell: NotificationStatusTableViewCell, status: Status ) { if status.reblog != nil { @@ -343,7 +364,7 @@ extension NotificationSection { static func configurePoll( - cell: NotificationTableViewCell, + cell: NotificationStatusTableViewCell, poll: Poll?, requestUserID: String, updateProgressAnimated: Bool, diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 2c96c65d6..d047a0a5d 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -32,6 +32,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { tableView.separatorStyle = .singleLine tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) tableView.register(NotificationTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationTableViewCell.self)) + tableView.register(NotificationStatusTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationStatusTableViewCell.self)) tableView.register(SearchBottomLoader.self, forCellReuseIdentifier: String(describing: SearchBottomLoader.self)) tableView.tableFooterView = UIView() return tableView diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift new file mode 100644 index 000000000..1a0df283e --- /dev/null +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -0,0 +1,147 @@ +// +// NotificationStatusTableViewCell.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/14. +// + +import Combine +import Foundation +import UIKit + +final class NotificationStatusTableViewCell: UITableViewCell { + static let actionImageBorderWidth: CGFloat = 2 + + var disposeBag = Set() + + var delegate: NotificationTableViewCellDelegate? + + let avatatImageView: UIImageView = { + let imageView = UIImageView() + imageView.layer.cornerRadius = 4 + imageView.layer.cornerCurve = .continuous + imageView.clipsToBounds = true + return imageView + }() + + let actionImageView: UIImageView = { + let imageView = UIImageView() + imageView.tintColor = Asset.Colors.Background.searchResult.color + return imageView + }() + + let actionImageBackground: UIView = { + let view = UIView() + view.layer.cornerRadius = (24 + NotificationStatusTableViewCell.actionImageBorderWidth) / 2 + view.layer.cornerCurve = .continuous + view.clipsToBounds = true + view.layer.borderWidth = NotificationStatusTableViewCell.actionImageBorderWidth + view.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + view.tintColor = Asset.Colors.Background.searchResult.color + return view + }() + + let actionLabel: UILabel = { + let label = UILabel() + label.textColor = Asset.Colors.Label.secondary.color + label.font = UIFont.preferredFont(forTextStyle: .body) + label.lineBreakMode = .byTruncatingTail + return label + }() + + let nameLabel: UILabel = { + let label = UILabel() + label.textColor = Asset.Colors.brandBlue.color + label.font = .systemFont(ofSize: 15, weight: .semibold) + label.lineBreakMode = .byTruncatingTail + return label + }() + + let statusContainer: UIView = { + let view = UIView() + view.backgroundColor = .clear + view.layer.cornerRadius = 6 + view.layer.borderWidth = 2 + view.layer.cornerCurve = .continuous + view.layer.borderColor = Asset.Colors.Border.notification.color.cgColor + view.clipsToBounds = true + return view + }() + + let statusView = StatusView() + + override func prepareForReuse() { + super.prepareForReuse() + avatatImageView.af.cancelImageRequest() + statusView.isStatusTextSensitive = false + statusView.cleanUpContentWarning() + statusView.pollTableView.dataSource = nil + statusView.playerContainerView.reset() + statusView.playerContainerView.isHidden = true + disposeBag.removeAll() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + configure() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + configure() + } + + override func layoutSubviews() { + super.layoutSubviews() + DispatchQueue.main.async { + self.statusView.drawContentWarningImageView() + } + } +} + +extension NotificationStatusTableViewCell { + func configure() { + selectionStyle = .none + + contentView.addSubview(avatatImageView) + avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) + avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) + + contentView.addSubview(actionImageBackground) + actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationStatusTableViewCell.actionImageBorderWidth, height: 24 + NotificationStatusTableViewCell.actionImageBorderWidth)) + actionImageBackground.pin(top: 33, left: 33, bottom: nil, right: nil) + + actionImageBackground.addSubview(actionImageView) + actionImageView.constrainToCenter() + + contentView.addSubview(nameLabel) + nameLabel.constrain([ + nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 12), + nameLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 61) + ]) + + contentView.addSubview(actionLabel) + actionLabel.constrain([ + actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), + actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), + contentView.trailingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) + ]) + + statusView.contentWarningBlurContentImageView.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color + addStatusAndContainer() + } + + func addStatusAndContainer() { + contentView.addSubview(statusContainer) + statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14) + + contentView.addSubview(statusView) + statusView.pin(top: 40 + 12, left: 63 + 12, bottom: 14 + 12, right: 14 + 12) + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + statusContainer.layer.borderColor = Asset.Colors.Border.notification.color.cgColor + actionImageBackground.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + } +} diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index d7decfddf..5124dab63 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -63,30 +63,9 @@ final class NotificationTableViewCell: UITableViewCell { return label }() - var nameLabelTop: NSLayoutConstraint! - var nameLabelBottom: NSLayoutConstraint! - - let statusContainer: UIView = { - let view = UIView() - view.backgroundColor = .clear - view.layer.cornerRadius = 6 - view.layer.borderWidth = 2 - view.layer.cornerCurve = .continuous - view.layer.borderColor = Asset.Colors.Border.notification.color.cgColor - view.clipsToBounds = true - return view - }() - - let statusView = StatusView() - override func prepareForReuse() { super.prepareForReuse() avatatImageView.af.cancelImageRequest() - statusView.isStatusTextSensitive = false - statusView.cleanUpContentWarning() - statusView.pollTableView.dataSource = nil - statusView.playerContainerView.reset() - statusView.playerContainerView.isHidden = true disposeBag.removeAll() } @@ -99,13 +78,6 @@ final class NotificationTableViewCell: UITableViewCell { super.init(coder: coder) configure() } - - override func layoutSubviews() { - super.layoutSubviews() - DispatchQueue.main.async { - self.statusView.drawContentWarningImageView() - } - } } extension NotificationTableViewCell { @@ -122,12 +94,11 @@ extension NotificationTableViewCell { actionImageBackground.addSubview(actionImageView) actionImageView.constrainToCenter() - - nameLabelTop = nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 24) - nameLabelBottom = contentView.bottomAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: 24) + contentView.addSubview(nameLabel) nameLabel.constrain([ - nameLabelTop, + nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 24), + contentView.bottomAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: 24), nameLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 61) ]) @@ -137,35 +108,11 @@ extension NotificationTableViewCell { actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), contentView.trailingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) ]) - - statusView.contentWarningBlurContentImageView.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color - } - public func nameLabelLayoutIn(center: Bool) { - if center { - nameLabelTop.constant = 24 - NSLayoutConstraint.activate([nameLabelBottom]) - statusView.removeFromSuperview() - statusContainer.removeFromSuperview() - } else { - nameLabelTop.constant = 12 - NSLayoutConstraint.deactivate([nameLabelBottom]) - addStatusAndContainer() - } - } - - func addStatusAndContainer() { - contentView.addSubview(statusContainer) - statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14) - - contentView.addSubview(statusView) - statusView.pin(top: 40 + 12, left: 63 + 12, bottom: 14 + 12, right: 14 + 12) - } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - statusContainer.layer.borderColor = Asset.Colors.Border.notification.color.cgColor actionImageBackground.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor } } From ceba2772c1c04ff49af9529681a0ac11462acd2d Mon Sep 17 00:00:00 2001 From: ihugo Date: Wed, 14 Apr 2021 16:41:30 +0800 Subject: [PATCH 14/37] fix: remove magic numbers to make it clear and robust --- .../Settings/SettingsViewController.swift | 50 +++++++++++-------- .../Scene/Settings/SettingsViewModel.swift | 6 +-- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index b43ca30e3..4bdc115b2 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -301,33 +301,41 @@ extension SettingsViewController: UITableViewDelegate { } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard indexPath.section == 2 || indexPath.section == 3 else { return } + let snapshot = self.viewModel.dataSource.snapshot() + let sectionIds = snapshot.sectionIdentifiers + guard indexPath.section < sectionIds.count else { return } + let sectionIdentifier = sectionIds[indexPath.section] + let items = snapshot.itemIdentifiers(inSection: sectionIdentifier) + guard indexPath.row < items.count else { return } + let item = items[indexPath.item] - if indexPath.section == 2 { + switch item { + case .boringZone: coordinator.present( scene: .safari(url: URL(string: "https://mastodon.online/terms")!), from: self, transition: .safariPresent(animated: true, completion: nil) ) - } - - // clear media cache - if indexPath.section == 3, indexPath.row == 0 { - // clean image cache for AlamofireImage - let diskBytes = ImageDownloader.defaultURLCache().currentDiskUsage - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: diskBytes %d", ((#file as NSString).lastPathComponent), #line, #function, diskBytes) - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: clean image cache", ((#file as NSString).lastPathComponent), #line, #function) - ImageDownloader.defaultURLCache().removeAllCachedResponses() - let cleanedDiskBytes = ImageDownloader.defaultURLCache().currentDiskUsage - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: diskBytes %d", ((#file as NSString).lastPathComponent), #line, #function, cleanedDiskBytes) - - // clean Kingfisher Cache - KingfisherManager.shared.cache.clearDiskCache() - } - - // logout - if indexPath.section == 3, indexPath.row == 1 { - alertToSignout() + case .spicyZone(let link): + // clear media cache + if link.title == L10n.Scene.Settings.Section.Spicyzone.clear { + // clean image cache for AlamofireImage + let diskBytes = ImageDownloader.defaultURLCache().currentDiskUsage + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: diskBytes %d", ((#file as NSString).lastPathComponent), #line, #function, diskBytes) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: clean image cache", ((#file as NSString).lastPathComponent), #line, #function) + ImageDownloader.defaultURLCache().removeAllCachedResponses() + let cleanedDiskBytes = ImageDownloader.defaultURLCache().currentDiskUsage + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: diskBytes %d", ((#file as NSString).lastPathComponent), #line, #function, cleanedDiskBytes) + + // clean Kingfisher Cache + KingfisherManager.shared.cache.clearDiskCache() + } + // logout + if link.title == L10n.Scene.Settings.Section.Spicyzone.signout { + alertToSignout() + } + default: + break } } } diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index ddee6c5f9..59219ab44 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -245,10 +245,10 @@ class SettingsViewModel: NSObject, NeedsDependency { L10n.Scene.Settings.Section.Spicyzone.signout] var spicyLinkItems = [SettingsItem]() for l in spicyLinks { - let item = SettingsItem.boringZone(item: SettingsItem.Link(title: l, color: .systemRed)) + let item = SettingsItem.spicyZone(item: SettingsItem.Link(title: l, color: .systemRed)) spicyLinkItems.append(item) } - let spicySection = SettingsSection.boringZone(title: L10n.Scene.Settings.Section.Spicyzone.title, items: spicyLinkItems) + let spicySection = SettingsSection.spicyZone(title: L10n.Scene.Settings.Section.Spicyzone.title, items: spicyLinkItems) snapshot.appendSections([spicySection]) snapshot.appendItems(spicyLinkItems) @@ -317,7 +317,7 @@ enum SettingsSection: Hashable { case apperance(title: String, selectedMode: SettingsItem) case notifications(title: String, items: [SettingsItem]) case boringZone(title: String, items: [SettingsItem]) - case spicyZone(tilte: String, items: [SettingsItem]) + case spicyZone(title: String, items: [SettingsItem]) var title: String { switch self { From 2d71a48e36f7ff18953198361f7fed1aeee968e3 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 17:13:23 +0800 Subject: [PATCH 15/37] chore: fix order of notification and layout issue --- CoreDataStack/Entity/Notification.swift | 2 +- Mastodon/Diffiable/Section/NotificationSection.swift | 3 ++- Mastodon/Scene/Notification/NotificationViewController.swift | 5 ++--- .../TableViewCell/NotificationStatusTableViewCell.swift | 3 ++- Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift | 3 +++ Mastodon/Service/APIService/APIService+Notification.swift | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CoreDataStack/Entity/Notification.swift b/CoreDataStack/Entity/Notification.swift index 144ad9c23..8a0595f6c 100644 --- a/CoreDataStack/Entity/Notification.swift +++ b/CoreDataStack/Entity/Notification.swift @@ -95,6 +95,6 @@ extension MastodonNotification { extension MastodonNotification: Managed { public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \MastodonNotification.updatedAt, ascending: false)] + return [NSSortDescriptor(keyPath: \MastodonNotification.createAt, ascending: false)] } } diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index de7f5d6c8..77e7ab5a5 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -70,9 +70,10 @@ extension NotificationSection { if let status = notification.status { let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell cell.delegate = delegate + let frame = CGRect(x: 0, y: 0, width: tableView.readableContentGuide.layoutFrame.width - NotificationStatusTableViewCell.statusPadding.left - NotificationStatusTableViewCell.statusPadding.right, height: tableView.readableContentGuide.layoutFrame.height) NotificationSection.configure(cell: cell, dependency: dependency, - readableLayoutFrame: nil, + readableLayoutFrame: frame, timestampUpdatePublisher: timestampUpdatePublisher, status: status, requestUserID: requestUserID, diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index d047a0a5d..0935c6e81 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -35,6 +35,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { tableView.register(NotificationStatusTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationStatusTableViewCell.self)) tableView.register(SearchBottomLoader.self, forCellReuseIdentifier: String(describing: SearchBottomLoader.self)) tableView.tableFooterView = UIView() + tableView.rowHeight = UITableView.automaticDimension return tableView }() @@ -135,9 +136,7 @@ extension NotificationViewController { // MARK: - UITableViewDelegate extension NotificationViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - return 68 - } + } // MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 1a0df283e..2b3b6972a 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -12,6 +12,7 @@ import UIKit final class NotificationStatusTableViewCell: UITableViewCell { static let actionImageBorderWidth: CGFloat = 2 + static let statusPadding: UIEdgeInsets = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24) var disposeBag = Set() var delegate: NotificationTableViewCellDelegate? @@ -136,7 +137,7 @@ extension NotificationStatusTableViewCell { statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14) contentView.addSubview(statusView) - statusView.pin(top: 40 + 12, left: 63 + 12, bottom: 14 + 12, right: 14 + 12) + statusView.pin(top: NotificationStatusTableViewCell.statusPadding.top, left: NotificationStatusTableViewCell.statusPadding.left, bottom: NotificationStatusTableViewCell.statusPadding.bottom, right: NotificationStatusTableViewCell.statusPadding.right) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { diff --git a/Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift b/Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift index 7ab18bb0c..923a06301 100644 --- a/Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift +++ b/Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift @@ -43,5 +43,8 @@ final class SearchBottomLoader: UITableViewCell { backgroundColor = Asset.Colors.Background.systemGroupedBackground.color contentView.addSubview(activityIndicatorView) activityIndicatorView.constrainToCenter() + NSLayoutConstraint.activate([ + contentView.heightAnchor.constraint(equalToConstant: 44) + ]) } } diff --git a/Mastodon/Service/APIService/APIService+Notification.swift b/Mastodon/Service/APIService/APIService+Notification.swift index 84cb6d3c0..53595fa92 100644 --- a/Mastodon/Service/APIService/APIService+Notification.swift +++ b/Mastodon/Service/APIService/APIService+Notification.swift @@ -43,7 +43,7 @@ extension APIService { status = statusInCoreData } // use constrain to avoid repeated save - let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: Date())) + let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: notification.createdAt)) os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)", (#file as NSString).lastPathComponent, #line, #function, notification.type, notification.account.username) } From f3394ff38243db28dccf6705e58c0ef490491557 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 17:37:58 +0800 Subject: [PATCH 16/37] feat: add navigation to Notification Cell --- Mastodon.xcodeproj/project.pbxproj | 4 + .../Diffiable/Item/NotificationItem.swift | 2 +- .../Section/NotificationSection.swift | 27 +++++- Mastodon/Extension/UIView+Gesture.swift | 93 +++++++++++++++++++ .../NotificationViewController.swift | 29 +++++- .../NotificationViewModel+diffable.swift | 2 +- .../Notification/NotificationViewModel.swift | 4 +- .../NotificationStatusTableViewCell.swift | 2 +- .../NotificationTableViewCell.swift | 3 + 9 files changed, 154 insertions(+), 12 deletions(-) create mode 100644 Mastodon/Extension/UIView+Gesture.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 150c29afb..f545b5138 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -45,6 +45,7 @@ 2D206B8C25F6015000143C56 /* AudioPlaybackService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */; }; 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B9125F60EA700143C56 /* UIControl.swift */; }; 2D24E11D2626D8B100A59D4F /* NotificationStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */; }; + 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */; }; 2D32EAAC25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */; }; 2D32EABA25CB9B0500C9ED86 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAB925CB9B0500C9ED86 /* UIView.swift */; }; 2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */; }; @@ -433,6 +434,7 @@ 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioPlaybackService.swift; sourceTree = ""; }; 2D206B9125F60EA700143C56 /* UIControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIControl.swift; sourceTree = ""; }; 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStatusTableViewCell.swift; sourceTree = ""; }; + 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Gesture.swift"; sourceTree = ""; }; 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineMiddleLoaderTableViewCell.swift; sourceTree = ""; }; 2D32EAB925CB9B0500C9ED86 /* UIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = ""; }; 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PublicTimelineViewModel+LoadMiddleState.swift"; sourceTree = ""; }; @@ -1615,6 +1617,7 @@ 2D32EAB925CB9B0500C9ED86 /* UIView.swift */, 2DFF41882614A4DC00F776A4 /* UIView+Constraint.swift */, DB8AF55C25C138B7002E6C99 /* UIViewController.swift */, + 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */, 2D3F9E0325DFA133004262D9 /* UITapGestureRecognizer.swift */, 2D84350425FF858100EECE90 /* UIScrollView.swift */, DB9E0D6E25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift */, @@ -2264,6 +2267,7 @@ 2D61335825C188A000CAE157 /* APIService+Persist+Status.swift in Sources */, 2D34D9DB261494120081BFC0 /* APIService+Search.swift in Sources */, DBB5256E2612D5A1002F1F29 /* ProfileStatusDashboardView.swift in Sources */, + 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */, DB45FAE325CA7181005A8AC7 /* MastodonUser.swift in Sources */, 2D19864F261C372A00F0B013 /* SearchBottomLoader.swift in Sources */, DB2FF510260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift in Sources */, diff --git a/Mastodon/Diffiable/Item/NotificationItem.swift b/Mastodon/Diffiable/Item/NotificationItem.swift index e4a53d2b1..6ef5b0c8b 100644 --- a/Mastodon/Diffiable/Item/NotificationItem.swift +++ b/Mastodon/Diffiable/Item/NotificationItem.swift @@ -10,7 +10,7 @@ import CoreData enum NotificationItem { - case notification(ObjectID: NSManagedObjectID) + case notification(objectID: NSManagedObjectID) case bottomLoader } diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 77e7ab5a5..74b5d6a40 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -92,7 +92,10 @@ extension NotificationSection { placeholderImage: UIImage.placeholder(color: .systemFill), imageTransition: .crossDissolve(0.2) ) - + cell.avatatImageView.gesture().sink { [weak cell] _ in + cell?.delegate?.userAvatarDidPressed(notification: notification) + } + .store(in: &cell.disposeBag) if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { cell.actionImageView.image = actionImage } @@ -115,7 +118,10 @@ extension NotificationSection { placeholderImage: UIImage.placeholder(color: .systemFill), imageTransition: .crossDissolve(0.2) ) - + cell.avatatImageView.gesture().sink { [weak cell] _ in + cell?.delegate?.userAvatarDidPressed(notification: notification) + } + .store(in: &cell.disposeBag) if let actionImage = UIImage(systemName: actionImageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 12, weight: .semibold))?.withRenderingMode(.alwaysTemplate) { cell.actionImageView.image = actionImage } @@ -399,9 +405,20 @@ extension NotificationSection { } } }() - - cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.closed - + if poll.expired { + cell.pollCountdownSubscription = nil + cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.closed + } else if let expiresAt = poll.expiresAt { + cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.timeLeft(expiresAt.shortTimeAgoSinceNow) + cell.pollCountdownSubscription = timestampUpdatePublisher + .sink { _ in + cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.timeLeft(expiresAt.shortTimeAgoSinceNow) + } + } else { + // assertionFailure() + cell.pollCountdownSubscription = nil + cell.statusView.pollCountdownLabel.text = "-" + } cell.statusView.pollTableView.allowsSelection = !poll.expired diff --git a/Mastodon/Extension/UIView+Gesture.swift b/Mastodon/Extension/UIView+Gesture.swift new file mode 100644 index 000000000..9c29c2c0d --- /dev/null +++ b/Mastodon/Extension/UIView+Gesture.swift @@ -0,0 +1,93 @@ +// +// UIView+Gesture.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/14. +// + +import Combine +import Foundation +import UIKit + +struct GesturePublisher: Publisher { + typealias Output = GestureType + typealias Failure = Never + private let view: UIView + private let gestureType: GestureType + init(view: UIView, gestureType: GestureType) { + self.view = view + self.gestureType = gestureType + } + + func receive(subscriber: S) where S: Subscriber, + GesturePublisher.Failure == S.Failure, GesturePublisher.Output + == S.Input + { + let subscription = GestureSubscription( + subscriber: subscriber, + view: view, + gestureType: gestureType + ) + subscriber.receive(subscription: subscription) + } +} + +enum GestureType { + case tap(UITapGestureRecognizer = .init()) + case swipe(UISwipeGestureRecognizer = .init()) + case longPress(UILongPressGestureRecognizer = .init()) + case pan(UIPanGestureRecognizer = .init()) + case pinch(UIPinchGestureRecognizer = .init()) + case edge(UIScreenEdgePanGestureRecognizer = .init()) + func get() -> UIGestureRecognizer { + switch self { + case let .tap(tapGesture): + return tapGesture + case let .swipe(swipeGesture): + return swipeGesture + case let .longPress(longPressGesture): + return longPressGesture + case let .pan(panGesture): + return panGesture + case let .pinch(pinchGesture): + return pinchGesture + case let .edge(edgePanGesture): + return edgePanGesture + } + } +} + +class GestureSubscription: Subscription where S.Input == GestureType, S.Failure == Never { + private var subscriber: S? + private var gestureType: GestureType + private var view: UIView + init(subscriber: S, view: UIView, gestureType: GestureType) { + self.subscriber = subscriber + self.view = view + self.gestureType = gestureType + configureGesture(gestureType) + } + + private func configureGesture(_ gestureType: GestureType) { + let gesture = gestureType.get() + gesture.addTarget(self, action: #selector(handler)) + view.addGestureRecognizer(gesture) + } + + func request(_ demand: Subscribers.Demand) {} + func cancel() { + subscriber = nil + } + + @objc + private func handler() { + _ = subscriber?.receive(gestureType) + } +} + +extension UIView { + func gesture(_ gestureType: GestureType = .tap()) -> GesturePublisher { + self.isUserInteractionEnabled = true + return GesturePublisher(view: self, gestureType: gestureType) + } +} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 0935c6e81..86c21a2c5 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -18,7 +18,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } var disposeBag = Set() - private(set) lazy var viewModel = NotificationViewModel(context: context, coordinator: coordinator) + private(set) lazy var viewModel = NotificationViewModel(context: context) let segmentControl: UISegmentedControl = { let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything,L10n.Scene.Notification.Title.mentions]) @@ -136,6 +136,24 @@ extension NotificationViewController { // MARK: - UITableViewDelegate extension NotificationViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } + switch item { + case .notification(let objectID): + let notification = context.managedObjectContext.object(with: objectID) as! MastodonNotification + if notification.status != nil { + // TODO goto status detail vc + } else { + let viewModel = ProfileViewModel(context: self.context, optionalMastodonUser: notification.account) + DispatchQueue.main.async { + self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) + } + } + default: + break + } + } } @@ -147,9 +165,18 @@ extension NotificationViewController: ContentOffsetAdjustableTimelineViewControl } extension NotificationViewController: NotificationTableViewCellDelegate { + func userAvatarDidPressed(notification: MastodonNotification) { + let viewModel = ProfileViewModel(context: self.context, optionalMastodonUser: notification.account) + DispatchQueue.main.async { + self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) + } + } + func parent() -> UIViewController { self } + + } //// MARK: - UIScrollViewDelegate diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index c9c0dcf6f..2d68586d8 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -71,7 +71,7 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { var newSnapshot = NSDiffableDataSourceSnapshot() newSnapshot.appendSections([.main]) - newSnapshot.appendItems(notifications.map({NotificationItem.notification(ObjectID: $0.objectID)}), toSection: .main) + newSnapshot.appendItems(notifications.map({NotificationItem.notification(objectID: $0.objectID)}), toSection: .main) if !notifications.isEmpty { newSnapshot.appendItems([.bottomLoader], toSection: .main) } diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index b8d74152c..20bec7159 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -19,7 +19,6 @@ final class NotificationViewModel: NSObject { // input let context: AppContext - weak var coordinator: SceneCoordinator! weak var tableView: UITableView? weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? @@ -49,8 +48,7 @@ final class NotificationViewModel: NSObject { lazy var loadLatestStateMachinePublisher = CurrentValueSubject(nil) - init(context: AppContext,coordinator: SceneCoordinator) { - self.coordinator = coordinator + init(context: AppContext) { self.context = context self.activeMastodonAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) self.fetchedResultsController = { diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 2b3b6972a..4731b4e1b 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -14,7 +14,7 @@ final class NotificationStatusTableViewCell: UITableViewCell { static let statusPadding: UIEdgeInsets = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24) var disposeBag = Set() - + var pollCountdownSubscription: AnyCancellable? var delegate: NotificationTableViewCellDelegate? let avatatImageView: UIImageView = { diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index 5124dab63..1068e7732 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -8,11 +8,14 @@ import Combine import Foundation import UIKit +import CoreDataStack protocol NotificationTableViewCellDelegate: class { var context: AppContext! { get } func parent() -> UIViewController + + func userAvatarDidPressed(notification:MastodonNotification) } final class NotificationTableViewCell: UITableViewCell { From bffb0a887b2b6a77752601676aeb36d62ecd9a3f Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 18:00:43 +0800 Subject: [PATCH 17/37] chore: rename searchBottomLoader , rename pure color --- Mastodon.xcodeproj/project.pbxproj | 8 ++++---- Mastodon/Diffiable/Section/NotificationSection.swift | 7 +++++-- Mastodon/Diffiable/Section/SearchResultSection.swift | 2 +- Mastodon/Generated/Assets.swift | 2 +- .../Contents.json | 0 .../Scene/Notification/NotificationViewController.swift | 4 ++-- .../TableViewCell/NotificationStatusTableViewCell.swift | 8 ++++---- .../TableViewCell/NotificationTableViewCell.swift | 8 ++++---- .../Scene/Search/SearchViewController+Searching.swift | 2 +- Mastodon/Scene/Search/SearchViewController.swift | 4 ++-- ...{SearchBottomLoader.swift => CommonBottomLoader.swift} | 4 ++-- 11 files changed, 26 insertions(+), 23 deletions(-) rename Mastodon/Resources/Assets.xcassets/Colors/Background/{searchResult.colorset => pure.colorset}/Contents.json (100%) rename Mastodon/Scene/Search/TableViewCell/{SearchBottomLoader.swift => CommonBottomLoader.swift} (94%) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index f545b5138..14de9fc4b 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -37,7 +37,7 @@ 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A9125C2980C009AA50C /* UIFont.swift */; }; 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198642261BF09500F0B013 /* SearchResultItem.swift */; }; 2D198649261C0B8500F0B013 /* SearchResultSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198648261C0B8500F0B013 /* SearchResultSection.swift */; }; - 2D19864F261C372A00F0B013 /* SearchBottomLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D19864E261C372A00F0B013 /* SearchBottomLoader.swift */; }; + 2D19864F261C372A00F0B013 /* CommonBottomLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D19864E261C372A00F0B013 /* CommonBottomLoader.swift */; }; 2D198655261C3C4300F0B013 /* SearchViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198654261C3C4300F0B013 /* SearchViewModel+LoadOldestState.swift */; }; 2D206B7225F5D27F00143C56 /* AudioContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */; }; 2D206B8025F5F45E00143C56 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B7F25F5F45E00143C56 /* UIImage.swift */; }; @@ -426,7 +426,7 @@ 2D152A9125C2980C009AA50C /* UIFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFont.swift; sourceTree = ""; }; 2D198642261BF09500F0B013 /* SearchResultItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItem.swift; sourceTree = ""; }; 2D198648261C0B8500F0B013 /* SearchResultSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSection.swift; sourceTree = ""; }; - 2D19864E261C372A00F0B013 /* SearchBottomLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBottomLoader.swift; sourceTree = ""; }; + 2D19864E261C372A00F0B013 /* CommonBottomLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonBottomLoader.swift; sourceTree = ""; }; 2D198654261C3C4300F0B013 /* SearchViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchViewModel+LoadOldestState.swift"; sourceTree = ""; }; 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioContainerView.swift; sourceTree = ""; }; 2D206B7F25F5F45E00143C56 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; @@ -1152,7 +1152,7 @@ isa = PBXGroup; children = ( 2DFAD5362617010500F9EE7C /* SearchingTableViewCell.swift */, - 2D19864E261C372A00F0B013 /* SearchBottomLoader.swift */, + 2D19864E261C372A00F0B013 /* CommonBottomLoader.swift */, ); path = TableViewCell; sourceTree = ""; @@ -2269,7 +2269,7 @@ DBB5256E2612D5A1002F1F29 /* ProfileStatusDashboardView.swift in Sources */, 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */, DB45FAE325CA7181005A8AC7 /* MastodonUser.swift in Sources */, - 2D19864F261C372A00F0B013 /* SearchBottomLoader.swift in Sources */, + 2D19864F261C372A00F0B013 /* CommonBottomLoader.swift in Sources */, DB2FF510260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift in Sources */, 0F202213261351F5000C64BF /* APIService+HashtagTimeline.swift in Sources */, DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */, diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 74b5d6a40..01273e9f4 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -128,7 +128,7 @@ extension NotificationSection { return cell } case .bottomLoader: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchBottomLoader.self)) as! SearchBottomLoader + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: CommonBottomLoader.self)) as! CommonBottomLoader cell.startAnimating() return cell } @@ -149,8 +149,11 @@ extension NotificationSection { ) { // disable interaction cell.statusView.isUserInteractionEnabled = false - // remove actionToolBar + // remove item don't display cell.statusView.actionToolbarContainer.removeFromSuperview() + cell.statusView.avatarView.removeFromSuperview() + + // setup attribute statusItemAttribute.setupForStatus(status: status) diff --git a/Mastodon/Diffiable/Section/SearchResultSection.swift b/Mastodon/Diffiable/Section/SearchResultSection.swift index 50c561605..e01063c86 100644 --- a/Mastodon/Diffiable/Section/SearchResultSection.swift +++ b/Mastodon/Diffiable/Section/SearchResultSection.swift @@ -44,7 +44,7 @@ extension SearchResultSection { cell.config(with: user) return cell case .bottomLoader: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchBottomLoader.self)) as! SearchBottomLoader + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: CommonBottomLoader.self)) as! CommonBottomLoader cell.startAnimating() return cell } diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index a9963ce9c..40eda8019 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -44,7 +44,7 @@ internal enum Asset { internal static let mediaTypeIndicotor = ColorAsset(name: "Colors/Background/media.type.indicotor") internal static let navigationBar = ColorAsset(name: "Colors/Background/navigationBar") internal static let onboardingBackground = ColorAsset(name: "Colors/Background/onboarding.background") - internal static let searchResult = ColorAsset(name: "Colors/Background/searchResult") + internal static let pure = ColorAsset(name: "Colors/Background/pure") internal static let secondaryGroupedSystemBackground = ColorAsset(name: "Colors/Background/secondary.grouped.system.background") internal static let secondarySystemBackground = ColorAsset(name: "Colors/Background/secondary.system.background") internal static let systemBackground = ColorAsset(name: "Colors/Background/system.background") diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Background/searchResult.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Background/pure.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Background/searchResult.colorset/Contents.json rename to Mastodon/Resources/Assets.xcassets/Colors/Background/pure.colorset/Contents.json diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 86c21a2c5..8d04674f4 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -33,7 +33,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) tableView.register(NotificationTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationTableViewCell.self)) tableView.register(NotificationStatusTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationStatusTableViewCell.self)) - tableView.register(SearchBottomLoader.self, forCellReuseIdentifier: String(describing: SearchBottomLoader.self)) + tableView.register(CommonBottomLoader.self, forCellReuseIdentifier: String(describing: CommonBottomLoader.self)) tableView.tableFooterView = UIView() tableView.rowHeight = UITableView.automaticDimension return tableView @@ -47,7 +47,7 @@ extension NotificationViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = Asset.Colors.Background.searchResult.color + view.backgroundColor = Asset.Colors.Background.pure.color navigationItem.titleView = segmentControl segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) view.addSubview(tableView) diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 4731b4e1b..37b745990 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -27,7 +27,7 @@ final class NotificationStatusTableViewCell: UITableViewCell { let actionImageView: UIImageView = { let imageView = UIImageView() - imageView.tintColor = Asset.Colors.Background.searchResult.color + imageView.tintColor = Asset.Colors.Background.pure.color return imageView }() @@ -37,8 +37,8 @@ final class NotificationStatusTableViewCell: UITableViewCell { view.layer.cornerCurve = .continuous view.clipsToBounds = true view.layer.borderWidth = NotificationStatusTableViewCell.actionImageBorderWidth - view.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor - view.tintColor = Asset.Colors.Background.searchResult.color + view.layer.borderColor = Asset.Colors.Background.pure.color.cgColor + view.tintColor = Asset.Colors.Background.pure.color return view }() @@ -143,6 +143,6 @@ extension NotificationStatusTableViewCell { override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) statusContainer.layer.borderColor = Asset.Colors.Border.notification.color.cgColor - actionImageBackground.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + actionImageBackground.layer.borderColor = Asset.Colors.Background.pure.color.cgColor } } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index 1068e7732..a10ff01d6 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -35,7 +35,7 @@ final class NotificationTableViewCell: UITableViewCell { let actionImageView: UIImageView = { let imageView = UIImageView() - imageView.tintColor = Asset.Colors.Background.searchResult.color + imageView.tintColor = Asset.Colors.Background.pure.color return imageView }() @@ -45,8 +45,8 @@ final class NotificationTableViewCell: UITableViewCell { view.layer.cornerCurve = .continuous view.clipsToBounds = true view.layer.borderWidth = NotificationTableViewCell.actionImageBorderWidth - view.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor - view.tintColor = Asset.Colors.Background.searchResult.color + view.layer.borderColor = Asset.Colors.Background.pure.color.cgColor + view.tintColor = Asset.Colors.Background.pure.color return view }() @@ -116,6 +116,6 @@ extension NotificationTableViewCell { override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - actionImageBackground.layer.borderColor = Asset.Colors.Background.searchResult.color.cgColor + actionImageBackground.layer.borderColor = Asset.Colors.Background.pure.color.cgColor } } diff --git a/Mastodon/Scene/Search/SearchViewController+Searching.swift b/Mastodon/Scene/Search/SearchViewController+Searching.swift index 3eb9793ad..43e5d397c 100644 --- a/Mastodon/Scene/Search/SearchViewController+Searching.swift +++ b/Mastodon/Scene/Search/SearchViewController+Searching.swift @@ -17,7 +17,7 @@ extension SearchViewController { func setupSearchingTableView() { searchingTableView.delegate = self searchingTableView.register(SearchingTableViewCell.self, forCellReuseIdentifier: String(describing: SearchingTableViewCell.self)) - searchingTableView.register(SearchBottomLoader.self, forCellReuseIdentifier: String(describing: SearchBottomLoader.self)) + searchingTableView.register(CommonBottomLoader.self, forCellReuseIdentifier: String(describing: CommonBottomLoader.self)) view.addSubview(searchingTableView) searchingTableView.constrain([ searchingTableView.frameLayoutGuide.topAnchor.constraint(equalTo: searchBar.bottomAnchor), diff --git a/Mastodon/Scene/Search/SearchViewController.swift b/Mastodon/Scene/Search/SearchViewController.swift index 5dcc47e02..dc9414585 100644 --- a/Mastodon/Scene/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/SearchViewController.swift @@ -82,7 +82,7 @@ final class SearchViewController: UIViewController, NeedsDependency { // searching let searchingTableView: UITableView = { let tableView = UITableView() - tableView.backgroundColor = Asset.Colors.Background.searchResult.color + tableView.backgroundColor = Asset.Colors.Background.pure.color tableView.rowHeight = UITableView.automaticDimension tableView.separatorStyle = .singleLine tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) @@ -227,7 +227,7 @@ extension SearchViewController: UISearchBarDelegate { } extension SearchViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = SearchBottomLoader + typealias BottomLoaderTableViewCell = CommonBottomLoader typealias LoadingState = SearchViewModel.LoadOldestState.Loading var loadMoreConfigurableTableView: UITableView { searchingTableView } var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.loadoldestStateMachine } diff --git a/Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift b/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift similarity index 94% rename from Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift rename to Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift index 923a06301..bb2ae9ce0 100644 --- a/Mastodon/Scene/Search/TableViewCell/SearchBottomLoader.swift +++ b/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift @@ -1,5 +1,5 @@ // -// SearchBottomLoader.swift +// CommonBottomLoader.swift // Mastodon // // Created by sxiaojian on 2021/4/6. @@ -8,7 +8,7 @@ import Foundation import UIKit -final class SearchBottomLoader: UITableViewCell { +final class CommonBottomLoader: UITableViewCell { let activityIndicatorView: UIActivityIndicatorView = { let activityIndicatorView = UIActivityIndicatorView(style: .medium) activityIndicatorView.tintColor = Asset.Colors.Label.primary.color From 687614d43a93708064b9f05faa57d5a9503f5c1a Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 19:04:11 +0800 Subject: [PATCH 18/37] feat: add bottom loader --- Mastodon.xcodeproj/project.pbxproj | 4 + .../NotificationViewController.swift | 28 ++-- ...otificationViewModel+LoadOldestState.swift | 128 ++++++++++++++++++ .../Notification/NotificationViewModel.swift | 16 +++ 4 files changed, 163 insertions(+), 13 deletions(-) create mode 100644 Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 14de9fc4b..d088d3176 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -46,6 +46,7 @@ 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B9125F60EA700143C56 /* UIControl.swift */; }; 2D24E11D2626D8B100A59D4F /* NotificationStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */; }; 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */; }; + 2D24E12D2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E12C2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift */; }; 2D32EAAC25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */; }; 2D32EABA25CB9B0500C9ED86 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAB925CB9B0500C9ED86 /* UIView.swift */; }; 2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */; }; @@ -435,6 +436,7 @@ 2D206B9125F60EA700143C56 /* UIControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIControl.swift; sourceTree = ""; }; 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStatusTableViewCell.swift; sourceTree = ""; }; 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Gesture.swift"; sourceTree = ""; }; + 2D24E12C2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+LoadOldestState.swift"; sourceTree = ""; }; 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineMiddleLoaderTableViewCell.swift; sourceTree = ""; }; 2D32EAB925CB9B0500C9ED86 /* UIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = ""; }; 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PublicTimelineViewModel+LoadMiddleState.swift"; sourceTree = ""; }; @@ -1679,6 +1681,7 @@ 2D607AD726242FC500B70763 /* NotificationViewModel.swift */, 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */, 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */, + 2D24E12C2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift */, 2D35237F26256F470031AF25 /* TableViewCell */, ); path = Notification; @@ -2401,6 +2404,7 @@ 2D76319F25C1521200929FB9 /* StatusSection.swift in Sources */, DB35FC252612FD7A006193C9 /* ProfileFieldView.swift in Sources */, 2D650FAB25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift in Sources */, + 2D24E12D2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift in Sources */, DB118A8C25E4BFB500FAB162 /* HighlightDimmableButton.swift in Sources */, DBAE3FA92617106E004B8251 /* MastodonMetricFormatter.swift in Sources */, 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */, diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 8d04674f4..d5eb149a8 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -11,6 +11,7 @@ import OSLog import CoreData import CoreDataStack import MastodonSDK +import GameplayKit final class NotificationViewController: UIViewController, NeedsDependency { @@ -123,6 +124,7 @@ extension NotificationViewController { } else { viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, type: Mastodon.Entity.Notification.NotificationType.mention.rawValue) } + viewModel.selectedIndex.value = sender.selectedSegmentIndex } @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { @@ -179,16 +181,16 @@ extension NotificationViewController: NotificationTableViewCellDelegate { } -//// MARK: - UIScrollViewDelegate -//extension NotificationViewController { -// func scrollViewDidScroll(_ scrollView: UIScrollView) { -// handleScrollViewDidScroll(scrollView) -// } -//} -// -//extension NotificationViewController: LoadMoreConfigurableTableViewContainer { -// typealias BottomLoaderTableViewCell = SearchBottomLoader -// typealias LoadingState = NotificationViewController.LoadOldestState.Loading -// var loadMoreConfigurableTableView: UITableView { return tableView } -// var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadoldestStateMachine } -//} +// MARK: - UIScrollViewDelegate +extension NotificationViewController { + func scrollViewDidScroll(_ scrollView: UIScrollView) { + handleScrollViewDidScroll(scrollView) + } +} + +extension NotificationViewController: LoadMoreConfigurableTableViewContainer { + typealias BottomLoaderTableViewCell = CommonBottomLoader + typealias LoadingState = NotificationViewModel.LoadOldestState.Loading + var loadMoreConfigurableTableView: UITableView { return tableView } + var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadoldestStateMachine } +} diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift new file mode 100644 index 000000000..13c82093b --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift @@ -0,0 +1,128 @@ +// +// NotificationViewModel+LoadOldestState.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/14. +// + +import os.log +import Foundation +import GameplayKit +import MastodonSDK + +extension NotificationViewModel { + class LoadOldestState: GKState { + weak var viewModel: NotificationViewModel? + + init(viewModel: NotificationViewModel) { + self.viewModel = viewModel + } + + override func didEnter(from previousState: GKState?) { + os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + viewModel?.loadOldestStateMachinePublisher.send(self) + } + } +} + +extension NotificationViewModel.LoadOldestState { + class Initial: NotificationViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + guard let viewModel = viewModel else { return false } + guard !(viewModel.fetchedResultsController.fetchedObjects ?? []).isEmpty else { return false } + return stateClass == Loading.self + } + } + + class Loading: NotificationViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Fail.self || stateClass == Idle.self || stateClass == NoMore.self + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + assertionFailure() + stateMachine.enter(Fail.self) + return + } + + guard let last = viewModel.fetchedResultsController.fetchedObjects?.last else { + stateMachine.enter(Idle.self) + return + } + + let maxID = last.id + let query = Mastodon.API.Notifications.Query( + maxID: maxID, + sinceID: nil, + minID: nil, + limit: nil, + excludeTypes: Mastodon.API.Notifications.allExcludeTypes(), + accountID: nil) + viewModel.context.apiService.allNotifications( + domain: activeMastodonAuthenticationBox.domain, + query: query, + mastodonAuthenticationBox: activeMastodonAuthenticationBox) + .sink { completion in + switch completion { + case .failure(let error): + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + case .finished: + // handle isFetchingLatestTimeline in fetch controller delegate + break + } + + stateMachine.enter(Idle.self) + } receiveValue: { [weak viewModel] response in + guard let viewModel = viewModel else { return } + if viewModel.selectedIndex.value == 1 { + let list = response.value.filter { $0.type == Mastodon.Entity.Notification.NotificationType.mention } + if list.isEmpty { + stateMachine.enter(NoMore.self) + } else { + stateMachine.enter(Idle.self) + } + } else { + if response.value.isEmpty { + stateMachine.enter(NoMore.self) + } else { + stateMachine.enter(Idle.self) + } + } + } + .store(in: &viewModel.disposeBag) + } + } + + class Fail: NotificationViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Loading.self || stateClass == Idle.self + } + } + + class Idle: NotificationViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Loading.self + } + } + + class NoMore: NotificationViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + // reset state if needs + return stateClass == Idle.self + } + + override func didEnter(from previousState: GKState?) { + guard let viewModel = viewModel else { return } + guard let diffableDataSource = viewModel.diffableDataSource else { + assertionFailure() + return + } + var snapshot = diffableDataSource.snapshot() + snapshot.deleteItems([.bottomLoader]) + diffableDataSource.apply(snapshot) + } + } +} diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 20bec7159..26d21e796 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -23,6 +23,7 @@ final class NotificationViewModel: NSObject { weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? let viewDidLoad = PassthroughSubject() + let selectedIndex = CurrentValueSubject(0) let activeMastodonAuthenticationBox: CurrentValueSubject let fetchedResultsController: NSFetchedResultsController! @@ -48,6 +49,21 @@ final class NotificationViewModel: NSObject { lazy var loadLatestStateMachinePublisher = CurrentValueSubject(nil) + // bottom loader + private(set) lazy var loadoldestStateMachine: GKStateMachine = { + // exclude timeline middle fetcher state + let stateMachine = GKStateMachine(states: [ + LoadOldestState.Initial(viewModel: self), + LoadOldestState.Loading(viewModel: self), + LoadOldestState.Fail(viewModel: self), + LoadOldestState.Idle(viewModel: self), + LoadOldestState.NoMore(viewModel: self), + ]) + stateMachine.enter(LoadOldestState.Initial.self) + return stateMachine + }() + lazy var loadOldestStateMachinePublisher = CurrentValueSubject(nil) + init(context: AppContext) { self.context = context self.activeMastodonAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) From 2e86449c41dd40d67c6b86ca72d48a190ed4525f Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Wed, 14 Apr 2021 20:02:41 +0800 Subject: [PATCH 19/37] fix: bottom loader display aways --- .../Section/NotificationSection.swift | 8 +------- .../NotificationViewController.swift | 13 +++++++++++++ ...otificationViewModel+LoadOldestState.swift | 19 ++++++++++++++++--- .../NotificationViewModel+diffable.swift | 5 ++++- .../Notification/NotificationViewModel.swift | 1 + .../NotificationStatusTableViewCell.swift | 7 +++++++ 6 files changed, 42 insertions(+), 11 deletions(-) diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 01273e9f4..9fbad362b 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -147,13 +147,7 @@ extension NotificationSection { requestUserID: String, statusItemAttribute: Item.StatusAttribute ) { - // disable interaction - cell.statusView.isUserInteractionEnabled = false - // remove item don't display - cell.statusView.actionToolbarContainer.removeFromSuperview() - cell.statusView.avatarView.removeFromSuperview() - - + // setup attribute statusItemAttribute.setupForStatus(status: status) diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index d5eb149a8..a1921558c 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -156,6 +156,19 @@ extension NotificationViewController: UITableViewDelegate { break } } + + func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } + switch item { + case .bottomLoader: + if !tableView.isDragging && !tableView.isDecelerating { + viewModel.loadoldestStateMachine.enter(NotificationViewModel.LoadOldestState.Loading.self) + } + default: + break + } + } } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift index 13c82093b..bf049eace 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift @@ -9,6 +9,7 @@ import os.log import Foundation import GameplayKit import MastodonSDK +import CoreDataStack extension NotificationViewModel { class LoadOldestState: GKState { @@ -42,13 +43,24 @@ extension NotificationViewModel.LoadOldestState { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let activeMastodonAuthenticationBox = viewModel.activeMastodonAuthenticationBox.value else { assertionFailure() stateMachine.enter(Fail.self) return } - - guard let last = viewModel.fetchedResultsController.fetchedObjects?.last else { + let notifications: [MastodonNotification]? = { + let request = MastodonNotification.sortedFetchRequest + request.predicate = MastodonNotification.predicate(domain: activeMastodonAuthenticationBox.domain) + request.returnsObjectsAsFaults = false + do { + return try self.viewModel?.context.managedObjectContext.fetch(request) + } catch { + assertionFailure(error.localizedDescription) + return nil + } + }() + + guard let last = notifications?.last else { stateMachine.enter(Idle.self) return } @@ -78,6 +90,7 @@ extension NotificationViewModel.LoadOldestState { } receiveValue: { [weak viewModel] response in guard let viewModel = viewModel else { return } if viewModel.selectedIndex.value == 1 { + viewModel.noMoreNotification.value = response.value.isEmpty let list = response.value.filter { $0.type == Mastodon.Entity.Notification.NotificationType.mention } if list.isEmpty { stateMachine.enter(NoMore.self) diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index 2d68586d8..a4c86521f 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -72,7 +72,7 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { var newSnapshot = NSDiffableDataSourceSnapshot() newSnapshot.appendSections([.main]) newSnapshot.appendItems(notifications.map({NotificationItem.notification(objectID: $0.objectID)}), toSection: .main) - if !notifications.isEmpty { + if !notifications.isEmpty && self.noMoreNotification.value == false { newSnapshot.appendItems([.bottomLoader], toSection: .main) } @@ -112,6 +112,9 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } + if oldSnapshot.itemIdentifiers.elementsEqual(newSnapshot.itemIdentifiers) { + return nil + } let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil } let targetIndexPath = IndexPath(row: itemIndex, section: 0) diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 26d21e796..85806acf2 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -24,6 +24,7 @@ final class NotificationViewModel: NSObject { let viewDidLoad = PassthroughSubject() let selectedIndex = CurrentValueSubject(0) + let noMoreNotification = CurrentValueSubject(false) let activeMastodonAuthenticationBox: CurrentValueSubject let fetchedResultsController: NSFetchedResultsController! diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 37b745990..6bdf0fd1e 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -79,6 +79,7 @@ final class NotificationStatusTableViewCell: UITableViewCell { statusView.pollTableView.dataSource = nil statusView.playerContainerView.reset() statusView.playerContainerView.isHidden = true + disposeBag.removeAll() } @@ -133,6 +134,12 @@ extension NotificationStatusTableViewCell { } func addStatusAndContainer() { + statusView.isUserInteractionEnabled = false + // remove item don't display + statusView.actionToolbarContainer.removeFromSuperview() + statusView.avatarView.removeFromSuperview() + statusView.usernameLabel.removeFromSuperview() + contentView.addSubview(statusContainer) statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14) From 80d76acc27ef31dbfe94da47c18af2f8a236e472 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Thu, 15 Apr 2021 10:16:30 +0800 Subject: [PATCH 20/37] chore: format file --- .../Diffiable/Item/NotificationItem.swift | 5 ++- .../Section/NotificationSection.swift | 13 +++---- Mastodon/Extension/UIView+Gesture.swift | 2 +- .../NotificationViewController.swift | 36 ++++++++----------- ...otificationViewModel+LoadLatestState.swift | 21 +++++------ ...otificationViewModel+LoadOldestState.swift | 16 ++++----- .../NotificationViewModel+diffable.swift | 17 ++++----- .../Notification/NotificationViewModel.swift | 23 ++++++------ .../NotificationStatusTableViewCell.swift | 2 +- .../NotificationTableViewCell.swift | 7 ++-- .../APIService/APIService+Notification.swift | 11 +++--- 11 files changed, 66 insertions(+), 87 deletions(-) diff --git a/Mastodon/Diffiable/Item/NotificationItem.swift b/Mastodon/Diffiable/Item/NotificationItem.swift index 6ef5b0c8b..c160eac5e 100644 --- a/Mastodon/Diffiable/Item/NotificationItem.swift +++ b/Mastodon/Diffiable/Item/NotificationItem.swift @@ -5,11 +5,10 @@ // Created by sxiaojian on 2021/4/13. // -import Foundation import CoreData +import Foundation enum NotificationItem { - case notification(objectID: NSManagedObjectID) case bottomLoader @@ -20,7 +19,7 @@ extension NotificationItem: Equatable { switch (lhs, rhs) { case (.bottomLoader, .bottomLoader): return true - case (.notification(let idLeft),.notification(let idRight)): + case (.notification(let idLeft), .notification(let idRight)): return idLeft == idRight default: return false diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 9fbad362b..5e3cd2d9e 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -5,12 +5,12 @@ // Created by sxiaojian on 2021/4/13. // +import Combine import CoreData import CoreDataStack import Foundation import MastodonSDK import UIKit -import Combine enum NotificationSection: Equatable, Hashable { case main @@ -25,8 +25,8 @@ extension NotificationSection { dependency: NeedsDependency, requestUserID: String ) -> UITableViewDiffableDataSource { - return UITableViewDiffableDataSource(tableView: tableView) { - [weak delegate,weak dependency] + UITableViewDiffableDataSource(tableView: tableView) { + [weak delegate, weak dependency] (tableView, indexPath, notificationItem) -> UITableViewCell? in guard let dependency = dependency else { return nil } switch notificationItem { @@ -136,7 +136,6 @@ extension NotificationSection { } } - extension NotificationSection { static func configure( cell: NotificationStatusTableViewCell, @@ -147,7 +146,6 @@ extension NotificationSection { requestUserID: String, statusItemAttribute: Item.StatusAttribute ) { - // setup attribute statusItemAttribute.setupForStatus(status: status) @@ -176,7 +174,6 @@ extension NotificationSection { cell.statusView.avatarStackedContainerButton.isHidden = true cell.statusView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: status.author.avatarImageURL())) - // set text cell.statusView.activeTextLabel.configure(content: (status.reblog ?? status).content) @@ -338,7 +335,6 @@ extension NotificationSection { cell.statusView.dateLabel.text = createdAt.shortTimeAgoSinceNow } .store(in: &cell.disposeBag) - } static func configureHeader( @@ -366,7 +362,6 @@ extension NotificationSection { } } - static func configurePoll( cell: NotificationStatusTableViewCell, poll: Poll?, @@ -486,7 +481,7 @@ extension NotificationSection { } } -extension NotificationSection { +extension NotificationSection { private static func formattedNumberTitleForActionButton(_ number: Int?) -> String { guard let number = number, number > 0 else { return "" } return String(number) diff --git a/Mastodon/Extension/UIView+Gesture.swift b/Mastodon/Extension/UIView+Gesture.swift index 9c29c2c0d..a76843d89 100644 --- a/Mastodon/Extension/UIView+Gesture.swift +++ b/Mastodon/Extension/UIView+Gesture.swift @@ -87,7 +87,7 @@ class GestureSubscription: Subscription where S.Input == GestureT extension UIView { func gesture(_ gestureType: GestureType = .tap()) -> GesturePublisher { - self.isUserInteractionEnabled = true + isUserInteractionEnabled = true return GesturePublisher(view: self, gestureType: gestureType) } } diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index a1921558c..becf86771 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -5,16 +5,15 @@ // Created by sxiaojian on 2021/4/12. // -import UIKit import Combine -import OSLog import CoreData import CoreDataStack -import MastodonSDK import GameplayKit +import MastodonSDK +import OSLog +import UIKit final class NotificationViewController: UIViewController, NeedsDependency { - weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -22,7 +21,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { private(set) lazy var viewModel = NotificationViewModel(context: context) let segmentControl: UISegmentedControl = { - let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything,L10n.Scene.Notification.Title.mentions]) + let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything, L10n.Scene.Notification.Title.mentions]) control.selectedSegmentIndex = 0 return control }() @@ -41,11 +40,9 @@ final class NotificationViewController: UIViewController, NeedsDependency { }() let refreshControl = UIRefreshControl() - } extension NotificationViewController { - override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = Asset.Colors.Background.pure.color @@ -80,7 +77,6 @@ extension NotificationViewController { } } .store(in: &disposeBag) - } override func viewWillAppear(_ animated: Bool) { @@ -110,12 +106,11 @@ extension NotificationViewController { self.tableView.reloadData() } } - } extension NotificationViewController { @objc private func segmentedControlValueChanged(_ sender: UISegmentedControl) { - os_log("%{public}s[%{public}ld], %{public}s: select at index: %ld", ((#file as NSString).lastPathComponent), #line, #function, sender.selectedSegmentIndex) + os_log("%{public}s[%{public}ld], %{public}s: select at index: %ld", (#file as NSString).lastPathComponent, #line, #function, sender.selectedSegmentIndex) guard let domain = viewModel.activeMastodonAuthenticationBox.value?.domain else { return } @@ -136,8 +131,8 @@ extension NotificationViewController { } // MARK: - UITableViewDelegate + extension NotificationViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { guard let diffableDataSource = viewModel.diffableDataSource else { return } guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } @@ -145,9 +140,9 @@ extension NotificationViewController: UITableViewDelegate { case .notification(let objectID): let notification = context.managedObjectContext.object(with: objectID) as! MastodonNotification if notification.status != nil { - // TODO goto status detail vc + // TODO: goto status detail vc } else { - let viewModel = ProfileViewModel(context: self.context, optionalMastodonUser: notification.account) + let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) DispatchQueue.main.async { self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) } @@ -162,26 +157,26 @@ extension NotificationViewController: UITableViewDelegate { guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } switch item { case .bottomLoader: - if !tableView.isDragging && !tableView.isDecelerating { + if !tableView.isDragging, !tableView.isDecelerating { viewModel.loadoldestStateMachine.enter(NotificationViewModel.LoadOldestState.Loading.self) } default: break } } - } // MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate + extension NotificationViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { func navigationBar() -> UINavigationBar? { - return navigationController?.navigationBar + navigationController?.navigationBar } } extension NotificationViewController: NotificationTableViewCellDelegate { func userAvatarDidPressed(notification: MastodonNotification) { - let viewModel = ProfileViewModel(context: self.context, optionalMastodonUser: notification.account) + let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) DispatchQueue.main.async { self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) } @@ -190,11 +185,10 @@ extension NotificationViewController: NotificationTableViewCellDelegate { func parent() -> UIViewController { self } - - } // MARK: - UIScrollViewDelegate + extension NotificationViewController { func scrollViewDidScroll(_ scrollView: UIScrollView) { handleScrollViewDidScroll(scrollView) @@ -204,6 +198,6 @@ extension NotificationViewController { extension NotificationViewController: LoadMoreConfigurableTableViewContainer { typealias BottomLoaderTableViewCell = CommonBottomLoader typealias LoadingState = NotificationViewModel.LoadOldestState.Loading - var loadMoreConfigurableTableView: UITableView { return tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadoldestStateMachine } + var loadMoreConfigurableTableView: UITableView { tableView } + var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.loadoldestStateMachine } } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift index 3e88de9a7..38f24c586 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift @@ -5,13 +5,13 @@ // Created by sxiaojian on 2021/4/13. // -import os.log -import func QuartzCore.CACurrentMediaTime -import Foundation import CoreData import CoreDataStack +import Foundation import GameplayKit import MastodonSDK +import os.log +import func QuartzCore.CACurrentMediaTime extension NotificationViewModel { class LoadLatestState: GKState { @@ -22,7 +22,7 @@ extension NotificationViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", (#file as NSString).lastPathComponent, #line, #function, debugDescription, previousState.debugDescription) viewModel?.loadLatestStateMachinePublisher.send(self) } } @@ -31,13 +31,13 @@ extension NotificationViewModel { extension NotificationViewModel.LoadLatestState { class Initial: NotificationViewModel.LoadLatestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self + stateClass == Loading.self } } class Loading: NotificationViewModel.LoadLatestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Fail.self || stateClass == Idle.self + stateClass == Fail.self || stateClass == Idle.self } override func didEnter(from previousState: GKState?) { @@ -63,7 +63,7 @@ extension NotificationViewModel.LoadLatestState { switch completion { case .failure(let error): viewModel.isFetchingLatestNotification.value = false - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) case .finished: // handle isFetchingLatestTimeline in fetch controller delegate break @@ -76,21 +76,18 @@ extension NotificationViewModel.LoadLatestState { } } .store(in: &viewModel.disposeBag) - - } } class Fail: NotificationViewModel.LoadLatestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self || stateClass == Idle.self + stateClass == Loading.self || stateClass == Idle.self } } class Idle: NotificationViewModel.LoadLatestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self + stateClass == Loading.self } } - } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift index bf049eace..4885d7025 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift @@ -5,11 +5,11 @@ // Created by sxiaojian on 2021/4/14. // -import os.log +import CoreDataStack import Foundation import GameplayKit import MastodonSDK -import CoreDataStack +import os.log extension NotificationViewModel { class LoadOldestState: GKState { @@ -20,7 +20,7 @@ extension NotificationViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", (#file as NSString).lastPathComponent, #line, #function, debugDescription, previousState.debugDescription) viewModel?.loadOldestStateMachinePublisher.send(self) } } @@ -37,7 +37,7 @@ extension NotificationViewModel.LoadOldestState { class Loading: NotificationViewModel.LoadOldestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Fail.self || stateClass == Idle.self || stateClass == NoMore.self + stateClass == Fail.self || stateClass == Idle.self || stateClass == NoMore.self } override func didEnter(from previousState: GKState?) { @@ -80,7 +80,7 @@ extension NotificationViewModel.LoadOldestState { .sink { completion in switch completion { case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) case .finished: // handle isFetchingLatestTimeline in fetch controller delegate break @@ -111,20 +111,20 @@ extension NotificationViewModel.LoadOldestState { class Fail: NotificationViewModel.LoadOldestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self || stateClass == Idle.self + stateClass == Loading.self || stateClass == Idle.self } } class Idle: NotificationViewModel.LoadOldestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self + stateClass == Loading.self } } class NoMore: NotificationViewModel.LoadOldestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { // reset state if needs - return stateClass == Idle.self + stateClass == Idle.self } override func didEnter(from previousState: GKState?) { diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index a4c86521f..be516a501 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -5,13 +5,12 @@ // Created by sxiaojian on 2021/4/13. // -import os.log -import UIKit import CoreData import CoreDataStack +import os.log +import UIKit extension NotificationViewModel { - func setupDiffableDataSource( for tableView: UITableView, delegate: NotificationTableViewCellDelegate, @@ -33,19 +32,18 @@ extension NotificationViewModel { requestUserID: userid ) } - } extension NotificationViewModel: NSFetchedResultsControllerDelegate { func controllerWillChangeContent(_ controller: NSFetchedResultsController) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) } func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) guard let tableView = self.tableView else { return } - guard let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } + guard let navigationBar = contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } guard let diffableDataSource = self.diffableDataSource else { return } let oldSnapshot = diffableDataSource.snapshot() @@ -56,7 +54,6 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { managedObjectContext.parent = parentManagedObjectContext managedObjectContext.perform { - let notifications: [MastodonNotification] = { let request = MastodonNotification.sortedFetchRequest request.returnsObjectsAsFaults = false @@ -71,8 +68,8 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { var newSnapshot = NSDiffableDataSourceSnapshot() newSnapshot.appendSections([.main]) - newSnapshot.appendItems(notifications.map({NotificationItem.notification(objectID: $0.objectID)}), toSection: .main) - if !notifications.isEmpty && self.noMoreNotification.value == false { + newSnapshot.appendItems(notifications.map { NotificationItem.notification(objectID: $0.objectID) }, toSection: .main) + if !notifications.isEmpty, self.noMoreNotification.value == false { newSnapshot.appendItems([.bottomLoader], toSection: .main) } diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 85806acf2..f64c07fc9 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -5,16 +5,15 @@ // Created by sxiaojian on 2021/4/12. // -import Foundation import Combine -import UIKit import CoreData import CoreDataStack +import Foundation import GameplayKit import MastodonSDK +import UIKit -final class NotificationViewModel: NSObject { - +final class NotificationViewModel: NSObject { var disposeBag = Set() // input @@ -23,8 +22,8 @@ final class NotificationViewModel: NSObject { weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? let viewDidLoad = PassthroughSubject() - let selectedIndex = CurrentValueSubject(0) - let noMoreNotification = CurrentValueSubject(false) + let selectedIndex = CurrentValueSubject(0) + let noMoreNotification = CurrentValueSubject(false) let activeMastodonAuthenticationBox: CurrentValueSubject let fetchedResultsController: NSFetchedResultsController! @@ -33,7 +32,7 @@ final class NotificationViewModel: NSObject { let isFetchingLatestNotification = CurrentValueSubject(false) - //output + // output var diffableDataSource: UITableViewDiffableDataSource! // top loader private(set) lazy var loadLatestStateMachine: GKStateMachine = { @@ -63,6 +62,7 @@ final class NotificationViewModel: NSObject { stateMachine.enter(LoadOldestState.Initial.self) return stateMachine }() + lazy var loadOldestStateMachinePublisher = CurrentValueSubject(nil) init(context: AppContext) { @@ -71,7 +71,7 @@ final class NotificationViewModel: NSObject { self.fetchedResultsController = { let fetchRequest = MastodonNotification.sortedFetchRequest fetchRequest.returnsObjectsAsFaults = false - fetchRequest.relationshipKeyPathsForPrefetching = [#keyPath(MastodonNotification.status),#keyPath(MastodonNotification.account)] + fetchRequest.relationshipKeyPathsForPrefetching = [#keyPath(MastodonNotification.status), #keyPath(MastodonNotification.account)] let controller = NSFetchedResultsController( fetchRequest: fetchRequest, managedObjectContext: context.managedObjectContext, @@ -83,7 +83,7 @@ final class NotificationViewModel: NSObject { }() super.init() - self.fetchedResultsController.delegate = self + fetchedResultsController.delegate = self context.authenticationService.activeMastodonAuthenticationBox .sink(receiveValue: { [weak self] box in guard let self = self else { return } @@ -95,7 +95,7 @@ final class NotificationViewModel: NSObject { .store(in: &disposeBag) notificationPredicate - .compactMap{ $0 } + .compactMap { $0 } .sink { [weak self] predicate in guard let self = self else { return } self.fetchedResultsController.fetchRequest.predicate = predicate @@ -112,12 +112,11 @@ final class NotificationViewModel: NSObject { } .store(in: &disposeBag) - self.viewDidLoad + viewDidLoad .sink { [weak self] in guard let domain = self?.activeMastodonAuthenticationBox.value?.domain else { return } self?.notificationPredicate.value = MastodonNotification.predicate(domain: domain) - } .store(in: &disposeBag) } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 6bdf0fd1e..4766aaff8 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -12,7 +12,7 @@ import UIKit final class NotificationStatusTableViewCell: UITableViewCell { static let actionImageBorderWidth: CGFloat = 2 - static let statusPadding: UIEdgeInsets = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24) + static let statusPadding = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24) var disposeBag = Set() var pollCountdownSubscription: AnyCancellable? var delegate: NotificationTableViewCellDelegate? diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index a10ff01d6..ce8895acd 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -6,16 +6,16 @@ // import Combine +import CoreDataStack import Foundation import UIKit -import CoreDataStack -protocol NotificationTableViewCellDelegate: class { +protocol NotificationTableViewCellDelegate: AnyObject { var context: AppContext! { get } func parent() -> UIViewController - func userAvatarDidPressed(notification:MastodonNotification) + func userAvatarDidPressed(notification: MastodonNotification) } final class NotificationTableViewCell: UITableViewCell { @@ -113,7 +113,6 @@ extension NotificationTableViewCell { ]) } - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) actionImageBackground.layer.borderColor = Asset.Colors.Background.pure.color.cgColor diff --git a/Mastodon/Service/APIService/APIService+Notification.swift b/Mastodon/Service/APIService/APIService+Notification.swift index 53595fa92..e2b90ffd7 100644 --- a/Mastodon/Service/APIService/APIService+Notification.swift +++ b/Mastodon/Service/APIService/APIService+Notification.swift @@ -5,10 +5,10 @@ // Created by sxiaojian on 2021/4/13. // -import Foundation import Combine import CoreData import CoreDataStack +import Foundation import MastodonSDK import OSLog @@ -16,8 +16,8 @@ extension APIService { func allNotifications( domain: String, query: Mastodon.API.Notifications.Query, - mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox - ) -> AnyPublisher, Error> { + mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox) -> AnyPublisher, Error> + { let authorization = mastodonAuthenticationBox.userAuthorization return Mastodon.API.Notifications.getNotifications( session: session, @@ -28,10 +28,10 @@ extension APIService { let log = OSLog.api return self.backgroundManagedObjectContext.performChanges { response.value.forEach { notification in - let (mastodonUser,_) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) + let (mastodonUser, _) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) var status: Status? if let statusEntity = notification.status { - let (statusInCoreData,_,_) = APIService.CoreData.createOrMergeStatus( + let (statusInCoreData, _, _) = APIService.CoreData.createOrMergeStatus( into: self.backgroundManagedObjectContext, for: nil, domain: domain, @@ -45,7 +45,6 @@ extension APIService { // use constrain to avoid repeated save let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: notification.createdAt)) os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)", (#file as NSString).lastPathComponent, #line, #function, notification.type, notification.account.username) - } } .setFailureType(to: Error.self) From 56d22e9c1c5e6b8df27af2e5300d846a4257cdfe Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Thu, 15 Apr 2021 10:37:46 +0800 Subject: [PATCH 21/37] chore: use readableContentGuide --- .../NotificationStatusTableViewCell.swift | 35 +++++++++++-------- .../NotificationTableViewCell.swift | 22 ++++++++---- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 4766aaff8..f05f3d9a1 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -105,24 +105,35 @@ extension NotificationStatusTableViewCell { func configure() { selectionStyle = .none - contentView.addSubview(avatatImageView) + let container = UIView() + container.backgroundColor = .clear + contentView.addSubview(container) + container.constrain([ + container.topAnchor.constraint(equalTo: contentView.topAnchor), + container.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + container.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + container.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + ]) + + container.addSubview(avatatImageView) avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) - contentView.addSubview(actionImageBackground) - actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationStatusTableViewCell.actionImageBorderWidth, height: 24 + NotificationStatusTableViewCell.actionImageBorderWidth)) + container.addSubview(actionImageBackground) + actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationTableViewCell.actionImageBorderWidth, height: 24 + NotificationTableViewCell.actionImageBorderWidth)) actionImageBackground.pin(top: 33, left: 33, bottom: nil, right: nil) actionImageBackground.addSubview(actionImageView) actionImageView.constrainToCenter() - - contentView.addSubview(nameLabel) + + container.addSubview(nameLabel) nameLabel.constrain([ - nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 12), - nameLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 61) + nameLabel.topAnchor.constraint(equalTo: container.topAnchor, constant: 12), + nameLabel.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 61) + ]) - contentView.addSubview(actionLabel) + container.addSubview(actionLabel) actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), @@ -130,20 +141,16 @@ extension NotificationStatusTableViewCell { ]) statusView.contentWarningBlurContentImageView.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color - addStatusAndContainer() - } - - func addStatusAndContainer() { statusView.isUserInteractionEnabled = false // remove item don't display statusView.actionToolbarContainer.removeFromSuperview() statusView.avatarView.removeFromSuperview() statusView.usernameLabel.removeFromSuperview() - contentView.addSubview(statusContainer) + container.addSubview(statusContainer) statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14) - contentView.addSubview(statusView) + container.addSubview(statusView) statusView.pin(top: NotificationStatusTableViewCell.statusPadding.top, left: NotificationStatusTableViewCell.statusPadding.left, bottom: NotificationStatusTableViewCell.statusPadding.bottom, right: NotificationStatusTableViewCell.statusPadding.right) } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index ce8895acd..e42b08114 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -87,25 +87,35 @@ extension NotificationTableViewCell { func configure() { selectionStyle = .none - contentView.addSubview(avatatImageView) + let container = UIView() + container.backgroundColor = .clear + contentView.addSubview(container) + container.constrain([ + container.topAnchor.constraint(equalTo: contentView.topAnchor), + container.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + container.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + container.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + ]) + + container.addSubview(avatatImageView) avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) - contentView.addSubview(actionImageBackground) + container.addSubview(actionImageBackground) actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationTableViewCell.actionImageBorderWidth, height: 24 + NotificationTableViewCell.actionImageBorderWidth)) actionImageBackground.pin(top: 33, left: 33, bottom: nil, right: nil) actionImageBackground.addSubview(actionImageView) actionImageView.constrainToCenter() - contentView.addSubview(nameLabel) + container.addSubview(nameLabel) nameLabel.constrain([ - nameLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 24), + nameLabel.topAnchor.constraint(equalTo: container.topAnchor, constant: 24), contentView.bottomAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: 24), - nameLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 61) + nameLabel.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 61) ]) - contentView.addSubview(actionLabel) + container.addSubview(actionLabel) actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), From 845080a69dfda8ea6b9e423a8e5c4e5b8d9e09fb Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Thu, 15 Apr 2021 10:53:03 +0800 Subject: [PATCH 22/37] fix: NotificationCell nameLabel and actionLabel layout issue --- .../TableViewCell/NotificationStatusTableViewCell.swift | 2 +- .../TableViewCell/NotificationTableViewCell.swift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index f05f3d9a1..0f7a8fbdc 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -137,7 +137,7 @@ extension NotificationStatusTableViewCell { actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), - contentView.trailingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) + container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) ]) statusView.contentWarningBlurContentImageView.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index e42b08114..238d9c67f 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -111,7 +111,7 @@ extension NotificationTableViewCell { container.addSubview(nameLabel) nameLabel.constrain([ nameLabel.topAnchor.constraint(equalTo: container.topAnchor, constant: 24), - contentView.bottomAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: 24), + container.bottomAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: 24), nameLabel.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 61) ]) @@ -119,7 +119,7 @@ extension NotificationTableViewCell { actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), - contentView.trailingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) + container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) ]) } From ecf622b86672167c84507d8c8861399a66e798bd Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Thu, 15 Apr 2021 12:35:40 +0800 Subject: [PATCH 23/37] fix: statusView layout issue --- ...tagTimelineViewModel+LoadOldestState.swift | 8 +++++--- ...omeTimelineViewModel+LoadOldestState.swift | 8 +++++--- ...otificationViewModel+LoadOldestState.swift | 8 +++++--- .../NotificationViewModel+diffable.swift | 19 ++++++++++--------- .../NotificationStatusTableViewCell.swift | 8 ++++---- .../SearchViewModel+LoadOldestState.swift | 8 +++++--- .../TableViewCell/CommonBottomLoader.swift | 3 --- 7 files changed, 34 insertions(+), 28 deletions(-) diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift index e5c78f3d5..137373647 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift @@ -123,9 +123,11 @@ extension HashtagTimelineViewModel.LoadOldestState { assertionFailure() return } - var snapshot = diffableDataSource.snapshot() - snapshot.deleteItems([.bottomLoader]) - diffableDataSource.apply(snapshot) + DispatchQueue.main.async { + var snapshot = diffableDataSource.snapshot() + snapshot.deleteItems([.bottomLoader]) + diffableDataSource.apply(snapshot) + } } } } diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift index aaabd7a8b..a74d03a52 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift @@ -103,9 +103,11 @@ extension HomeTimelineViewModel.LoadOldestState { assertionFailure() return } - var snapshot = diffableDataSource.snapshot() - snapshot.deleteItems([.bottomLoader]) - diffableDataSource.apply(snapshot) + DispatchQueue.main.async { + var snapshot = diffableDataSource.snapshot() + snapshot.deleteItems([.bottomLoader]) + diffableDataSource.apply(snapshot) + } } } } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift index 4885d7025..a26dedeeb 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift @@ -133,9 +133,11 @@ extension NotificationViewModel.LoadOldestState { assertionFailure() return } - var snapshot = diffableDataSource.snapshot() - snapshot.deleteItems([.bottomLoader]) - diffableDataSource.apply(snapshot) + DispatchQueue.main.async { + var snapshot = diffableDataSource.snapshot() + snapshot.deleteItems([.bottomLoader]) + diffableDataSource.apply(snapshot) + } } } } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index be516a501..774620f8a 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -46,7 +46,6 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { guard let navigationBar = contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } guard let diffableDataSource = self.diffableDataSource else { return } - let oldSnapshot = diffableDataSource.snapshot() let predicate = fetchedResultsController.fetchRequest.predicate let parentManagedObjectContext = fetchedResultsController.managedObjectContext @@ -66,16 +65,18 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { } }() - var newSnapshot = NSDiffableDataSourceSnapshot() - newSnapshot.appendSections([.main]) - newSnapshot.appendItems(notifications.map { NotificationItem.notification(objectID: $0.objectID) }, toSection: .main) - if !notifications.isEmpty, self.noMoreNotification.value == false { - newSnapshot.appendItems([.bottomLoader], toSection: .main) - } - DispatchQueue.main.async { + let oldSnapshot = diffableDataSource.snapshot() + var newSnapshot = NSDiffableDataSourceSnapshot() + newSnapshot.appendSections([.main]) + newSnapshot.appendItems(notifications.map { NotificationItem.notification(objectID: $0.objectID) }, toSection: .main) + if !notifications.isEmpty, self.noMoreNotification.value == false { + newSnapshot.appendItems([.bottomLoader], toSection: .main) + } guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { - diffableDataSource.apply(newSnapshot) + diffableDataSource.apply(newSnapshot, animatingDifferences: false) { + tableView.reloadData() + } self.isFetchingLatestNotification.value = false return } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 0f7a8fbdc..6bea35ead 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -58,7 +58,7 @@ final class NotificationStatusTableViewCell: UITableViewCell { return label }() - let statusContainer: UIView = { + let statusBorder: UIView = { let view = UIView() view.backgroundColor = .clear view.layer.cornerRadius = 6 @@ -147,8 +147,8 @@ extension NotificationStatusTableViewCell { statusView.avatarView.removeFromSuperview() statusView.usernameLabel.removeFromSuperview() - container.addSubview(statusContainer) - statusContainer.pin(top: 40, left: 63, bottom: 14, right: 14) + container.addSubview(statusBorder) + statusBorder.pin(top: 40, left: 63, bottom: 14, right: 14) container.addSubview(statusView) statusView.pin(top: NotificationStatusTableViewCell.statusPadding.top, left: NotificationStatusTableViewCell.statusPadding.left, bottom: NotificationStatusTableViewCell.statusPadding.bottom, right: NotificationStatusTableViewCell.statusPadding.right) @@ -156,7 +156,7 @@ extension NotificationStatusTableViewCell { override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - statusContainer.layer.borderColor = Asset.Colors.Border.notification.color.cgColor + statusBorder.layer.borderColor = Asset.Colors.Border.notification.color.cgColor actionImageBackground.layer.borderColor = Asset.Colors.Background.pure.color.cgColor } } diff --git a/Mastodon/Scene/Search/SearchViewModel+LoadOldestState.swift b/Mastodon/Scene/Search/SearchViewModel+LoadOldestState.swift index c76ab202c..b486df774 100644 --- a/Mastodon/Scene/Search/SearchViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/Search/SearchViewModel+LoadOldestState.swift @@ -136,9 +136,11 @@ extension SearchViewModel.LoadOldestState { assertionFailure() return } - var snapshot = diffableDataSource.snapshot() - snapshot.deleteItems([.bottomLoader]) - diffableDataSource.apply(snapshot) + DispatchQueue.main.async { + var snapshot = diffableDataSource.snapshot() + snapshot.deleteItems([.bottomLoader]) + diffableDataSource.apply(snapshot) + } } } } diff --git a/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift b/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift index bb2ae9ce0..2d529972e 100644 --- a/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift +++ b/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift @@ -43,8 +43,5 @@ final class CommonBottomLoader: UITableViewCell { backgroundColor = Asset.Colors.Background.systemGroupedBackground.color contentView.addSubview(activityIndicatorView) activityIndicatorView.constrainToCenter() - NSLayoutConstraint.activate([ - contentView.heightAnchor.constraint(equalToConstant: 44) - ]) } } From 0ebf86bd43ce71b7a13fd6bcb5b6902892d81e13 Mon Sep 17 00:00:00 2001 From: ihugo Date: Thu, 15 Apr 2021 17:17:19 +0800 Subject: [PATCH 24/37] docs: add comments for hard code --- Mastodon/Scene/Settings/SettingsViewModel.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index 59219ab44..9ffec7f8d 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -105,6 +105,7 @@ class SettingsViewModel: NSObject, NeedsDependency { typealias Query = Mastodon.API.Subscriptions.CreateSubscriptionQuery let domain = activeMastodonAuthenticationBox.domain let query = Query( + // FIXME: to replace the correct endpoint, p256dh, auth endpoint: "http://www.google.com", p256dh: "BLQELIDm-6b9Bl07YrEuXJ4BL_YBVQ0dvt9NQGGJxIQidJWHPNa9YrouvcQ9d7_MqzvGS9Alz60SZNCG3qfpk=", auth: "4vQK-SvRAN5eo-8ASlrwA==", From ca7eb7bb1203ef0f912b3ac59b1453c76106186b Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Fri, 16 Apr 2021 13:45:54 +0800 Subject: [PATCH 25/37] chore: code format --- .../CoreData.xcdatamodel/contents | 5 +- CoreDataStack/Entity/Notification.swift | 55 +++++++++------ Mastodon.xcodeproj/project.pbxproj | 4 -- .../Diffiable/Item/NotificationItem.swift | 4 +- .../Section/NotificationSection.swift | 4 +- .../Section/SearchResultSection.swift | 2 +- Mastodon/Extension/UIView+Constraint.swift | 5 +- .../NotificationViewController.swift | 12 ++-- ...otificationViewModel+LoadLatestState.swift | 8 ++- ...otificationViewModel+LoadOldestState.swift | 20 +++--- .../Notification/NotificationViewModel.swift | 17 +++-- .../NotificationStatusTableViewCell.swift | 14 ++-- .../NotificationTableViewCell.swift | 5 +- .../SearchViewController+Searching.swift | 2 +- .../Scene/Search/SearchViewController.swift | 2 +- .../TableViewCell/CommonBottomLoader.swift | 47 ------------- .../APIService/APIService+Notification.swift | 70 ++++++++++--------- .../API/Mastodon+API+Notifications.swift | 18 ++--- 18 files changed, 130 insertions(+), 164 deletions(-) delete mode 100644 Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents index 2569da5e6..bc7a20d5d 100644 --- a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents +++ b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents @@ -70,8 +70,9 @@ - + + @@ -223,7 +224,7 @@ - + diff --git a/CoreDataStack/Entity/Notification.swift b/CoreDataStack/Entity/Notification.swift index 8a0595f6c..31c361aa4 100644 --- a/CoreDataStack/Entity/Notification.swift +++ b/CoreDataStack/Entity/Notification.swift @@ -12,13 +12,14 @@ public final class MastodonNotification: NSManagedObject { public typealias ID = UUID @NSManaged public private(set) var identifier: ID @NSManaged public private(set) var id: String - @NSManaged public private(set) var domain: String @NSManaged public private(set) var createAt: Date @NSManaged public private(set) var updatedAt: Date - @NSManaged public private(set) var type: String + @NSManaged public private(set) var typeRaw: String @NSManaged public private(set) var account: MastodonUser @NSManaged public private(set) var status: Status? + @NSManaged public private(set) var domain: String + @NSManaged public private(set) var userID: String } extension MastodonNotification { @@ -26,12 +27,6 @@ extension MastodonNotification { super.awakeFromInsert() setPrimitiveValue(UUID(), forKey: #keyPath(MastodonNotification.identifier)) } - - public override func willSave() { - super.willSave() - setPrimitiveValue(Date(), forKey: #keyPath(MastodonNotification.updatedAt)) - } - } public extension MastodonNotification { @@ -39,16 +34,19 @@ public extension MastodonNotification { static func insert( into context: NSManagedObjectContext, domain: String, + userID: String, + networkDate: Date, property: Property ) -> MastodonNotification { let notification: MastodonNotification = context.insertObject() notification.id = property.id notification.createAt = property.createdAt - notification.updatedAt = property.createdAt - notification.type = property.type + notification.updatedAt = networkDate + notification.typeRaw = property.typeRaw notification.account = property.account notification.status = property.status notification.domain = domain + notification.userID = userID return notification } } @@ -56,19 +54,20 @@ public extension MastodonNotification { public extension MastodonNotification { struct Property { public init(id: String, - type: String, + typeRaw: String, account: MastodonUser, status: Status?, - createdAt: Date) { + createdAt: Date + ) { self.id = id - self.type = type + self.typeRaw = typeRaw self.account = account self.status = status self.createdAt = createdAt } public let id: String - public let type: String + public let typeRaw: String public let account: MastodonUser public let status: Status? public let createdAt: Date @@ -76,19 +75,31 @@ public extension MastodonNotification { } extension MastodonNotification { - public static func predicate(domain: String) -> NSPredicate { + static func predicate(domain: String) -> NSPredicate { return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.domain), domain) } - static func predicate(type: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.type), type) + static func predicate(userID: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.userID), userID) } - public static func predicate(domain: String, type: String) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - MastodonNotification.predicate(domain: domain), - MastodonNotification.predicate(type: type) - ]) + static func predicate(typeRaw: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.typeRaw), typeRaw) + } + + public static func predicate(domain: String, userID: String, typeRaw: String? = nil) -> NSPredicate { + if let typeRaw = typeRaw { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + MastodonNotification.predicate(domain: domain), + MastodonNotification.predicate(typeRaw: typeRaw), + MastodonNotification.predicate(userID: userID), + ]) + } else { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + MastodonNotification.predicate(domain: domain), + MastodonNotification.predicate(userID: userID) + ]) + } } } diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index d088d3176..3244dcd33 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -37,7 +37,6 @@ 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A9125C2980C009AA50C /* UIFont.swift */; }; 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198642261BF09500F0B013 /* SearchResultItem.swift */; }; 2D198649261C0B8500F0B013 /* SearchResultSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198648261C0B8500F0B013 /* SearchResultSection.swift */; }; - 2D19864F261C372A00F0B013 /* CommonBottomLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D19864E261C372A00F0B013 /* CommonBottomLoader.swift */; }; 2D198655261C3C4300F0B013 /* SearchViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198654261C3C4300F0B013 /* SearchViewModel+LoadOldestState.swift */; }; 2D206B7225F5D27F00143C56 /* AudioContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */; }; 2D206B8025F5F45E00143C56 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B7F25F5F45E00143C56 /* UIImage.swift */; }; @@ -427,7 +426,6 @@ 2D152A9125C2980C009AA50C /* UIFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFont.swift; sourceTree = ""; }; 2D198642261BF09500F0B013 /* SearchResultItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItem.swift; sourceTree = ""; }; 2D198648261C0B8500F0B013 /* SearchResultSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSection.swift; sourceTree = ""; }; - 2D19864E261C372A00F0B013 /* CommonBottomLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonBottomLoader.swift; sourceTree = ""; }; 2D198654261C3C4300F0B013 /* SearchViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchViewModel+LoadOldestState.swift"; sourceTree = ""; }; 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioContainerView.swift; sourceTree = ""; }; 2D206B7F25F5F45E00143C56 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; @@ -1154,7 +1152,6 @@ isa = PBXGroup; children = ( 2DFAD5362617010500F9EE7C /* SearchingTableViewCell.swift */, - 2D19864E261C372A00F0B013 /* CommonBottomLoader.swift */, ); path = TableViewCell; sourceTree = ""; @@ -2272,7 +2269,6 @@ DBB5256E2612D5A1002F1F29 /* ProfileStatusDashboardView.swift in Sources */, 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */, DB45FAE325CA7181005A8AC7 /* MastodonUser.swift in Sources */, - 2D19864F261C372A00F0B013 /* CommonBottomLoader.swift in Sources */, DB2FF510260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift in Sources */, 0F202213261351F5000C64BF /* APIService+HashtagTimeline.swift in Sources */, DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */, diff --git a/Mastodon/Diffiable/Item/NotificationItem.swift b/Mastodon/Diffiable/Item/NotificationItem.swift index c160eac5e..ba0d0c140 100644 --- a/Mastodon/Diffiable/Item/NotificationItem.swift +++ b/Mastodon/Diffiable/Item/NotificationItem.swift @@ -17,10 +17,10 @@ enum NotificationItem { extension NotificationItem: Equatable { static func == (lhs: NotificationItem, rhs: NotificationItem) -> Bool { switch (lhs, rhs) { - case (.bottomLoader, .bottomLoader): - return true case (.notification(let idLeft), .notification(let idRight)): return idLeft == idRight + case (.bottomLoader, .bottomLoader): + return true default: return false } diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 5e3cd2d9e..0b63bb241 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -33,7 +33,7 @@ extension NotificationSection { case .notification(let objectID): let notification = managedObjectContext.object(with: objectID) as! MastodonNotification - let type = Mastodon.Entity.Notification.NotificationType(rawValue: notification.type) + let type = Mastodon.Entity.Notification.NotificationType(rawValue: notification.typeRaw) let timeText = notification.createAt.shortTimeAgoSinceNow @@ -128,7 +128,7 @@ extension NotificationSection { return cell } case .bottomLoader: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: CommonBottomLoader.self)) as! CommonBottomLoader + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) as! TimelineBottomLoaderTableViewCell cell.startAnimating() return cell } diff --git a/Mastodon/Diffiable/Section/SearchResultSection.swift b/Mastodon/Diffiable/Section/SearchResultSection.swift index e01063c86..1b9230ee0 100644 --- a/Mastodon/Diffiable/Section/SearchResultSection.swift +++ b/Mastodon/Diffiable/Section/SearchResultSection.swift @@ -44,7 +44,7 @@ extension SearchResultSection { cell.config(with: user) return cell case .bottomLoader: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: CommonBottomLoader.self)) as! CommonBottomLoader + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) as! TimelineBottomLoaderTableViewCell cell.startAnimating() return cell } diff --git a/Mastodon/Extension/UIView+Constraint.swift b/Mastodon/Extension/UIView+Constraint.swift index baa923ada..ded8846d4 100644 --- a/Mastodon/Extension/UIView+Constraint.swift +++ b/Mastodon/Extension/UIView+Constraint.swift @@ -174,8 +174,9 @@ extension UIView { guard superview != nil else { assert(false, "Superview cannot be nil when adding contraints"); return } translatesAutoresizingMaskIntoConstraints = false constrain([ - widthAnchor.constraint(equalToConstant: toSize.width), - heightAnchor.constraint(equalToConstant: toSize.height)]) + widthAnchor.constraint(equalToConstant: toSize.width).priority(.required - 1), + heightAnchor.constraint(equalToConstant: toSize.height).priority(.required - 1) + ]) } func pin(top: CGFloat?,left: CGFloat?,bottom: CGFloat?, right: CGFloat?) { diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index becf86771..ddc997a5d 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -33,7 +33,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) tableView.register(NotificationTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationTableViewCell.self)) tableView.register(NotificationStatusTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationStatusTableViewCell.self)) - tableView.register(CommonBottomLoader.self, forCellReuseIdentifier: String(describing: CommonBottomLoader.self)) + tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) tableView.tableFooterView = UIView() tableView.rowHeight = UITableView.automaticDimension return tableView @@ -111,15 +111,15 @@ extension NotificationViewController { extension NotificationViewController { @objc private func segmentedControlValueChanged(_ sender: UISegmentedControl) { os_log("%{public}s[%{public}ld], %{public}s: select at index: %ld", (#file as NSString).lastPathComponent, #line, #function, sender.selectedSegmentIndex) - guard let domain = viewModel.activeMastodonAuthenticationBox.value?.domain else { + guard let domain = viewModel.activeMastodonAuthenticationBox.value?.domain, let userID = viewModel.activeMastodonAuthenticationBox.value?.userID else { return } if sender.selectedSegmentIndex == 0 { - viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain) + viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) } else { - viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, type: Mastodon.Entity.Notification.NotificationType.mention.rawValue) + viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain,userID: userID, typeRaw: Mastodon.Entity.Notification.NotificationType.mention.rawValue) } - viewModel.selectedIndex.value = sender.selectedSegmentIndex + viewModel.selectedIndex.value = NotificationViewModel.NotificationSegment.init(rawValue: sender.selectedSegmentIndex)! } @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { @@ -196,7 +196,7 @@ extension NotificationViewController { } extension NotificationViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = CommonBottomLoader + typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell typealias LoadingState = NotificationViewModel.LoadOldestState.Loading var loadMoreConfigurableTableView: UITableView { tableView } var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.loadoldestStateMachine } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift index 38f24c586..0e6b0d622 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift @@ -53,12 +53,14 @@ extension NotificationViewModel.LoadLatestState { sinceID: nil, minID: nil, limit: nil, - excludeTypes: Mastodon.API.Notifications.allExcludeTypes(), - accountID: nil) + excludeTypes: [.followRequest], + accountID: nil + ) viewModel.context.apiService.allNotifications( domain: activeMastodonAuthenticationBox.domain, query: query, - mastodonAuthenticationBox: activeMastodonAuthenticationBox) + mastodonAuthenticationBox: activeMastodonAuthenticationBox + ) .sink { completion in switch completion { case .failure(let error): diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift index a26dedeeb..8075ce375 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift @@ -50,7 +50,7 @@ extension NotificationViewModel.LoadOldestState { } let notifications: [MastodonNotification]? = { let request = MastodonNotification.sortedFetchRequest - request.predicate = MastodonNotification.predicate(domain: activeMastodonAuthenticationBox.domain) + request.predicate = MastodonNotification.predicate(domain: activeMastodonAuthenticationBox.domain, userID: activeMastodonAuthenticationBox.userID) request.returnsObjectsAsFaults = false do { return try self.viewModel?.context.managedObjectContext.fetch(request) @@ -71,12 +71,13 @@ extension NotificationViewModel.LoadOldestState { sinceID: nil, minID: nil, limit: nil, - excludeTypes: Mastodon.API.Notifications.allExcludeTypes(), + excludeTypes: [.followRequest], accountID: nil) viewModel.context.apiService.allNotifications( domain: activeMastodonAuthenticationBox.domain, query: query, - mastodonAuthenticationBox: activeMastodonAuthenticationBox) + mastodonAuthenticationBox: activeMastodonAuthenticationBox + ) .sink { completion in switch completion { case .failure(let error): @@ -89,16 +90,17 @@ extension NotificationViewModel.LoadOldestState { stateMachine.enter(Idle.self) } receiveValue: { [weak viewModel] response in guard let viewModel = viewModel else { return } - if viewModel.selectedIndex.value == 1 { - viewModel.noMoreNotification.value = response.value.isEmpty - let list = response.value.filter { $0.type == Mastodon.Entity.Notification.NotificationType.mention } - if list.isEmpty { + switch viewModel.selectedIndex.value { + case .EveryThing: + if response.value.isEmpty { stateMachine.enter(NoMore.self) } else { stateMachine.enter(Idle.self) } - } else { - if response.value.isEmpty { + case .Mentions: + viewModel.noMoreNotification.value = response.value.isEmpty + let list = response.value.filter { $0.type == Mastodon.Entity.Notification.NotificationType.mention } + if list.isEmpty { stateMachine.enter(NoMore.self) } else { stateMachine.enter(Idle.self) diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index f64c07fc9..e026af732 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -22,7 +22,7 @@ final class NotificationViewModel: NSObject { weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? let viewDidLoad = PassthroughSubject() - let selectedIndex = CurrentValueSubject(0) + let selectedIndex = CurrentValueSubject(.EveryThing) let noMoreNotification = CurrentValueSubject(false) let activeMastodonAuthenticationBox: CurrentValueSubject @@ -88,8 +88,8 @@ final class NotificationViewModel: NSObject { .sink(receiveValue: { [weak self] box in guard let self = self else { return } self.activeMastodonAuthenticationBox.value = box - if let domain = box?.domain { - self.notificationPredicate.value = MastodonNotification.predicate(domain: domain) + if let domain = box?.domain, let userID = box?.userID { + self.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) } }) .store(in: &disposeBag) @@ -115,9 +115,16 @@ final class NotificationViewModel: NSObject { viewDidLoad .sink { [weak self] in - guard let domain = self?.activeMastodonAuthenticationBox.value?.domain else { return } - self?.notificationPredicate.value = MastodonNotification.predicate(domain: domain) + guard let domain = self?.activeMastodonAuthenticationBox.value?.domain, let userID = self?.activeMastodonAuthenticationBox.value?.userID else { return } + self?.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) } .store(in: &disposeBag) } } + +extension NotificationViewModel { + enum NotificationSegment: Int { + case EveryThing + case Mentions + } +} diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 6bea35ead..dc3f49bb0 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -103,7 +103,6 @@ final class NotificationStatusTableViewCell: UITableViewCell { extension NotificationStatusTableViewCell { func configure() { - selectionStyle = .none let container = UIView() container.backgroundColor = .clear @@ -117,11 +116,11 @@ extension NotificationStatusTableViewCell { container.addSubview(avatatImageView) avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) - avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) + avatatImageView.pin(top: 12, left: 0, bottom: nil, right: nil) container.addSubview(actionImageBackground) actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationTableViewCell.actionImageBorderWidth, height: 24 + NotificationTableViewCell.actionImageBorderWidth)) - actionImageBackground.pin(top: 33, left: 33, bottom: nil, right: nil) + actionImageBackground.pin(top: 33, left: 21, bottom: nil, right: nil) actionImageBackground.addSubview(actionImageView) actionImageView.constrainToCenter() @@ -130,22 +129,21 @@ extension NotificationStatusTableViewCell { nameLabel.constrain([ nameLabel.topAnchor.constraint(equalTo: container.topAnchor, constant: 12), nameLabel.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 61) - ]) container.addSubview(actionLabel) actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), - container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) + container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4) ]) statusView.contentWarningBlurContentImageView.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color statusView.isUserInteractionEnabled = false // remove item don't display - statusView.actionToolbarContainer.removeFromSuperview() - statusView.avatarView.removeFromSuperview() - statusView.usernameLabel.removeFromSuperview() + statusView.actionToolbarContainer.isHidden = true + statusView.avatarView.isHidden = true + statusView.usernameLabel.isHidden = true container.addSubview(statusBorder) statusBorder.pin(top: 40, left: 63, bottom: 14, right: 14) diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index 238d9c67f..cda4d75d7 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -85,7 +85,6 @@ final class NotificationTableViewCell: UITableViewCell { extension NotificationTableViewCell { func configure() { - selectionStyle = .none let container = UIView() container.backgroundColor = .clear @@ -99,7 +98,7 @@ extension NotificationTableViewCell { container.addSubview(avatatImageView) avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) - avatatImageView.pin(top: 12, left: 12, bottom: nil, right: nil) + avatatImageView.pin(top: 12, left: 0, bottom: nil, right: nil) container.addSubview(actionImageBackground) actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationTableViewCell.actionImageBorderWidth, height: 24 + NotificationTableViewCell.actionImageBorderWidth)) @@ -119,7 +118,7 @@ extension NotificationTableViewCell { actionLabel.constrain([ actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), - container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4).priority(.defaultLow) + container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4) ]) } diff --git a/Mastodon/Scene/Search/SearchViewController+Searching.swift b/Mastodon/Scene/Search/SearchViewController+Searching.swift index 43e5d397c..86a27e03d 100644 --- a/Mastodon/Scene/Search/SearchViewController+Searching.swift +++ b/Mastodon/Scene/Search/SearchViewController+Searching.swift @@ -17,7 +17,7 @@ extension SearchViewController { func setupSearchingTableView() { searchingTableView.delegate = self searchingTableView.register(SearchingTableViewCell.self, forCellReuseIdentifier: String(describing: SearchingTableViewCell.self)) - searchingTableView.register(CommonBottomLoader.self, forCellReuseIdentifier: String(describing: CommonBottomLoader.self)) + searchingTableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) view.addSubview(searchingTableView) searchingTableView.constrain([ searchingTableView.frameLayoutGuide.topAnchor.constraint(equalTo: searchBar.bottomAnchor), diff --git a/Mastodon/Scene/Search/SearchViewController.swift b/Mastodon/Scene/Search/SearchViewController.swift index dc9414585..4fee226bf 100644 --- a/Mastodon/Scene/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/SearchViewController.swift @@ -227,7 +227,7 @@ extension SearchViewController: UISearchBarDelegate { } extension SearchViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = CommonBottomLoader + typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell typealias LoadingState = SearchViewModel.LoadOldestState.Loading var loadMoreConfigurableTableView: UITableView { searchingTableView } var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.loadoldestStateMachine } diff --git a/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift b/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift deleted file mode 100644 index 2d529972e..000000000 --- a/Mastodon/Scene/Search/TableViewCell/CommonBottomLoader.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// CommonBottomLoader.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/6. -// - -import Foundation -import UIKit - -final class CommonBottomLoader: UITableViewCell { - let activityIndicatorView: UIActivityIndicatorView = { - let activityIndicatorView = UIActivityIndicatorView(style: .medium) - activityIndicatorView.tintColor = Asset.Colors.Label.primary.color - activityIndicatorView.hidesWhenStopped = true - return activityIndicatorView - }() - - override func prepareForReuse() { - super.prepareForReuse() - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - - func startAnimating() { - activityIndicatorView.startAnimating() - } - - func stopAnimating() { - activityIndicatorView.stopAnimating() - } - - func _init() { - selectionStyle = .none - backgroundColor = Asset.Colors.Background.systemGroupedBackground.color - contentView.addSubview(activityIndicatorView) - activityIndicatorView.constrainToCenter() - } -} diff --git a/Mastodon/Service/APIService/APIService+Notification.swift b/Mastodon/Service/APIService/APIService+Notification.swift index e2b90ffd7..ee8f5186c 100644 --- a/Mastodon/Service/APIService/APIService+Notification.swift +++ b/Mastodon/Service/APIService/APIService+Notification.swift @@ -16,48 +16,52 @@ extension APIService { func allNotifications( domain: String, query: Mastodon.API.Notifications.Query, - mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox) -> AnyPublisher, Error> - { + mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox + ) -> AnyPublisher, Error> { let authorization = mastodonAuthenticationBox.userAuthorization + let userID = mastodonAuthenticationBox.userID return Mastodon.API.Notifications.getNotifications( session: session, domain: domain, query: query, - authorization: authorization) - .flatMap { response -> AnyPublisher, Error> in - let log = OSLog.api - return self.backgroundManagedObjectContext.performChanges { - response.value.forEach { notification in - let (mastodonUser, _) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) - var status: Status? - if let statusEntity = notification.status { - let (statusInCoreData, _, _) = APIService.CoreData.createOrMergeStatus( - into: self.backgroundManagedObjectContext, - for: nil, - domain: domain, - entity: statusEntity, - statusCache: nil, - userCache: nil, - networkDate: Date(), - log: log) - status = statusInCoreData - } - // use constrain to avoid repeated save - let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, property: MastodonNotification.Property(id: notification.id, type: notification.type.rawValue, account: mastodonUser, status: status, createdAt: notification.createdAt)) - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)", (#file as NSString).lastPathComponent, #line, #function, notification.type, notification.account.username) + authorization: authorization + ) + .flatMap { response -> AnyPublisher, Error> in + let log = OSLog.api + return self.backgroundManagedObjectContext.performChanges { + response.value.forEach { notification in + let (mastodonUser, _) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) + var status: Status? + if let statusEntity = notification.status { + let (statusInCoreData, _, _) = APIService.CoreData.createOrMergeStatus( + into: self.backgroundManagedObjectContext, + for: nil, + domain: domain, + entity: statusEntity, + statusCache: nil, + userCache: nil, + networkDate: Date(), + log: log + ) + status = statusInCoreData } + // use constrain to avoid repeated save + let property = MastodonNotification.Property(id: notification.id, typeRaw: notification.type.rawValue, account: mastodonUser, status: status, createdAt: notification.createdAt) + let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, userID: userID, networkDate: response.networkDate, property: property) + os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)", (#file as NSString).lastPathComponent, #line, #function, notification.typeRaw, notification.account.username) } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Notification]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } + } + .setFailureType(to: Error.self) + .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Notification]> in + switch result { + case .success: + return response + case .failure(let error): + throw error } - .eraseToAnyPublisher() } .eraseToAnyPublisher() + } + .eraseToAnyPublisher() } } diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift index 1cc54add5..b0ab13edb 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Notifications.swift @@ -8,7 +8,7 @@ import Combine import Foundation -public extension Mastodon.API.Notifications { +extension Mastodon.API.Notifications { internal static func notificationsEndpointURL(domain: String) -> URL { Mastodon.API.endpointURL(domain: domain).appendingPathComponent("notifications") } @@ -31,7 +31,7 @@ public extension Mastodon.API.Notifications { /// - query: `NotificationsQuery` with query parameters /// - authorization: User token /// - Returns: `AnyPublisher` contains `Token` nested in the response - static func getNotifications( + public static func getNotifications( session: URLSession, domain: String, query: Mastodon.API.Notifications.Query, @@ -64,7 +64,7 @@ public extension Mastodon.API.Notifications { /// - notificationID: ID of the notification. /// - authorization: User token /// - Returns: `AnyPublisher` contains `Token` nested in the response - static func getNotification( + public static func getNotification( session: URLSession, domain: String, notificationID: String, @@ -82,18 +82,10 @@ public extension Mastodon.API.Notifications { } .eraseToAnyPublisher() } - - static func allExcludeTypes() -> [Mastodon.Entity.Notification.NotificationType] { - [.followRequest] - } - - static func mentionsExcludeTypes() -> [Mastodon.Entity.Notification.NotificationType] { - [.follow, .followRequest, .favourite, .reblog, .poll] - } } -public extension Mastodon.API.Notifications { - struct Query: Codable, PagedQueryType, GetQuery { +extension Mastodon.API.Notifications { + public struct Query: PagedQueryType, GetQuery { public let maxID: Mastodon.Entity.Status.ID? public let sinceID: Mastodon.Entity.Status.ID? public let minID: Mastodon.Entity.Status.ID? From cfdd2ea6705c1ed07a3fd04895527375040d5387 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Fri, 16 Apr 2021 21:55:09 +0800 Subject: [PATCH 26/37] chore: use stackView --- Mastodon.xcodeproj/project.pbxproj | 4 + Mastodon/Extension/UIView+Remove.swift | 18 +++ .../NotificationViewController.swift | 2 +- .../NotificationViewModel+diffable.swift | 4 +- .../NotificationStatusTableViewCell.swift | 130 ++++++++++++------ .../NotificationTableViewCell.swift | 92 +++++++++---- 6 files changed, 176 insertions(+), 74 deletions(-) create mode 100644 Mastodon/Extension/UIView+Remove.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 3244dcd33..19506bb99 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -136,6 +136,7 @@ 5D0393902612D259007FE196 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D03938F2612D259007FE196 /* WebViewController.swift */; }; 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0393952612D266007FE196 /* WebViewModel.swift */; }; 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = 5D526FE125BE9AC400460CB9 /* MastodonSDK */; }; + 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DA732CB2629CEF500A92342 /* UIView+Remove.swift */; }; 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1922617442700311060 /* Mastodon+Entity+Account.swift */; }; 5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1982617447F00311060 /* Mastodon+Entity+Tag.swift */; }; 5DDDF1A92617489F00311060 /* Mastodon+Entity+History.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1A82617489F00311060 /* Mastodon+Entity+History.swift */; }; @@ -525,6 +526,7 @@ 459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.debug.xcconfig"; sourceTree = ""; }; 5D03938F2612D259007FE196 /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; 5D0393952612D266007FE196 /* WebViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewModel.swift; sourceTree = ""; }; + 5DA732CB2629CEF500A92342 /* UIView+Remove.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Remove.swift"; sourceTree = ""; }; 5DDDF1922617442700311060 /* Mastodon+Entity+Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Account.swift"; sourceTree = ""; }; 5DDDF1982617447F00311060 /* Mastodon+Entity+Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Tag.swift"; sourceTree = ""; }; 5DDDF1A82617489F00311060 /* Mastodon+Entity+History.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+History.swift"; sourceTree = ""; }; @@ -1614,6 +1616,7 @@ 5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */, DB47229625F9EFAD00DA7F53 /* NSManagedObjectContext.swift */, 2D32EAB925CB9B0500C9ED86 /* UIView.swift */, + 5DA732CB2629CEF500A92342 /* UIView+Remove.swift */, 2DFF41882614A4DC00F776A4 /* UIView+Constraint.swift */, DB8AF55C25C138B7002E6C99 /* UIViewController.swift */, 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */, @@ -2329,6 +2332,7 @@ DB71FD3C25F8A1C500512AE1 /* APIService+Persist+PersistCache.swift in Sources */, 2DA6055125F74407006356F9 /* AudioContainerViewModel.swift in Sources */, 0FB3D2FE25E4CB6400AAD544 /* PickServerTitleCell.swift in Sources */, + 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */, 2D38F1DF25CD46A400561493 /* HomeTimelineViewController+StatusProvider.swift in Sources */, 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */, 2D46975E25C2A54100CF4AA9 /* NSLayoutConstraint.swift in Sources */, diff --git a/Mastodon/Extension/UIView+Remove.swift b/Mastodon/Extension/UIView+Remove.swift new file mode 100644 index 000000000..473b3c348 --- /dev/null +++ b/Mastodon/Extension/UIView+Remove.swift @@ -0,0 +1,18 @@ +// +// UIView+Remove.swift +// Mastodon +// +// Created by xiaojian sun on 2021/4/16. +// + +import Foundation +import UIKit + +extension UIView { + func removeFromStackView() { + if let stackView = self.superview as? UIStackView { + stackView.removeArrangedSubview(self) + } + self.removeFromSuperview() + } +} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index ddc997a5d..3fb862590 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -35,7 +35,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { tableView.register(NotificationStatusTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationStatusTableViewCell.self)) tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) tableView.tableFooterView = UIView() - tableView.rowHeight = UITableView.automaticDimension + tableView.estimatedRowHeight = UITableView.automaticDimension return tableView }() diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index 774620f8a..c65b5096b 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -74,9 +74,7 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { newSnapshot.appendItems([.bottomLoader], toSection: .main) } guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { - diffableDataSource.apply(newSnapshot, animatingDifferences: false) { - tableView.reloadData() - } + diffableDataSource.apply(newSnapshot, animatingDifferences: false) self.isFetchingLatestNotification.value = false return } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index dc3f49bb0..5d1a14be3 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -11,7 +11,6 @@ import UIKit final class NotificationStatusTableViewCell: UITableViewCell { static let actionImageBorderWidth: CGFloat = 2 - static let statusPadding = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24) var disposeBag = Set() var pollCountdownSubscription: AnyCancellable? @@ -42,6 +41,11 @@ final class NotificationStatusTableViewCell: UITableViewCell { return view }() + let avatarContainer: UIView = { + let view = UIView() + return view + }() + let actionLabel: UILabel = { let label = UILabel() label.textColor = Asset.Colors.Label.secondary.color @@ -103,53 +107,99 @@ final class NotificationStatusTableViewCell: UITableViewCell { extension NotificationStatusTableViewCell { func configure() { - - let container = UIView() - container.backgroundColor = .clear - contentView.addSubview(container) - container.constrain([ - container.topAnchor.constraint(equalTo: contentView.topAnchor), - container.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - container.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - container.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + let containerStackView = UIStackView() + containerStackView.axis = .horizontal + containerStackView.alignment = .top + containerStackView.spacing = 4 + containerStackView.layoutMargins = UIEdgeInsets(top: 14, left: 0, bottom: 12, right: 0) + containerStackView.isLayoutMarginsRelativeArrangement = true + containerStackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + contentView.readableContentGuide.trailingAnchor.constraint(equalTo: containerStackView.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor), ]) - - container.addSubview(avatatImageView) - avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) - avatatImageView.pin(top: 12, left: 0, bottom: nil, right: nil) - - container.addSubview(actionImageBackground) - actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationTableViewCell.actionImageBorderWidth, height: 24 + NotificationTableViewCell.actionImageBorderWidth)) - actionImageBackground.pin(top: 33, left: 21, bottom: nil, right: nil) - - actionImageBackground.addSubview(actionImageView) - actionImageView.constrainToCenter() - container.addSubview(nameLabel) - nameLabel.constrain([ - nameLabel.topAnchor.constraint(equalTo: container.topAnchor, constant: 12), - nameLabel.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 61) + containerStackView.addArrangedSubview(avatarContainer) + avatarContainer.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + avatarContainer.heightAnchor.constraint(equalToConstant: 47).priority(.required - 1), + avatarContainer.widthAnchor.constraint(equalToConstant: 47).priority(.required - 1) + ]) + + avatarContainer.addSubview(avatatImageView) + avatatImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + avatatImageView.heightAnchor.constraint(equalToConstant: 35).priority(.required - 1), + avatatImageView.widthAnchor.constraint(equalToConstant: 35).priority(.required - 1), + avatatImageView.topAnchor.constraint(equalTo: avatarContainer.topAnchor), + avatatImageView.leadingAnchor.constraint(equalTo: avatarContainer.leadingAnchor) + ]) + + avatarContainer.addSubview(actionImageBackground) + actionImageBackground.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + actionImageBackground.heightAnchor.constraint(equalToConstant: 24 + NotificationTableViewCell.actionImageBorderWidth).priority(.required - 1), + actionImageBackground.widthAnchor.constraint(equalToConstant: 24 + NotificationTableViewCell.actionImageBorderWidth).priority(.required - 1), + actionImageBackground.bottomAnchor.constraint(equalTo: avatarContainer.bottomAnchor), + actionImageBackground.trailingAnchor.constraint(equalTo: avatarContainer.trailingAnchor) + ]) + + avatarContainer.addSubview(actionImageView) + actionImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + actionImageView.centerXAnchor.constraint(equalTo: actionImageBackground.centerXAnchor), + actionImageView.centerYAnchor.constraint(equalTo: actionImageBackground.centerYAnchor) + ]) + + + let actionStackView = UIStackView() + actionStackView.axis = .horizontal + actionStackView.distribution = .fillProportionally + actionStackView.spacing = 4 + actionStackView.translatesAutoresizingMaskIntoConstraints = false + + nameLabel.translatesAutoresizingMaskIntoConstraints = false + actionStackView.addArrangedSubview(nameLabel) + actionLabel.translatesAutoresizingMaskIntoConstraints = false + actionStackView.addArrangedSubview(actionLabel) + nameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) + + let statusStackView = UIStackView() + statusStackView.axis = .vertical + + statusStackView.distribution = .fill + statusStackView.spacing = 4 + statusStackView.translatesAutoresizingMaskIntoConstraints = false + statusView.translatesAutoresizingMaskIntoConstraints = false + statusStackView.addArrangedSubview(actionStackView) + + statusBorder.translatesAutoresizingMaskIntoConstraints = false + statusView.translatesAutoresizingMaskIntoConstraints = false + statusBorder.addSubview(statusView) + NSLayoutConstraint.activate([ + statusView.topAnchor.constraint(equalTo: statusBorder.topAnchor, constant: 12), + statusView.leadingAnchor.constraint(equalTo: statusBorder.leadingAnchor, constant: 12), + statusBorder.bottomAnchor.constraint(equalTo: statusView.bottomAnchor, constant: 12), + statusBorder.trailingAnchor.constraint(equalTo: statusView.trailingAnchor, constant: 12), ]) - container.addSubview(actionLabel) - actionLabel.constrain([ - actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), - actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), - container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4) - ]) + + statusStackView.addArrangedSubview(statusBorder) + + containerStackView.addArrangedSubview(statusStackView) statusView.contentWarningBlurContentImageView.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color statusView.isUserInteractionEnabled = false // remove item don't display - statusView.actionToolbarContainer.isHidden = true - statusView.avatarView.isHidden = true - statusView.usernameLabel.isHidden = true - - container.addSubview(statusBorder) - statusBorder.pin(top: 40, left: 63, bottom: 14, right: 14) - - container.addSubview(statusView) - statusView.pin(top: NotificationStatusTableViewCell.statusPadding.top, left: NotificationStatusTableViewCell.statusPadding.left, bottom: NotificationStatusTableViewCell.statusPadding.bottom, right: NotificationStatusTableViewCell.statusPadding.right) + statusView.actionToolbarContainer.removeFromStackView() + // it affect stackView's height + statusView.avatarView.removeFromStackView() + statusView.usernameLabel.removeFromStackView() + statusView.nameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) + statusView.activeTextLabel.setContentCompressionResistancePriority(.required, for: .vertical) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index cda4d75d7..1b7560a78 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -50,6 +50,11 @@ final class NotificationTableViewCell: UITableViewCell { return view }() + let avatarContainer: UIView = { + let view = UIView() + return view + }() + let actionLabel: UILabel = { let label = UILabel() label.textColor = Asset.Colors.Label.secondary.color @@ -86,40 +91,67 @@ final class NotificationTableViewCell: UITableViewCell { extension NotificationTableViewCell { func configure() { - let container = UIView() - container.backgroundColor = .clear - contentView.addSubview(container) - container.constrain([ - container.topAnchor.constraint(equalTo: contentView.topAnchor), - container.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - container.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - container.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + let containerStackView = UIStackView() + containerStackView.axis = .horizontal + containerStackView.alignment = .center + containerStackView.spacing = 4 + containerStackView.layoutMargins = UIEdgeInsets(top: 14, left: 0, bottom: 12, right: 0) + containerStackView.isLayoutMarginsRelativeArrangement = true + containerStackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + contentView.readableContentGuide.trailingAnchor.constraint(equalTo: containerStackView.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor), ]) - - container.addSubview(avatatImageView) - avatatImageView.pin(toSize: CGSize(width: 35, height: 35)) - avatatImageView.pin(top: 12, left: 0, bottom: nil, right: nil) - - container.addSubview(actionImageBackground) - actionImageBackground.pin(toSize: CGSize(width: 24 + NotificationTableViewCell.actionImageBorderWidth, height: 24 + NotificationTableViewCell.actionImageBorderWidth)) - actionImageBackground.pin(top: 33, left: 33, bottom: nil, right: nil) - - actionImageBackground.addSubview(actionImageView) - actionImageView.constrainToCenter() - container.addSubview(nameLabel) - nameLabel.constrain([ - nameLabel.topAnchor.constraint(equalTo: container.topAnchor, constant: 24), - container.bottomAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: 24), - nameLabel.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 61) + containerStackView.addArrangedSubview(avatarContainer) + avatarContainer.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + avatarContainer.heightAnchor.constraint(equalToConstant: 47).priority(.required - 1), + avatarContainer.widthAnchor.constraint(equalToConstant: 47).priority(.required - 1) ]) + + avatarContainer.addSubview(avatatImageView) + avatatImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + avatatImageView.heightAnchor.constraint(equalToConstant: 35).priority(.required - 1), + avatatImageView.widthAnchor.constraint(equalToConstant: 35).priority(.required - 1), + avatatImageView.topAnchor.constraint(equalTo: avatarContainer.topAnchor), + avatatImageView.leadingAnchor.constraint(equalTo: avatarContainer.leadingAnchor) + ]) + + avatarContainer.addSubview(actionImageBackground) + actionImageBackground.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + actionImageBackground.heightAnchor.constraint(equalToConstant: 24 + NotificationTableViewCell.actionImageBorderWidth).priority(.required - 1), + actionImageBackground.widthAnchor.constraint(equalToConstant: 24 + NotificationTableViewCell.actionImageBorderWidth).priority(.required - 1), + actionImageBackground.bottomAnchor.constraint(equalTo: avatarContainer.bottomAnchor), + actionImageBackground.trailingAnchor.constraint(equalTo: avatarContainer.trailingAnchor) + ]) + + avatarContainer.addSubview(actionImageView) + actionImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + actionImageView.centerXAnchor.constraint(equalTo: actionImageBackground.centerXAnchor), + actionImageView.centerYAnchor.constraint(equalTo: actionImageBackground.centerYAnchor) + ]) + + + let actionStackView = UIStackView() + actionStackView.axis = .horizontal + actionStackView.distribution = .fillProportionally + actionStackView.spacing = 4 + actionStackView.translatesAutoresizingMaskIntoConstraints = false - container.addSubview(actionLabel) - actionLabel.constrain([ - actionLabel.leadingAnchor.constraint(equalTo: nameLabel.trailingAnchor, constant: 4), - actionLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor), - container.trailingAnchor.constraint(greaterThanOrEqualTo: actionLabel.trailingAnchor, constant: 4) - ]) + nameLabel.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(nameLabel) + actionLabel.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(actionLabel) + nameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) + containerStackView.addArrangedSubview(actionStackView) + } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { From 780025a3ceee83cb5cbccf1d596a942982ae9100 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Fri, 16 Apr 2021 22:58:36 +0800 Subject: [PATCH 27/37] chore: use systemBackground color --- Mastodon/Generated/Assets.swift | 1 - .../Background/pure.colorset/Contents.json | 38 ------------------- .../NotificationViewController.swift | 2 +- .../NotificationStatusTableViewCell.swift | 13 ++++--- .../NotificationTableViewCell.swift | 18 +++------ .../Scene/Search/SearchViewController.swift | 2 +- 6 files changed, 15 insertions(+), 59 deletions(-) delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Background/pure.colorset/Contents.json diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index 0e0869f00..2ffc882bb 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -44,7 +44,6 @@ internal enum Asset { internal static let mediaTypeIndicotor = ColorAsset(name: "Colors/Background/media.type.indicotor") internal static let navigationBar = ColorAsset(name: "Colors/Background/navigationBar") internal static let onboardingBackground = ColorAsset(name: "Colors/Background/onboarding.background") - internal static let pure = ColorAsset(name: "Colors/Background/pure") internal static let secondaryGroupedSystemBackground = ColorAsset(name: "Colors/Background/secondary.grouped.system.background") internal static let secondarySystemBackground = ColorAsset(name: "Colors/Background/secondary.system.background") internal static let systemBackground = ColorAsset(name: "Colors/Background/system.background") diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Background/pure.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Background/pure.colorset/Contents.json deleted file mode 100644 index 82edd034b..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/Background/pure.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "1.000", - "green" : "1.000", - "red" : "1.000" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "30", - "green" : "28", - "red" : "28" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 3fb862590..7dccb423e 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -45,7 +45,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { extension NotificationViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = Asset.Colors.Background.pure.color + view.backgroundColor = Asset.Colors.Background.systemBackground.color navigationItem.titleView = segmentControl segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) view.addSubview(tableView) diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index 5d1a14be3..cdde9dbe0 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -26,7 +26,7 @@ final class NotificationStatusTableViewCell: UITableViewCell { let actionImageView: UIImageView = { let imageView = UIImageView() - imageView.tintColor = Asset.Colors.Background.pure.color + imageView.tintColor = Asset.Colors.Background.systemBackground.color return imageView }() @@ -36,8 +36,8 @@ final class NotificationStatusTableViewCell: UITableViewCell { view.layer.cornerCurve = .continuous view.clipsToBounds = true view.layer.borderWidth = NotificationStatusTableViewCell.actionImageBorderWidth - view.layer.borderColor = Asset.Colors.Background.pure.color.cgColor - view.tintColor = Asset.Colors.Background.pure.color + view.layer.borderColor = Asset.Colors.Background.systemBackground.color.cgColor + view.tintColor = Asset.Colors.Background.systemBackground.color return view }() @@ -157,7 +157,7 @@ extension NotificationStatusTableViewCell { let actionStackView = UIStackView() actionStackView.axis = .horizontal - actionStackView.distribution = .fillProportionally + actionStackView.distribution = .fill actionStackView.spacing = 4 actionStackView.translatesAutoresizingMaskIntoConstraints = false @@ -166,7 +166,8 @@ extension NotificationStatusTableViewCell { actionLabel.translatesAutoresizingMaskIntoConstraints = false actionStackView.addArrangedSubview(actionLabel) nameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) - + nameLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal) + actionLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) let statusStackView = UIStackView() statusStackView.axis = .vertical @@ -205,6 +206,6 @@ extension NotificationStatusTableViewCell { override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) statusBorder.layer.borderColor = Asset.Colors.Border.notification.color.cgColor - actionImageBackground.layer.borderColor = Asset.Colors.Background.pure.color.cgColor + actionImageBackground.layer.borderColor = Asset.Colors.Background.systemBackground.color.cgColor } } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift index 1b7560a78..60b43ac35 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationTableViewCell.swift @@ -35,7 +35,7 @@ final class NotificationTableViewCell: UITableViewCell { let actionImageView: UIImageView = { let imageView = UIImageView() - imageView.tintColor = Asset.Colors.Background.pure.color + imageView.tintColor = Asset.Colors.Background.systemBackground.color return imageView }() @@ -45,8 +45,8 @@ final class NotificationTableViewCell: UITableViewCell { view.layer.cornerCurve = .continuous view.clipsToBounds = true view.layer.borderWidth = NotificationTableViewCell.actionImageBorderWidth - view.layer.borderColor = Asset.Colors.Background.pure.color.cgColor - view.tintColor = Asset.Colors.Background.pure.color + view.layer.borderColor = Asset.Colors.Background.systemBackground.color.cgColor + view.tintColor = Asset.Colors.Background.systemBackground.color return view }() @@ -137,25 +137,19 @@ extension NotificationTableViewCell { actionImageView.centerXAnchor.constraint(equalTo: actionImageBackground.centerXAnchor), actionImageView.centerYAnchor.constraint(equalTo: actionImageBackground.centerYAnchor) ]) - - - let actionStackView = UIStackView() - actionStackView.axis = .horizontal - actionStackView.distribution = .fillProportionally - actionStackView.spacing = 4 - actionStackView.translatesAutoresizingMaskIntoConstraints = false nameLabel.translatesAutoresizingMaskIntoConstraints = false containerStackView.addArrangedSubview(nameLabel) actionLabel.translatesAutoresizingMaskIntoConstraints = false containerStackView.addArrangedSubview(actionLabel) nameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) - containerStackView.addArrangedSubview(actionStackView) + nameLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal) + actionLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - actionImageBackground.layer.borderColor = Asset.Colors.Background.pure.color.cgColor + actionImageBackground.layer.borderColor = Asset.Colors.Background.systemBackground.color.cgColor } } diff --git a/Mastodon/Scene/Search/SearchViewController.swift b/Mastodon/Scene/Search/SearchViewController.swift index 4fee226bf..710808b52 100644 --- a/Mastodon/Scene/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/SearchViewController.swift @@ -82,7 +82,7 @@ final class SearchViewController: UIViewController, NeedsDependency { // searching let searchingTableView: UITableView = { let tableView = UITableView() - tableView.backgroundColor = Asset.Colors.Background.pure.color + tableView.backgroundColor = Asset.Colors.Background.systemBackground.color tableView.rowHeight = UITableView.automaticDimension tableView.separatorStyle = .singleLine tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) From 9be8b95aeaecc4fb0b68b59a03ab2fc86763d07f Mon Sep 17 00:00:00 2001 From: ihugo Date: Sat, 17 Apr 2021 14:01:57 +0800 Subject: [PATCH 28/37] fix: use right privacyURL - remove some redundancy code --- CoreDataStack/Entity/SubscriptionAlerts.swift | 1 - Mastodon/Extension/UIButton.swift | 20 ++++--------------- .../Settings/SettingsViewController.swift | 7 +++---- .../Scene/Settings/SettingsViewModel.swift | 8 ++++++++ .../MastodonSDK/API/Mastodon+API+Push.swift | 6 +++--- 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/CoreDataStack/Entity/SubscriptionAlerts.swift b/CoreDataStack/Entity/SubscriptionAlerts.swift index c240a02a5..d1169104a 100644 --- a/CoreDataStack/Entity/SubscriptionAlerts.swift +++ b/CoreDataStack/Entity/SubscriptionAlerts.swift @@ -9,7 +9,6 @@ import Foundation import CoreData -@objc(SubscriptionAlerts) public final class SubscriptionAlerts: NSManagedObject { @NSManaged public var follow: NSNumber? @NSManaged public var favourite: NSNumber? diff --git a/Mastodon/Extension/UIButton.swift b/Mastodon/Extension/UIButton.swift index d4334baad..31043157a 100644 --- a/Mastodon/Extension/UIButton.swift +++ b/Mastodon/Extension/UIButton.swift @@ -44,22 +44,10 @@ extension UIButton { } extension UIButton { - // https://stackoverflow.com/questions/14523348/how-to-change-the-background-color-of-a-uibutton-while-its-highlighted - private func image(withColor color: UIColor) -> UIImage? { - let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0) - UIGraphicsBeginImageContext(rect.size) - let context = UIGraphicsGetCurrentContext() - - context?.setFillColor(color.cgColor) - context?.fill(rect) - - let image = UIGraphicsGetImageFromCurrentImageContext() - UIGraphicsEndImageContext() - - return image - } - func setBackgroundColor(_ color: UIColor, for state: UIControl.State) { - self.setBackgroundImage(image(withColor: color), for: state) + self.setBackgroundImage( + UIImage.placeholder(color: color), + for: state + ) } } diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 4bdc115b2..a9b1f0b82 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -311,8 +311,9 @@ extension SettingsViewController: UITableViewDelegate { switch item { case .boringZone: + guard let url = viewModel.privacyURL else { break } coordinator.present( - scene: .safari(url: URL(string: "https://mastodon.online/terms")!), + scene: .safari(url: url), from: self, transition: .safariPresent(animated: true, completion: nil) ) @@ -345,11 +346,9 @@ extension SettingsViewController { func updateTrigger(by who: String) { guard let setting = self.viewModel.setting.value else { return } - context.managedObjectContext.performChanges { + _ = context.managedObjectContext.performChanges { setting.update(triggerBy: who) } - .sink { (_) in - }.store(in: &disposeBag) } func updateAlert(title: String?, isOn: Bool) { diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index 9ffec7f8d..b61334f4a 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -70,6 +70,14 @@ class SettingsViewModel: NSObject, NeedsDependency { noOne: noOneSwitchItems] }() + lazy var privacyURL: URL? = { + guard let box = AppContext.shared.authenticationService.activeMastodonAuthenticationBox.value else { + return nil + } + + return Mastodon.API.privacyURL(domain: box.domain) + }() + struct Input { } diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift index 062b45ac2..df9168499 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Push.swift @@ -28,7 +28,7 @@ extension Mastodon.API.Subscriptions { /// - session: `URLSession` /// - domain: Mastodon instance domain. e.g. "example.com" /// - authorization: User token. Could be nil if status is public - /// - Returns: `AnyPublisher` contains `Poll` nested in the response + /// - Returns: `AnyPublisher` contains `Subscription` nested in the response public static func subscription( session: URLSession, domain: String, @@ -61,7 +61,7 @@ extension Mastodon.API.Subscriptions { /// - session: `URLSession` /// - domain: Mastodon instance domain. e.g. "example.com" /// - authorization: User token. Could be nil if status is public - /// - Returns: `AnyPublisher` contains `Poll` nested in the response + /// - Returns: `AnyPublisher` contains `Subscription` nested in the response public static func createSubscription( session: URLSession, domain: String, @@ -95,7 +95,7 @@ extension Mastodon.API.Subscriptions { /// - session: `URLSession` /// - domain: Mastodon instance domain. e.g. "example.com" /// - authorization: User token. Could be nil if status is public - /// - Returns: `AnyPublisher` contains `Poll` nested in the response + /// - Returns: `AnyPublisher` contains `Subscription` nested in the response public static func updateSubscription( session: URLSession, domain: String, From e42af11bf7afe784f9adfc7d1e7f7a51cd4f9a0b Mon Sep 17 00:00:00 2001 From: ihugo Date: Sat, 17 Apr 2021 14:15:55 +0800 Subject: [PATCH 29/37] chore: generate strings and assets --- Mastodon/Generated/Assets.swift | 6 ++ Mastodon/Generated/Strings.swift | 64 +++++++++++++++++++ ...meTimelineViewController+DebugAction.swift | 7 ++ 3 files changed, 77 insertions(+) diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index cd655e077..27c8391b4 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -80,6 +80,7 @@ internal enum Asset { internal static let invalid = ColorAsset(name: "Colors/TextField/invalid") internal static let valid = ColorAsset(name: "Colors/TextField/valid") } + internal static let battleshipGrey = ColorAsset(name: "Colors/battleshipGrey") internal static let brandBlue = ColorAsset(name: "Colors/brand.blue") internal static let danger = ColorAsset(name: "Colors/danger") internal static let disabled = ColorAsset(name: "Colors/disabled") @@ -120,6 +121,11 @@ internal enum Asset { internal static let mastodonLogoLarge = ImageAsset(name: "Scene/Welcome/mastodon.logo.large") } } + internal enum Settings { + internal static let appearanceAutomatic = ImageAsset(name: "Settings/appearance.automatic") + internal static let appearanceDark = ImageAsset(name: "Settings/appearance.dark") + internal static let appearanceLight = ImageAsset(name: "Settings/appearance.light") + } } // swiftlint:enable identifier_name line_length nesting type_body_length type_name diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index 6eed41a29..ddbd87617 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -35,6 +35,14 @@ internal enum L10n { /// Server Error internal static let title = L10n.tr("Localizable", "Common.Alerts.ServerError.Title") } + internal enum SignOut { + /// Sign Out + internal static let confirm = L10n.tr("Localizable", "Common.Alerts.SignOut.Confirm") + /// Are you sure you want to sign out? + internal static let message = L10n.tr("Localizable", "Common.Alerts.SignOut.Message") + /// Sign out + internal static let title = L10n.tr("Localizable", "Common.Alerts.SignOut.Title") + } internal enum SignUpFailure { /// Sign Up Failure internal static let title = L10n.tr("Localizable", "Common.Alerts.SignUpFailure.Title") @@ -591,6 +599,62 @@ internal enum L10n { internal static let confirm = L10n.tr("Localizable", "Scene.ServerRules.Button.Confirm") } } + internal enum Settings { + /// Settings + internal static let title = L10n.tr("Localizable", "Scene.Settings.Title") + internal enum Section { + internal enum Appearance { + /// Automatic + internal static let automatic = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Automatic") + /// Always Dark + internal static let dark = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Dark") + /// Always Light + internal static let light = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Light") + /// Appearance + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Title") + } + internal enum Boringzone { + /// Privacy Policy + internal static let privacy = L10n.tr("Localizable", "Scene.Settings.Section.Boringzone.Privacy") + /// Terms of Service + internal static let terms = L10n.tr("Localizable", "Scene.Settings.Section.Boringzone.Terms") + /// The Boring zone + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Boringzone.Title") + } + internal enum Notifications { + /// Reblogs my post + internal static let boosts = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Boosts") + /// Favorites my post + internal static let favorites = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Favorites") + /// Follows me + internal static let follows = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Follows") + /// Mentions me + internal static let mentions = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Mentions") + /// Notifications + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Title") + internal enum Trigger { + /// anyone + internal static let anyone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Anyone") + /// anyone I follow + internal static let follow = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follow") + /// a follower + internal static let follower = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follower") + /// no one + internal static let noone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Noone") + /// Notify me when + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Title") + } + } + internal enum Spicyzone { + /// Clear Media Cache + internal static let clear = L10n.tr("Localizable", "Scene.Settings.Section.Spicyzone.Clear") + /// Sign Out + internal static let signout = L10n.tr("Localizable", "Scene.Settings.Section.Spicyzone.Signout") + /// The spicy zone + internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Spicyzone.Title") + } + } + } internal enum Thread { /// Post internal static let backTitle = L10n.tr("Localizable", "Scene.Thread.BackTitle") diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index 401e4fc14..8bbf9436e 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -37,6 +37,10 @@ extension HomeTimelineViewController { guard let self = self else { return } self.showThreadAction(action) }, + UIAction(title: "Settings", image: UIImage(systemName: "gear"), attributes: []) { [weak self] action in + guard let self = self else { return } + self.showSettings(action) + }, UIAction(title: "Sign Out", image: UIImage(systemName: "escape"), attributes: .destructive) { [weak self] action in guard let self = self else { return } self.signOutAction(action) @@ -323,5 +327,8 @@ extension HomeTimelineViewController { coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) } + @objc private func showSettings(_ sender: UIAction) { + coordinator.present(scene: .settings, from: self, transition: .modal(animated: true, completion: nil)) + } } #endif From 8c7149af8991685549f5bac3137d9cf97b8a601f Mon Sep 17 00:00:00 2001 From: ihugo Date: Sun, 18 Apr 2021 02:02:08 +0800 Subject: [PATCH 30/37] fix: server-side data is inconsistent with local --- .../CoreData.xcdatamodel/contents | 11 +- CoreDataStack/Entity/Setting.swift | 14 ++- CoreDataStack/Entity/Subscription.swift | 5 +- CoreDataStack/Entity/SubscriptionAlerts.swift | 2 +- .../Settings/SettingsViewController.swift | 66 ++++++----- .../Scene/Settings/SettingsViewModel.swift | 93 ++++++++++------ .../APIService/APIService+Subscriptions.swift | 105 +++++++++++++++--- .../APIService+CoreData+Subscriptions.swift | 41 ++----- 8 files changed, 212 insertions(+), 125 deletions(-) diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents index 25579daa0..bf87198ec 100644 --- a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents +++ b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents @@ -155,13 +155,14 @@ - + + @@ -202,7 +203,7 @@ - + @@ -212,7 +213,7 @@ - + @@ -244,10 +245,10 @@ + - - + \ No newline at end of file diff --git a/CoreDataStack/Entity/Setting.swift b/CoreDataStack/Entity/Setting.swift index a4907f0ab..671f9bab3 100644 --- a/CoreDataStack/Entity/Setting.swift +++ b/CoreDataStack/Entity/Setting.swift @@ -8,11 +8,11 @@ import CoreData import Foundation -@objc(Setting) public final class Setting: NSManagedObject { @NSManaged public var appearance: String? @NSManaged public var triggerBy: String? @NSManaged public var domain: String? + @NSManaged public var userID: String? @NSManaged public private(set) var createdAt: Date @NSManaged public private(set) var updatedAt: Date @@ -40,6 +40,7 @@ public extension Setting { setting.appearance = property.appearance setting.triggerBy = property.triggerBy setting.domain = property.domain + setting.userID = property.userID return setting } @@ -61,11 +62,13 @@ public extension Setting { public let appearance: String public let triggerBy: String public let domain: String + public let userID: String - public init(appearance: String, triggerBy: String, domain: String) { + public init(appearance: String, triggerBy: String, domain: String, userID: String) { self.appearance = appearance self.triggerBy = triggerBy self.domain = domain + self.userID = userID } } } @@ -77,8 +80,11 @@ extension Setting: Managed { } extension Setting { - public static func predicate(domain: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(Setting.domain), domain) + public static func predicate(domain: String, userID: String) -> NSPredicate { + return NSPredicate(format: "%K == %@ AND %K == %@", + #keyPath(Setting.domain), domain, + #keyPath(Setting.userID), userID + ) } } diff --git a/CoreDataStack/Entity/Subscription.swift b/CoreDataStack/Entity/Subscription.swift index 7d7a74570..8ced945d9 100644 --- a/CoreDataStack/Entity/Subscription.swift +++ b/CoreDataStack/Entity/Subscription.swift @@ -9,7 +9,6 @@ import Foundation import CoreData -@objc(Subscription) public final class Subscription: NSManagedObject { @NSManaged public var id: String @NSManaged public var endpoint: String @@ -95,8 +94,8 @@ extension Subscription: Managed { extension Subscription { - public static func predicate(id: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(Subscription.id), id) + public static func predicate(type: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Subscription.type), type) } } diff --git a/CoreDataStack/Entity/SubscriptionAlerts.swift b/CoreDataStack/Entity/SubscriptionAlerts.swift index d1169104a..f5abf4955 100644 --- a/CoreDataStack/Entity/SubscriptionAlerts.swift +++ b/CoreDataStack/Entity/SubscriptionAlerts.swift @@ -20,7 +20,7 @@ public final class SubscriptionAlerts: NSManagedObject { @NSManaged public private(set) var updatedAt: Date // MARK: - relationships - @NSManaged public var pushSubscription: Subscription? + @NSManaged public var subscription: Subscription? } public extension SubscriptionAlerts { diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index a9b1f0b82..4615f92ab 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -46,7 +46,7 @@ class SettingsViewController: UIViewController, NeedsDependency { UIAction(title: noOne, image: UIImage(systemName: "nosign"), attributes: []) { [weak self] action in self?.updateTrigger(by: noOne) }, - ].reversed() + ] ) return menu } @@ -344,10 +344,15 @@ extension SettingsViewController: UITableViewDelegate { // Update setting into core data extension SettingsViewController { func updateTrigger(by who: String) { + guard self.viewModel.triggerBy != who else { return } guard let setting = self.viewModel.setting.value else { return } - _ = context.managedObjectContext.performChanges { - setting.update(triggerBy: who) + setting.update(triggerBy: who) + // trigger to call `subscription` API with POST method + // confirm the local data is correct even if request failed + // The asynchronous execution is to solve the problem of dropped frames for animations. + DispatchQueue.main.async { [weak self] in + self?.viewModel.setting.value = setting } } @@ -356,34 +361,35 @@ extension SettingsViewController { guard let settings = self.viewModel.setting.value else { return } guard let triggerBy = settings.triggerBy else { return } - guard let alerts = settings.subscription?.first(where: { (s) -> Bool in + if let alerts = settings.subscription?.first(where: { (s) -> Bool in return s.type == settings.triggerBy - })?.alert else { - return + })?.alert { + var alertValues = [Bool?]() + alertValues.append(alerts.favourite?.boolValue) + alertValues.append(alerts.follow?.boolValue) + alertValues.append(alerts.reblog?.boolValue) + alertValues.append(alerts.mention?.boolValue) + + // need to update `alerts` to make update API with correct parameter + switch title { + case L10n.Scene.Settings.Section.Notifications.favorites: + alertValues[0] = isOn + alerts.favourite = NSNumber(booleanLiteral: isOn) + case L10n.Scene.Settings.Section.Notifications.follows: + alertValues[1] = isOn + alerts.follow = NSNumber(booleanLiteral: isOn) + case L10n.Scene.Settings.Section.Notifications.boosts: + alertValues[2] = isOn + alerts.reblog = NSNumber(booleanLiteral: isOn) + case L10n.Scene.Settings.Section.Notifications.mentions: + alertValues[3] = isOn + alerts.mention = NSNumber(booleanLiteral: isOn) + default: break + } + self.viewModel.updateSubscriptionSubject.send((triggerBy: triggerBy, values: alertValues)) + } else if let alertValues = self.viewModel.notificationDefaultValue[triggerBy] { + self.viewModel.updateSubscriptionSubject.send((triggerBy: triggerBy, values: alertValues)) } - var alertValues = [Bool?]() - alertValues.append(alerts.favourite?.boolValue) - alertValues.append(alerts.follow?.boolValue) - alertValues.append(alerts.reblog?.boolValue) - alertValues.append(alerts.mention?.boolValue) - - // need to update `alerts` to make update API with correct parameter - switch title { - case L10n.Scene.Settings.Section.Notifications.favorites: - alertValues[0] = isOn - alerts.favourite = NSNumber(booleanLiteral: isOn) - case L10n.Scene.Settings.Section.Notifications.follows: - alertValues[1] = isOn - alerts.follow = NSNumber(booleanLiteral: isOn) - case L10n.Scene.Settings.Section.Notifications.boosts: - alertValues[2] = isOn - alerts.reblog = NSNumber(booleanLiteral: isOn) - case L10n.Scene.Settings.Section.Notifications.mentions: - alertValues[3] = isOn - alerts.mention = NSNumber(booleanLiteral: isOn) - default: break - } - self.viewModel.updateSubscriptionSubject.send((triggerBy: triggerBy, values: alertValues)) } } @@ -435,7 +441,7 @@ extension SettingsViewController { guard let setting: Setting? = { let domain = box.domain let request = Setting.sortedFetchRequest - request.predicate = Setting.predicate(domain: domain) + request.predicate = Setting.predicate(domain: domain, userID: box.userID) request.fetchLimit = 1 request.returnsObjectsAsFaults = false do { diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index b61334f4a..470617aeb 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -29,7 +29,7 @@ class SettingsViewModel: NSObject, NeedsDependency { if let box = self.context.authenticationService.activeMastodonAuthenticationBox.value { let domain = box.domain - fetchRequest.predicate = Setting.predicate(domain: domain) + fetchRequest.predicate = Setting.predicate(domain: domain, userID: box.userID) } fetchRequest.fetchLimit = 1 @@ -78,6 +78,9 @@ class SettingsViewModel: NSObject, NeedsDependency { return Mastodon.API.privacyURL(domain: box.domain) }() + /// to store who trigger the notification. + var triggerBy: String? + struct Input { } @@ -121,12 +124,14 @@ class SettingsViewModel: NSObject, NeedsDependency { follow: values[1], reblog: values[2], mention: values[3], - poll: nil) + poll: nil + ) self.context.apiService.changeSubscription( domain: domain, mastodonAuthenticationBox: activeMastodonAuthenticationBox, query: query, - triggerBy: triggerBy + triggerBy: triggerBy, + userID: activeMastodonAuthenticationBox.userID ) .sink { (_) in } receiveValue: { (_) in @@ -164,7 +169,8 @@ class SettingsViewModel: NSObject, NeedsDependency { domain: domain, mastodonAuthenticationBox: activeMastodonAuthenticationBox, query: query, - triggerBy: triggerBy + triggerBy: triggerBy, + userID: activeMastodonAuthenticationBox.userID ) .sink { (_) in } receiveValue: { (_) in @@ -178,13 +184,6 @@ class SettingsViewModel: NSObject, NeedsDependency { // request subsription data for updating or initialization requestSubscription() - - do { - try fetchResultsController.performFetch() - setting.value = fetchResultsController.fetchedObjects?.first - } catch { - assertionFailure(error.localizedDescription) - } return nil } @@ -213,12 +212,12 @@ class SettingsViewModel: NSObject, NeedsDependency { } else if let triggerBy = settings?.triggerBy, let values = self.notificationDefaultValue[triggerBy] { switches = values - self.createSubscriptionSubject.send((triggerBy: triggerBy, values: values)) } else { // fallback a default value let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone switches = self.notificationDefaultValue[anyone] } + let notifications = [L10n.Scene.Settings.Section.Notifications.favorites, L10n.Scene.Settings.Section.Notifications.follows, L10n.Scene.Settings.Section.Notifications.boosts, @@ -273,31 +272,61 @@ class SettingsViewModel: NSObject, NeedsDependency { } private func requestSubscription() { - // request subscription of notifications - typealias SubscriptionResponse = Mastodon.Response.Content - viewDidLoad.flatMap { [weak self] (_) -> AnyPublisher in - guard let self = self, - let activeMastodonAuthenticationBox = - self.context.authenticationService.activeMastodonAuthenticationBox.value else { - return Empty().eraseToAnyPublisher() + setting.sink { [weak self] (settings) in + guard let self = self else { return } + guard settings != nil else { return } + guard self.triggerBy != settings?.triggerBy else { return } + self.triggerBy = settings?.triggerBy + + var switches: [Bool?]? + var who: String? + if let alerts = settings?.subscription?.first(where: { (s) -> Bool in + return s.type == settings?.triggerBy + })?.alert { + var items = [Bool?]() + items.append(alerts.favourite?.boolValue) + items.append(alerts.follow?.boolValue) + items.append(alerts.reblog?.boolValue) + items.append(alerts.mention?.boolValue) + switches = items + who = settings?.triggerBy + } else if let triggerBy = settings?.triggerBy, + let values = self.notificationDefaultValue[triggerBy] { + switches = values + who = triggerBy + } else { + // fallback a default value + let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone + switches = self.notificationDefaultValue[anyone] + who = anyone } - let domain = activeMastodonAuthenticationBox.domain - return self.context.apiService.subscription( - domain: domain, - mastodonAuthenticationBox: activeMastodonAuthenticationBox) - } - .sink { [weak self] competion in - if case .failure(_) = competion { - // create a subscription when doesn't has one - let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone - if let values = self?.notificationDefaultValue[anyone] { - self?.createSubscriptionSubject.send((triggerBy: anyone, values: values)) - } + // should create a subscription whenever change trigger + if let values = switches, let triggerBy = who { + self.createSubscriptionSubject.send((triggerBy: triggerBy, values: values)) } - } receiveValue: { (subscription) in } .store(in: &disposeBag) + + guard let activeMastodonAuthenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { + return + } + let domain = activeMastodonAuthenticationBox.domain + let userId = activeMastodonAuthenticationBox.userID + + do { + try fetchResultsController.performFetch() + if nil == fetchResultsController.fetchedObjects?.first { + let anyone = L10n.Scene.Settings.Section.Notifications.Trigger.anyone + setting.value = self.context.apiService.createSettingIfNeed(domain: domain, + userId: userId, + triggerBy: anyone) + } else { + setting.value = fetchResultsController.fetchedObjects?.first + } + } catch { + assertionFailure(error.localizedDescription) + } } deinit { diff --git a/Mastodon/Service/APIService/APIService+Subscriptions.swift b/Mastodon/Service/APIService/APIService+Subscriptions.swift index d67284c7c..337ab26d2 100644 --- a/Mastodon/Service/APIService/APIService+Subscriptions.swift +++ b/Mastodon/Service/APIService/APIService+Subscriptions.swift @@ -5,44 +5,71 @@ // Created by ihugo on 2021/4/9. // +import Combine +import CoreData +import CoreDataStack import Foundation import MastodonSDK -import Combine extension APIService { func subscription( domain: String, + userID: String, mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox ) -> AnyPublisher, Error> { let authorization = mastodonAuthenticationBox.userAuthorization - + let findSettings: Setting? = { + let request = Setting.sortedFetchRequest + request.predicate = Setting.predicate(domain: domain, userID: userID) + request.fetchLimit = 1 + request.returnsObjectsAsFaults = false + do { + return try self.backgroundManagedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + }() + let triggerBy = findSettings?.triggerBy ?? "anyone" + let setting = self.createSettingIfNeed( + domain: domain, + userId: userID, + triggerBy: triggerBy + ) return Mastodon.API.Subscriptions.subscription( session: session, domain: domain, - authorization: authorization) - .flatMap { response -> AnyPublisher, Error> in - return self.backgroundManagedObjectContext.performChanges { - _ = APIService.CoreData.createOrMergeSubscription( - into: self.backgroundManagedObjectContext, - entity: response.value, - domain: domain) - } - .setFailureType(to: Error.self) - .map { _ in return response } - .eraseToAnyPublisher() - }.eraseToAnyPublisher() + authorization: authorization + ) + .flatMap { response -> AnyPublisher, Error> in + return self.backgroundManagedObjectContext.performChanges { + _ = APIService.CoreData.createOrMergeSubscription( + into: self.backgroundManagedObjectContext, + entity: response.value, + domain: domain, + triggerBy: triggerBy, + setting: setting) + } + .setFailureType(to: Error.self) + .map { _ in return response } + .eraseToAnyPublisher() + }.eraseToAnyPublisher() } func changeSubscription( domain: String, mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox, query: Mastodon.API.Subscriptions.CreateSubscriptionQuery, - triggerBy: String + triggerBy: String, + userID: String ) -> AnyPublisher, Error> { let authorization = mastodonAuthenticationBox.userAuthorization + let setting = self.createSettingIfNeed(domain: domain, + userId: userID, + triggerBy: triggerBy) return Mastodon.API.Subscriptions.createSubscription( session: session, domain: domain, @@ -55,7 +82,9 @@ extension APIService { into: self.backgroundManagedObjectContext, entity: response.value, domain: domain, - triggerBy: triggerBy) + triggerBy: triggerBy, + setting: setting + ) } .setFailureType(to: Error.self) .map { _ in return response } @@ -67,10 +96,15 @@ extension APIService { domain: String, mastodonAuthenticationBox: AuthenticationService.MastodonAuthenticationBox, query: Mastodon.API.Subscriptions.UpdateSubscriptionQuery, - triggerBy: String + triggerBy: String, + userID: String ) -> AnyPublisher, Error> { let authorization = mastodonAuthenticationBox.userAuthorization + let setting = self.createSettingIfNeed(domain: domain, + userId: userID, + triggerBy: triggerBy) + return Mastodon.API.Subscriptions.updateSubscription( session: session, domain: domain, @@ -83,12 +117,47 @@ extension APIService { into: self.backgroundManagedObjectContext, entity: response.value, domain: domain, - triggerBy: triggerBy) + triggerBy: triggerBy, + setting: setting + ) } .setFailureType(to: Error.self) .map { _ in return response } .eraseToAnyPublisher() }.eraseToAnyPublisher() } + + func createSettingIfNeed(domain: String, userId: String, triggerBy: String) -> Setting { + // create setting entity if possible + let oldSetting: Setting? = { + let request = Setting.sortedFetchRequest + request.predicate = Setting.predicate(domain: domain, userID: userId) + request.fetchLimit = 1 + request.returnsObjectsAsFaults = false + do { + return try backgroundManagedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + }() + var setting: Setting! + if let oldSetting = oldSetting { + setting = oldSetting + } else { + let property = Setting.Property( + appearance: "automatic", + triggerBy: triggerBy, + domain: domain, + userID: userId) + (setting, _) = APIService.CoreData.createOrMergeSetting( + into: backgroundManagedObjectContext, + domain: domain, + userID: userId, + property: property + ) + } + return setting + } } diff --git a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Subscriptions.swift b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Subscriptions.swift index 8dc189734..f5a4022ea 100644 --- a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Subscriptions.swift +++ b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Subscriptions.swift @@ -16,11 +16,12 @@ extension APIService.CoreData { static func createOrMergeSetting( into managedObjectContext: NSManagedObjectContext, domain: String, + userID: String, property: Setting.Property ) -> (Subscription: Setting, isCreated: Bool) { let oldSetting: Setting? = { let request = Setting.sortedFetchRequest - request.predicate = Setting.predicate(domain: property.domain) + request.predicate = Setting.predicate(domain: property.domain, userID: userID) request.fetchLimit = 1 request.returnsObjectsAsFaults = false do { @@ -45,38 +46,12 @@ extension APIService.CoreData { into managedObjectContext: NSManagedObjectContext, entity: Mastodon.Entity.Subscription, domain: String, - triggerBy: String? = nil + triggerBy: String, + setting: Setting ) -> (Subscription: Subscription, isCreated: Bool) { - // create setting entity if possible - let oldSetting: Setting? = { - let request = Setting.sortedFetchRequest - request.predicate = Setting.predicate(domain: domain) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - var setting: Setting! - if let oldSetting = oldSetting { - setting = oldSetting - } else { - let property = Setting.Property( - appearance: "automatic", - triggerBy: "anyone", - domain: domain) - (setting, _) = createOrMergeSetting( - into: managedObjectContext, - domain: domain, - property: property) - } - let oldSubscription: Subscription? = { let request = Subscription.sortedFetchRequest - request.predicate = Subscription.predicate(id: entity.id) + request.predicate = Subscription.predicate(type: triggerBy) request.fetchLimit = 1 request.returnsObjectsAsFaults = false do { @@ -91,7 +66,8 @@ extension APIService.CoreData { endpoint: entity.endpoint, id: entity.id, serverKey: entity.serverKey, - type: triggerBy ?? setting.triggerBy ?? "") + type: triggerBy + ) let alertEntity = entity.alerts let alert = SubscriptionAlerts.Property( favourite: alertEntity.favouriteNumber, @@ -105,7 +81,8 @@ extension APIService.CoreData { if nil == oldSubscription.alert { oldSubscription.alert = SubscriptionAlerts.insert( into: managedObjectContext, - property: alert) + property: alert + ) } else { oldSubscription.alert?.updateIfNeed(property: alert) } From 462fafe706090cfbd1a8526540c2e12e59e2d184 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Sun, 18 Apr 2021 22:00:19 +0800 Subject: [PATCH 31/37] chore: add navigation to ThreadScene --- .../NotificationViewController.swift | 38 +++++++++---------- .../NotificationViewModel+diffable.swift | 1 + 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 7dccb423e..68e69b4be 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -16,16 +16,16 @@ import UIKit final class NotificationViewController: UIViewController, NeedsDependency { weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } - + var disposeBag = Set() private(set) lazy var viewModel = NotificationViewModel(context: context) - + let segmentControl: UISegmentedControl = { let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything, L10n.Scene.Notification.Title.mentions]) control.selectedSegmentIndex = 0 return control }() - + let tableView: UITableView = { let tableView = ControlContainableTableView() tableView.rowHeight = UITableView.automaticDimension @@ -38,7 +38,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { tableView.estimatedRowHeight = UITableView.automaticDimension return tableView }() - + let refreshControl = UIRefreshControl() } @@ -55,10 +55,10 @@ extension NotificationViewController { tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) - + tableView.refreshControl = refreshControl refreshControl.addTarget(self, action: #selector(NotificationViewController.refreshControlValueChanged(_:)), for: .valueChanged) - + tableView.delegate = self viewModel.tableView = tableView viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self @@ -78,10 +78,10 @@ extension NotificationViewController { } .store(in: &disposeBag) } - + override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - + // needs trigger manually after onboarding dismiss setNeedsStatusBarAppearanceUpdate() } @@ -96,7 +96,7 @@ extension NotificationViewController { } } } - + override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) @@ -117,11 +117,11 @@ extension NotificationViewController { if sender.selectedSegmentIndex == 0 { viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) } else { - viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain,userID: userID, typeRaw: Mastodon.Entity.Notification.NotificationType.mention.rawValue) + viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID, typeRaw: Mastodon.Entity.Notification.NotificationType.mention.rawValue) } - viewModel.selectedIndex.value = NotificationViewModel.NotificationSegment.init(rawValue: sender.selectedSegmentIndex)! + viewModel.selectedIndex.value = NotificationViewModel.NotificationSegment(rawValue: sender.selectedSegmentIndex)! } - + @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { guard viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) else { sender.endRefreshing() @@ -134,24 +134,24 @@ extension NotificationViewController { extension NotificationViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: true) guard let diffableDataSource = viewModel.diffableDataSource else { return } guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } switch item { case .notification(let objectID): let notification = context.managedObjectContext.object(with: objectID) as! MastodonNotification - if notification.status != nil { - // TODO: goto status detail vc + if let status = notification.status { + let viewModel = ThreadViewModel(context: context, optionalStatus: status) + coordinator.present(scene: .thread(viewModel: viewModel), from: self, transition: .show) } else { let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) - DispatchQueue.main.async { - self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) - } + coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) } default: break } } - + func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { guard let diffableDataSource = viewModel.diffableDataSource else { return } guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } @@ -181,7 +181,7 @@ extension NotificationViewController: NotificationTableViewCellDelegate { self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) } } - + func parent() -> UIViewController { self } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index c65b5096b..5bd2d92dd 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -76,6 +76,7 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { diffableDataSource.apply(newSnapshot, animatingDifferences: false) self.isFetchingLatestNotification.value = false + tableView.reloadData() return } From 5ae2c446422fc788f8b59a50b56693cb0762e42d Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Mon, 19 Apr 2021 10:10:46 +0800 Subject: [PATCH 32/37] chore: remove useless code --- .../TableViewCell/NotificationStatusTableViewCell.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index cdde9dbe0..aae4c9e2f 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -196,11 +196,9 @@ extension NotificationStatusTableViewCell { statusView.isUserInteractionEnabled = false // remove item don't display statusView.actionToolbarContainer.removeFromStackView() - // it affect stackView's height + // it affect stackView's height,need remove statusView.avatarView.removeFromStackView() statusView.usernameLabel.removeFromStackView() - statusView.nameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) - statusView.activeTextLabel.setContentCompressionResistancePriority(.required, for: .vertical) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { From f6be51dd0fff8ba2b09b9f53da37235529e415b3 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Mon, 19 Apr 2021 11:41:50 +0800 Subject: [PATCH 33/37] chore: remove UIView+Contraint --- Mastodon.xcodeproj/project.pbxproj | 4 - Mastodon/Extension/UIView+Constraint.swift | 262 ------------------ .../NotificationViewController.swift | 3 +- ...hRecommendAccountsCollectionViewCell.swift | 77 +++-- ...earchRecommendTagsCollectionViewCell.swift | 59 +++- .../SearchViewController+Recommend.swift | 6 +- .../SearchViewController+Searching.swift | 31 ++- .../Scene/Search/SearchViewController.swift | 14 +- Mastodon/Scene/Search/SearchViewModel.swift | 4 +- .../SearchingTableViewCell.swift | 40 ++- .../SearchRecommendCollectionHeader.swift | 33 ++- 11 files changed, 191 insertions(+), 342 deletions(-) delete mode 100644 Mastodon/Extension/UIView+Constraint.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 427ffa0db..659d0d734 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -132,7 +132,6 @@ 2DF75BC725D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BC625D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift */; }; 2DFAD5272616F9D300F9EE7C /* SearchViewController+Searching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFAD5262616F9D300F9EE7C /* SearchViewController+Searching.swift */; }; 2DFAD5372617010500F9EE7C /* SearchingTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFAD5362617010500F9EE7C /* SearchingTableViewCell.swift */; }; - 2DFF41892614A4DC00F776A4 /* UIView+Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFF41882614A4DC00F776A4 /* UIView+Constraint.swift */; }; 5D0393902612D259007FE196 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D03938F2612D259007FE196 /* WebViewController.swift */; }; 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0393952612D266007FE196 /* WebViewModel.swift */; }; 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = 5D526FE125BE9AC400460CB9 /* MastodonSDK */; }; @@ -531,7 +530,6 @@ 2DF75BC625D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedObjectContextObjectsDidChange.swift; sourceTree = ""; }; 2DFAD5262616F9D300F9EE7C /* SearchViewController+Searching.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchViewController+Searching.swift"; sourceTree = ""; }; 2DFAD5362617010500F9EE7C /* SearchingTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchingTableViewCell.swift; sourceTree = ""; }; - 2DFF41882614A4DC00F776A4 /* UIView+Constraint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Constraint.swift"; sourceTree = ""; }; 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.debug.xcconfig"; sourceTree = ""; }; 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Mastodon_MastodonUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 452147B2903DF38070FE56A2 /* Pods_MastodonTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1646,7 +1644,6 @@ DB47229625F9EFAD00DA7F53 /* NSManagedObjectContext.swift */, 2D32EAB925CB9B0500C9ED86 /* UIView.swift */, 5DA732CB2629CEF500A92342 /* UIView+Remove.swift */, - 2DFF41882614A4DC00F776A4 /* UIView+Constraint.swift */, DB8AF55C25C138B7002E6C99 /* UIViewController.swift */, 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */, 2D3F9E0325DFA133004262D9 /* UITapGestureRecognizer.swift */, @@ -2476,7 +2473,6 @@ 2D7867192625B77500211898 /* NotificationItem.swift in Sources */, DB45FAB625CA5485005A8AC7 /* UIAlertController.swift in Sources */, DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */, - 2DFF41892614A4DC00F776A4 /* UIView+Constraint.swift in Sources */, 2D5A3D0325CF8742002347D6 /* ControlContainableScrollViews.swift in Sources */, DB98336B25C9420100AD9700 /* APIService+App.swift in Sources */, DBA0A11325FB3FC10079C110 /* ComposeToolbarView.swift in Sources */, diff --git a/Mastodon/Extension/UIView+Constraint.swift b/Mastodon/Extension/UIView+Constraint.swift deleted file mode 100644 index ded8846d4..000000000 --- a/Mastodon/Extension/UIView+Constraint.swift +++ /dev/null @@ -1,262 +0,0 @@ -// -// UIView+Constraint.swift -// Mastodon -// -// Created by sxiaojian on 2021/3/31. -// - -import UIKit - -enum Dimension { - case width - case height - - var layoutAttribute: NSLayoutConstraint.Attribute { - switch self { - case .width: - return .width - case .height: - return .height - } - } - -} - -extension UIView { - - func constrain(toSuperviewEdges: UIEdgeInsets?) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return} - translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - NSLayoutConstraint(item: self, - attribute: .leading, - relatedBy: .equal, - toItem: view, - attribute: .leading, - multiplier: 1.0, - constant: toSuperviewEdges?.left ?? 0.0), - NSLayoutConstraint(item: self, - attribute: .top, - relatedBy: .equal, - toItem: view, - attribute: .top, - multiplier: 1.0, - constant: toSuperviewEdges?.top ?? 0.0), - NSLayoutConstraint(item: view, - attribute: .trailing, - relatedBy: .equal, - toItem: self, - attribute: .trailing, - multiplier: 1.0, - constant: toSuperviewEdges?.right ?? 0.0), - NSLayoutConstraint(item: view, - attribute: .bottom, - relatedBy: .equal, - toItem: self, - attribute: .bottom, - multiplier: 1.0, - constant: toSuperviewEdges?.bottom ?? 0.0) - ]) - } - - func constrain(_ constraints: [NSLayoutConstraint?]) { - guard superview != nil else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate(constraints.compactMap { $0 }) - } - - func constraint(_ attribute: NSLayoutConstraint.Attribute, toView: UIView, constant: CGFloat?) -> NSLayoutConstraint? { - guard superview != nil else { assert(false, "Superview cannot be nil when adding contraints"); return nil} - translatesAutoresizingMaskIntoConstraints = false - return NSLayoutConstraint(item: self, attribute: attribute, relatedBy: .equal, toItem: toView, attribute: attribute, multiplier: 1.0, constant: constant ?? 0.0) - } - - func constraint(_ attribute: NSLayoutConstraint.Attribute, toView: UIView) -> NSLayoutConstraint? { - guard superview != nil else { assert(false, "Superview cannot be nil when adding contraints"); return nil} - translatesAutoresizingMaskIntoConstraints = false - return NSLayoutConstraint(item: self, attribute: attribute, relatedBy: .equal, toItem: toView, attribute: attribute, multiplier: 1.0, constant: 0.0) - } - - func constraint(_ dimension: Dimension, constant: CGFloat) -> NSLayoutConstraint? { - guard superview != nil else { assert(false, "Superview cannot be nil when adding contraints"); return nil } - translatesAutoresizingMaskIntoConstraints = false - return NSLayoutConstraint(item: self, - attribute: dimension.layoutAttribute, - relatedBy: .equal, - toItem: nil, - attribute: .notAnAttribute, - multiplier: 1.0, - constant: constant) - } - - func constrainTopCorners(sidePadding: CGFloat, topPadding: CGFloat, topLayoutGuide: UILayoutSupport) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.leading, toView: view, constant: sidePadding), - NSLayoutConstraint(item: self, attribute: .top, relatedBy: .equal, toItem: topLayoutGuide, attribute: .bottom, multiplier: 1.0, constant: topPadding), - constraint(.trailing, toView: view, constant: -sidePadding) - ]) - } - - func constrainTopCorners(sidePadding: CGFloat, topPadding: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.leading, toView: view, constant: sidePadding), - constraint(.top, toView: view, constant: topPadding), - constraint(.trailing, toView: view, constant: -sidePadding) - ]) - } - - func constrainTopCorners(height: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.leading, toView: view), - constraint(.top, toView: view), - constraint(.trailing, toView: view), - constraint(.height, constant: height) - ]) - } - - func constrainBottomCorners(sidePadding: CGFloat, bottomPadding: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.leading, toView: view, constant: sidePadding), - constraint(.bottom, toView: view, constant: -bottomPadding), - constraint(.trailing, toView: view, constant: -sidePadding) - ]) - } - - func constrainBottomCorners(height: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.leading, toView: view), - constraint(.bottom, toView: view), - constraint(.trailing, toView: view), - constraint(.height, constant: height) - ]) - } - - func constrainLeadingCorners() { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.top, toView: view), - constraint(.leading, toView: view), - constraint(.bottom, toView: view) - ]) - } - - func constrainTrailingCorners() { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.top, toView: view), - constraint(.trailing, toView: view), - constraint(.bottom, toView: view) - ]) - } - - func constrainToCenter() { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - constraint(.centerX, toView: view), - constraint(.centerY, toView: view) - ]) - } - - func pin(toSize: CGSize) { - guard superview != nil else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - widthAnchor.constraint(equalToConstant: toSize.width).priority(.required - 1), - heightAnchor.constraint(equalToConstant: toSize.height).priority(.required - 1) - ]) - } - - func pin(top: CGFloat?,left: CGFloat?,bottom: CGFloat?, right: CGFloat?) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - var constraints = [NSLayoutConstraint]() - if let topConstant = top { - constraints.append(topAnchor.constraint(equalTo: view.topAnchor, constant: topConstant)) - } - if let leftConstant = left { - constraints.append(leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: leftConstant)) - } - if let bottomConstant = bottom { - constraints.append(view.bottomAnchor.constraint(equalTo: bottomAnchor, constant: bottomConstant)) - } - if let rightConstant = right { - constraints.append(view.trailingAnchor.constraint(equalTo: trailingAnchor, constant: rightConstant)) - } - constrain(constraints) - - } - func pinTopLeft(padding: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: padding), - topAnchor.constraint(equalTo: view.topAnchor, constant: padding)]) - } - - func pinTopLeft(top: CGFloat, left: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: left), - topAnchor.constraint(equalTo: view.topAnchor, constant: top)]) - } - - func pinTopRight(padding: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - view.trailingAnchor.constraint(equalTo: trailingAnchor, constant: padding), - topAnchor.constraint(equalTo: view.topAnchor, constant: padding)]) - } - - func pinTopRight(top: CGFloat, right: CGFloat) { - guard let view = superview else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - view.trailingAnchor.constraint(equalTo: trailingAnchor, constant: right), - topAnchor.constraint(equalTo: view.topAnchor, constant: top)]) - } - - func pinTopLeft(toView: UIView, topPadding: CGFloat) { - guard superview != nil else { assert(false, "Superview cannot be nil when adding contraints"); return } - translatesAutoresizingMaskIntoConstraints = false - constrain([ - leadingAnchor.constraint(equalTo: toView.leadingAnchor), - topAnchor.constraint(equalTo: toView.bottomAnchor, constant: topPadding)]) - } - - /// Cross-fades between two views by animating their alpha then setting one or the other hidden. - /// - parameters: - /// - lhs: left view - /// - rhs: right view - /// - toRight: fade to the right view if true, fade to the left view if false - /// - duration: animation duration - /// - static func crossfade(_ lhs: UIView, _ rhs: UIView, toRight: Bool, duration: TimeInterval) { - lhs.alpha = toRight ? 1.0 : 0.0 - rhs.alpha = toRight ? 0.0 : 1.0 - lhs.isHidden = false - rhs.isHidden = false - - UIView.animate(withDuration: duration, animations: { - lhs.alpha = toRight ? 0.0 : 1.0 - rhs.alpha = toRight ? 1.0 : 0.0 - }, completion: { _ in - lhs.isHidden = toRight - rhs.isHidden = !toRight - }) - } -} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 68e69b4be..90d72afa5 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -48,8 +48,9 @@ extension NotificationViewController { view.backgroundColor = Asset.Colors.Background.systemBackground.color navigationItem.titleView = segmentControl segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) + tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - tableView.constrain([ + NSLayoutConstraint.activate([ tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), diff --git a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift index f45124671..fdb1af562 100644 --- a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift +++ b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift @@ -104,43 +104,60 @@ extension SearchRecommendAccountsCollectionViewCell { layer.cornerCurve = .continuous clipsToBounds = false applyShadow(color: Asset.Colors.Shadow.searchCard.color, alpha: 0.1, x: 0, y: 3, blur: 12, spread: 0) + + headerImageView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(headerImageView) - headerImageView.pin(top: 16, left: 0, bottom: 0, right: 0) + NSLayoutConstraint.activate([ + headerImageView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), + headerImageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + headerImageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + headerImageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + ]) + let containerStackView = UIStackView() + containerStackView.axis = .vertical + containerStackView.distribution = .fill + containerStackView.alignment = .center + containerStackView.spacing = 6 + containerStackView.layoutMargins = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) + containerStackView.isLayoutMarginsRelativeArrangement = true + containerStackView.translatesAutoresizingMaskIntoConstraints = false + + contentView.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + ]) + + avatarImageView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(avatarImageView) - avatarImageView.pin(toSize: CGSize(width: 88, height: 88)) - avatarImageView.constrain([ - avatarImageView.constraint(.top, toView: contentView), - avatarImageView.constraint(.centerX, toView: contentView) + NSLayoutConstraint.activate([ + avatarImageView.widthAnchor.constraint(equalToConstant: 88), + avatarImageView.heightAnchor.constraint(equalToConstant: 88) ]) + containerStackView.addArrangedSubview(avatarImageView) + containerStackView.setCustomSpacing(20, after: avatarImageView) + displayNameLabel.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(displayNameLabel) + containerStackView.setCustomSpacing(0, after: displayNameLabel) - contentView.addSubview(displayNameLabel) - displayNameLabel.constrain([ - displayNameLabel.constraint(.top, toView: contentView, constant: 108), - displayNameLabel.constraint(.leading, toView: contentView), - displayNameLabel.constraint(.trailing, toView: contentView), - displayNameLabel.constraint(.centerX, toView: contentView) - ]) + acctLabel.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(acctLabel) + containerStackView.setCustomSpacing(7, after: acctLabel) - contentView.addSubview(acctLabel) - acctLabel.constrain([ - acctLabel.constraint(.top, toView: contentView, constant: 132), - acctLabel.constraint(.leading, toView: contentView), - acctLabel.constraint(.trailing, toView: contentView), - acctLabel.constraint(.centerX, toView: contentView) - ]) - - contentView.addSubview(followButton) - followButton.pin(toSize: CGSize(width: 76, height: 24)) - followButton.constrain([ - followButton.constraint(.top, toView: contentView, constant: 159), - followButton.constraint(.centerX, toView: contentView) + followButton.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(followButton) + NSLayoutConstraint.activate([ + followButton.widthAnchor.constraint(equalToConstant: 76), + followButton.heightAnchor.constraint(equalToConstant: 24) ]) + containerStackView.addArrangedSubview(followButton) } func config(with mastodonUser: MastodonUser) { displayNameLabel.text = mastodonUser.displayName.isEmpty ? mastodonUser.username : mastodonUser.displayName - acctLabel.text = mastodonUser.acct + acctLabel.text = "@" + mastodonUser.acct avatarImageView.af.setImage( withURL: URL(string: mastodonUser.avatar)!, placeholderImage: UIImage.placeholder(color: .systemFill), @@ -153,7 +170,13 @@ extension SearchRecommendAccountsCollectionViewCell { ) { [weak self] _ in guard let self = self else { return } self.headerImageView.addSubview(self.visualEffectView) - self.visualEffectView.pin(top: 0, left: 0, bottom: 0, right: 0) + self.visualEffectView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + self.visualEffectView.topAnchor.constraint(equalTo: self.headerImageView.topAnchor), + self.visualEffectView.leadingAnchor.constraint(equalTo: self.headerImageView.leadingAnchor), + self.visualEffectView.trailingAnchor.constraint(equalTo: self.headerImageView.trailingAnchor), + self.visualEffectView.bottomAnchor.constraint(equalTo: self.headerImageView.bottomAnchor) + ]) } delegate?.configFollowButton(with: mastodonUser, followButton: followButton) followButton.publisher(for: .touchUpInside) diff --git a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift index d00cb0504..81167ee6e 100644 --- a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift +++ b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift @@ -12,7 +12,6 @@ import UIKit class SearchRecommendTagsCollectionViewCell: UICollectionViewCell { let backgroundImageView: UIImageView = { let imageView = UIImageView() - imageView.translatesAutoresizingMaskIntoConstraints = false return imageView }() @@ -20,7 +19,6 @@ class SearchRecommendTagsCollectionViewCell: UICollectionViewCell { let label = UILabel() label.textColor = .white label.font = .systemFont(ofSize: 20, weight: .semibold) - label.translatesAutoresizingMaskIntoConstraints = false label.lineBreakMode = .byTruncatingTail return label }() @@ -29,7 +27,6 @@ class SearchRecommendTagsCollectionViewCell: UICollectionViewCell { let label = UILabel() label.textColor = .white label.font = .preferredFont(forTextStyle: .body) - label.translatesAutoresizingMaskIntoConstraints = false return label }() @@ -38,7 +35,6 @@ class SearchRecommendTagsCollectionViewCell: UICollectionViewCell { let image = UIImage(systemName: "flame.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 20, weight: .semibold))!.withRenderingMode(.alwaysTemplate) imageView.image = image imageView.tintColor = .white - imageView.translatesAutoresizingMaskIntoConstraints = false return imageView }() @@ -74,17 +70,58 @@ extension SearchRecommendTagsCollectionViewCell { layer.borderColor = Asset.Colors.Border.searchCard.color.cgColor applyShadow(color: Asset.Colors.Shadow.searchCard.color, alpha: 0.1, x: 0, y: 3, blur: 12, spread: 0) + backgroundImageView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(backgroundImageView) - backgroundImageView.constrain(toSuperviewEdges: nil) + NSLayoutConstraint.activate([ + backgroundImageView.topAnchor.constraint(equalTo: contentView.topAnchor), + backgroundImageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + backgroundImageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + backgroundImageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + ]) - contentView.addSubview(hashtagTitleLabel) - hashtagTitleLabel.pin(top: 16, left: 16, bottom: nil, right: 42) - contentView.addSubview(peopleLabel) - peopleLabel.pinTopLeft(top: 46, left: 16) + let containerStackView = UIStackView() + containerStackView.axis = .vertical + containerStackView.distribution = .fill + containerStackView.spacing = 6 + containerStackView.layoutMargins = UIEdgeInsets(top: 16, left: 16, bottom: 0, right: 16) + containerStackView.isLayoutMarginsRelativeArrangement = true + containerStackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + ]) - contentView.addSubview(flameIconView) - flameIconView.pinTopRight(padding: 16) + + let horizontalStackView = UIStackView() + horizontalStackView.axis = .horizontal + horizontalStackView.translatesAutoresizingMaskIntoConstraints = false + horizontalStackView.distribution = .fill + + hashtagTitleLabel.translatesAutoresizingMaskIntoConstraints = false + hashtagTitleLabel.setContentHuggingPriority(.defaultLow - 1, for: .horizontal) + horizontalStackView.addArrangedSubview(hashtagTitleLabel) + horizontalStackView.setContentHuggingPriority(.required - 1, for: .vertical) + + flameIconView.translatesAutoresizingMaskIntoConstraints = false + horizontalStackView.addArrangedSubview(flameIconView) + + + containerStackView.addArrangedSubview(horizontalStackView) + + let peopleHorizontalStackView = UIStackView() + peopleHorizontalStackView.axis = .horizontal + peopleHorizontalStackView.translatesAutoresizingMaskIntoConstraints = false + peopleHorizontalStackView.distribution = .fill + peopleHorizontalStackView.alignment = .top + peopleLabel.translatesAutoresizingMaskIntoConstraints = false + peopleLabel.setContentHuggingPriority(.defaultLow - 1, for: .vertical) + peopleHorizontalStackView.addArrangedSubview(peopleLabel) + + containerStackView.addArrangedSubview(peopleHorizontalStackView) } func config(with tag: Mastodon.Entity.Tag) { diff --git a/Mastodon/Scene/Search/SearchViewController+Recommend.swift b/Mastodon/Scene/Search/SearchViewController+Recommend.swift index e941fa841..f394f09f1 100644 --- a/Mastodon/Scene/Search/SearchViewController+Recommend.swift +++ b/Mastodon/Scene/Search/SearchViewController+Recommend.swift @@ -23,8 +23,9 @@ extension SearchViewController { hashtagCollectionView.register(SearchRecommendTagsCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: SearchRecommendTagsCollectionViewCell.self)) hashtagCollectionView.delegate = self + hashtagCollectionView.translatesAutoresizingMaskIntoConstraints = false stackView.addArrangedSubview(hashtagCollectionView) - hashtagCollectionView.constrain([ + NSLayoutConstraint.activate([ hashtagCollectionView.frameLayoutGuide.heightAnchor.constraint(equalToConstant: 130) ]) } @@ -39,8 +40,9 @@ extension SearchViewController { accountsCollectionView.register(SearchRecommendAccountsCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: SearchRecommendAccountsCollectionViewCell.self)) accountsCollectionView.delegate = self + accountsCollectionView.translatesAutoresizingMaskIntoConstraints = false stackView.addArrangedSubview(accountsCollectionView) - accountsCollectionView.constrain([ + NSLayoutConstraint.activate([ accountsCollectionView.frameLayoutGuide.heightAnchor.constraint(equalToConstant: 202) ]) } diff --git a/Mastodon/Scene/Search/SearchViewController+Searching.swift b/Mastodon/Scene/Search/SearchViewController+Searching.swift index 86a27e03d..8eaf36326 100644 --- a/Mastodon/Scene/Search/SearchViewController+Searching.swift +++ b/Mastodon/Scene/Search/SearchViewController+Searching.swift @@ -19,7 +19,8 @@ extension SearchViewController { searchingTableView.register(SearchingTableViewCell.self, forCellReuseIdentifier: String(describing: SearchingTableViewCell.self)) searchingTableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) view.addSubview(searchingTableView) - searchingTableView.constrain([ + searchingTableView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ searchingTableView.frameLayoutGuide.topAnchor.constraint(equalTo: searchBar.bottomAnchor), searchingTableView.frameLayoutGuide.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor), searchingTableView.frameLayoutGuide.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor), @@ -50,18 +51,23 @@ extension SearchViewController { } func setupSearchHeader() { - searchHeader.addSubview(recentSearchesLabel) - recentSearchesLabel.constrain([ - recentSearchesLabel.constraint(.leading, toView: searchHeader, constant: 16), - recentSearchesLabel.constraint(.centerY, toView: searchHeader) + let containerStackView = UIStackView() + containerStackView.axis = .horizontal + containerStackView.distribution = .fill + containerStackView.translatesAutoresizingMaskIntoConstraints = false + containerStackView.layoutMargins = UIEdgeInsets(top: 0, left: 12, bottom: 0, right: 12) + containerStackView.isLayoutMarginsRelativeArrangement = true + searchHeader.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: searchHeader.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: searchHeader.leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: searchHeader.trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: searchHeader.bottomAnchor) ]) - - searchHeader.addSubview(clearSearchHistoryButton) - recentSearchesLabel.constrain([ - searchHeader.trailingAnchor.constraint(equalTo: clearSearchHistoryButton.trailingAnchor, constant: 16), - clearSearchHistoryButton.constraint(.centerY, toView: searchHeader) - ]) - + recentSearchesLabel.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(recentSearchesLabel) + clearSearchHistoryButton.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(clearSearchHistoryButton) clearSearchHistoryButton.addTarget(self, action: #selector(SearchViewController.clearAction(_:)), for: .touchUpInside) } } @@ -84,6 +90,7 @@ extension SearchViewController: UITableViewDelegate { } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: true) guard let diffableDataSource = viewModel.searchResultDiffableDataSource else { return } guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } viewModel.searchResultItemDidSelected(item: item, from: self) diff --git a/Mastodon/Scene/Search/SearchViewController.swift b/Mastodon/Scene/Search/SearchViewController.swift index 710808b52..770fb1da7 100644 --- a/Mastodon/Scene/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/SearchViewController.swift @@ -135,14 +135,16 @@ extension SearchViewController { func setupSearchBar() { searchBar.delegate = self view.addSubview(searchBar) - searchBar.constrain([ + searchBar.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ searchBar.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), searchBar.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor), searchBar.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor), ]) - view.addSubview(statusBar) - statusBar.constrain([ + statusBar.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(statusBar) + NSLayoutConstraint.activate([ statusBar.topAnchor.constraint(equalTo: view.topAnchor), statusBar.leadingAnchor.constraint(equalTo: view.leadingAnchor), statusBar.trailingAnchor.constraint(equalTo: view.trailingAnchor), @@ -151,8 +153,9 @@ extension SearchViewController { } func setupScrollView() { + scrollView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(scrollView) - scrollView.constrain([ + NSLayoutConstraint.activate([ scrollView.frameLayoutGuide.topAnchor.constraint(equalTo: searchBar.bottomAnchor), scrollView.frameLayoutGuide.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor), scrollView.frameLayoutGuide.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor), @@ -160,8 +163,9 @@ extension SearchViewController { scrollView.contentLayoutGuide.widthAnchor.constraint(equalTo: view.widthAnchor), ]) + stackView.translatesAutoresizingMaskIntoConstraints = false scrollView.addSubview(stackView) - stackView.constrain([ + NSLayoutConstraint.activate([ stackView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor), stackView.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor), stackView.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor), diff --git a/Mastodon/Scene/Search/SearchViewModel.swift b/Mastodon/Scene/Search/SearchViewModel.swift index 1d87629ba..27c322c88 100644 --- a/Mastodon/Scene/Search/SearchViewModel.swift +++ b/Mastodon/Scene/Search/SearchViewModel.swift @@ -237,10 +237,10 @@ final class SearchViewModel: NSObject { .sink { completion in switch completion { case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: recommendHashTags request fail: %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: recommendAccount request fail: %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) promise(.failure(error)) case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: recommendHashTags request success", (#file as NSString).lastPathComponent, #line, #function) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: recommendAccount request success", (#file as NSString).lastPathComponent, #line, #function) promise(.success(())) } } receiveValue: { [weak self] accounts in diff --git a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift index 5a258d8a5..9339e6f2e 100644 --- a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift +++ b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift @@ -55,19 +55,39 @@ final class SearchingTableViewCell: UITableViewCell { extension SearchingTableViewCell { private func configure() { backgroundColor = .clear - selectionStyle = .none - contentView.addSubview(_imageView) - _imageView.pin(toSize: CGSize(width: 42, height: 42)) - _imageView.constrain([ - _imageView.constraint(.leading, toView: contentView, constant: 21), - _imageView.constraint(.centerY, toView: contentView) + + let containerStackView = UIStackView() + containerStackView.axis = .horizontal + containerStackView.distribution = .fill + containerStackView.spacing = 12 + containerStackView.layoutMargins = UIEdgeInsets(top: 12, left: 21, bottom: 12, right: 12) + containerStackView.isLayoutMarginsRelativeArrangement = true + containerStackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) ]) - contentView.addSubview(_titleLabel) - _titleLabel.pin(top: 12, left: 75, bottom: nil, right: 0) + _imageView.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(_imageView) + NSLayoutConstraint.activate([ + _imageView.widthAnchor.constraint(equalToConstant: 42), + _imageView.heightAnchor.constraint(equalToConstant: 42), + ]) - contentView.addSubview(_subTitleLabel) - _subTitleLabel.pin(top: 34, left: 75, bottom: nil, right: 0) + let textStackView = UIStackView() + textStackView.axis = .vertical + textStackView.distribution = .fill + textStackView.translatesAutoresizingMaskIntoConstraints = false + _titleLabel.translatesAutoresizingMaskIntoConstraints = false + textStackView.addArrangedSubview(_titleLabel) + _subTitleLabel.translatesAutoresizingMaskIntoConstraints = false + textStackView.addArrangedSubview(_subTitleLabel) + + containerStackView.addArrangedSubview(textStackView) } func config(with account: Mastodon.Entity.Account) { diff --git a/Mastodon/Scene/Search/View/SearchRecommendCollectionHeader.swift b/Mastodon/Scene/Search/View/SearchRecommendCollectionHeader.swift index bc5bd7663..3db8c2800 100644 --- a/Mastodon/Scene/Search/View/SearchRecommendCollectionHeader.swift +++ b/Mastodon/Scene/Search/View/SearchRecommendCollectionHeader.swift @@ -47,14 +47,35 @@ extension SearchRecommendCollectionHeader { private func configure() { backgroundColor = .clear translatesAutoresizingMaskIntoConstraints = false - addSubview(titleLabel) - titleLabel.pinTopLeft(top: 31, left: 16) - addSubview(descriptionLabel) - descriptionLabel.constrain(toSuperviewEdges: UIEdgeInsets(top: 60, left: 16, bottom: 16, right: 16)) + let containerStackView = UIStackView() + containerStackView.axis = .vertical + containerStackView.layoutMargins = UIEdgeInsets(top: 31, left: 16, bottom: 16, right: 16) + containerStackView.isLayoutMarginsRelativeArrangement = true + containerStackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), + containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor) + ]) - addSubview(seeAllButton) - seeAllButton.pinTopRight(top: 26, right: 16) + let horizontalStackView = UIStackView() + horizontalStackView.axis = .horizontal + horizontalStackView.alignment = .center + horizontalStackView.translatesAutoresizingMaskIntoConstraints = false + horizontalStackView.distribution = .fill + titleLabel.translatesAutoresizingMaskIntoConstraints = false + titleLabel.setContentHuggingPriority(.defaultLow - 1, for: .horizontal) + horizontalStackView.addArrangedSubview(titleLabel) + seeAllButton.translatesAutoresizingMaskIntoConstraints = false + horizontalStackView.addArrangedSubview(seeAllButton) + + containerStackView.addArrangedSubview(horizontalStackView) + descriptionLabel.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(descriptionLabel) + } } From c814065edb9583f55a56d668dd9be329d16049c0 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Mon, 19 Apr 2021 12:39:16 +0800 Subject: [PATCH 34/37] fix: Scroll view has ambiguous scrollable content height and ViewDebug warning --- .../SearchViewController+Searching.swift | 20 +++++++------------ .../SearchingTableViewCell.swift | 1 + 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/Mastodon/Scene/Search/SearchViewController+Searching.swift b/Mastodon/Scene/Search/SearchViewController+Searching.swift index 8eaf36326..0602ac200 100644 --- a/Mastodon/Scene/Search/SearchViewController+Searching.swift +++ b/Mastodon/Scene/Search/SearchViewController+Searching.swift @@ -15,17 +15,18 @@ import UIKit extension SearchViewController { func setupSearchingTableView() { - searchingTableView.delegate = self searchingTableView.register(SearchingTableViewCell.self, forCellReuseIdentifier: String(describing: SearchingTableViewCell.self)) searchingTableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) + searchingTableView.estimatedRowHeight = 66 + searchingTableView.rowHeight = 66 view.addSubview(searchingTableView) + searchingTableView.delegate = self searchingTableView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ - searchingTableView.frameLayoutGuide.topAnchor.constraint(equalTo: searchBar.bottomAnchor), - searchingTableView.frameLayoutGuide.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor), - searchingTableView.frameLayoutGuide.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor), - searchingTableView.frameLayoutGuide.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor), - searchingTableView.contentLayoutGuide.widthAnchor.constraint(equalTo: view.widthAnchor) + searchingTableView.topAnchor.constraint(equalTo: searchBar.bottomAnchor), + searchingTableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor), + searchingTableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor), + searchingTableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor), ]) searchingTableView.tableFooterView = UIView() viewModel.isSearching @@ -81,13 +82,6 @@ extension SearchViewController { // MARK: - UITableViewDelegate extension SearchViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - 66 - } - - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - 66 - } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) diff --git a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift index 9339e6f2e..a3a7b58ac 100644 --- a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift +++ b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift @@ -86,6 +86,7 @@ extension SearchingTableViewCell { textStackView.addArrangedSubview(_titleLabel) _subTitleLabel.translatesAutoresizingMaskIntoConstraints = false textStackView.addArrangedSubview(_subTitleLabel) + _subTitleLabel.setContentHuggingPriority(.defaultLow - 1, for: .vertical) containerStackView.addArrangedSubview(textStackView) } From bb03c10ef6a3a3486bba33db7c5ff550293a0b51 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Mon, 19 Apr 2021 17:00:51 +0800 Subject: [PATCH 35/37] chore: apply review suggestions --- Mastodon.xcodeproj/project.pbxproj | 4 + .../Section/NotificationSection.swift | 62 ++++++--------- .../Mastodon+Entity+Notification+Type.swift | 75 +++++++++++++++++++ .../NotificationViewController.swift | 6 +- ...hRecommendAccountsCollectionViewCell.swift | 10 ++- ...earchRecommendTagsCollectionViewCell.swift | 13 +--- 6 files changed, 112 insertions(+), 58 deletions(-) create mode 100644 Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 659d0d734..6c6369835 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -120,6 +120,7 @@ 2DA7D04425CA52B200804E11 /* TimelineLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D04325CA52B200804E11 /* TimelineLoaderTableViewCell.swift */; }; 2DA7D04A25CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D04925CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift */; }; 2DA7D05725CA693F00804E11 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D05625CA693F00804E11 /* Application.swift */; }; + 2DB72C8C262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB72C8B262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift */; }; 2DCB73FD2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DCB73FC2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift */; }; 2DE0FAC12615F04D00CDF649 /* RecommendHashTagSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DE0FAC02615F04D00CDF649 /* RecommendHashTagSection.swift */; }; 2DE0FAC82615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DE0FAC72615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift */; }; @@ -518,6 +519,7 @@ 2DA7D04925CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineBottomLoaderTableViewCell.swift; sourceTree = ""; }; 2DA7D05025CA545E00804E11 /* LoadMoreConfigurableTableViewContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadMoreConfigurableTableViewContainer.swift; sourceTree = ""; }; 2DA7D05625CA693F00804E11 /* Application.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = ""; }; + 2DB72C8B262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Notification+Type.swift"; sourceTree = ""; }; 2DCB73FC2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendCollectionHeader.swift; sourceTree = ""; }; 2DE0FAC02615F04D00CDF649 /* RecommendHashTagSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendHashTagSection.swift; sourceTree = ""; }; 2DE0FAC72615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendAccountsCollectionViewCell.swift; sourceTree = ""; }; @@ -1450,6 +1452,7 @@ 5DDDF1982617447F00311060 /* Mastodon+Entity+Tag.swift */, 5DDDF1A82617489F00311060 /* Mastodon+Entity+History.swift */, 2D650FAA25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift */, + 2DB72C8B262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift */, ); path = MastodonSDK; sourceTree = ""; @@ -2455,6 +2458,7 @@ DB938F0326240EA300E5B6C1 /* CachedThreadViewModel.swift in Sources */, 2D650FAB25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift in Sources */, 2D24E12D2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift in Sources */, + 2DB72C8C262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift in Sources */, DB118A8C25E4BFB500FAB162 /* HighlightDimmableButton.swift in Sources */, DBAE3FA92617106E004B8251 /* MastodonMetricFormatter.swift in Sources */, 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */, diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index e7c96139e..81732c608 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -33,39 +33,15 @@ extension NotificationSection { case .notification(let objectID): let notification = managedObjectContext.object(with: objectID) as! MastodonNotification - let type = Mastodon.Entity.Notification.NotificationType(rawValue: notification.typeRaw) - + guard let type = Mastodon.Entity.Notification.NotificationType(rawValue: notification.typeRaw) else { + assertionFailure() + return nil + } let timeText = notification.createAt.shortTimeAgoSinceNow - var actionText: String - var actionImageName: String - var color: UIColor - switch type { - case .follow: - actionText = L10n.Scene.Notification.Action.follow - actionImageName = "person.crop.circle.badge.checkmark" - color = Asset.Colors.brandBlue.color - case .favourite: - actionText = L10n.Scene.Notification.Action.favourite - actionImageName = "star.fill" - color = Asset.Colors.Notification.favourite.color - case .reblog: - actionText = L10n.Scene.Notification.Action.reblog - actionImageName = "arrow.2.squarepath" - color = Asset.Colors.Notification.reblog.color - case .mention: - actionText = L10n.Scene.Notification.Action.mention - actionImageName = "at" - color = Asset.Colors.Notification.mention.color - case .poll: - actionText = L10n.Scene.Notification.Action.poll - actionImageName = "list.bullet" - color = Asset.Colors.brandBlue.color - default: - actionText = "" - actionImageName = "" - color = .clear - } + let actionText = type.actionText + let actionImageName = type.actionImageName + let color = type.color if let status = notification.status { let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell @@ -87,11 +63,13 @@ extension NotificationSection { cell.actionImageBackground.backgroundColor = color cell.actionLabel.text = actionText + " · " + timeText cell.nameLabel.text = notification.account.displayName.isEmpty ? notification.account.username : notification.account.displayName - cell.avatatImageView.af.setImage( - withURL: URL(string: notification.account.avatar)!, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) + if let url = notification.account.avatarImageURL() { + cell.avatatImageView.af.setImage( + withURL: url, + placeholderImage: UIImage.placeholder(color: .systemFill), + imageTransition: .crossDissolve(0.2) + ) + } cell.avatatImageView.gesture().sink { [weak cell] _ in cell?.delegate?.userAvatarDidPressed(notification: notification) } @@ -113,11 +91,13 @@ extension NotificationSection { cell.actionImageBackground.backgroundColor = color cell.actionLabel.text = actionText + " · " + timeText cell.nameLabel.text = notification.account.displayName.isEmpty ? notification.account.username : notification.account.displayName - cell.avatatImageView.af.setImage( - withURL: URL(string: notification.account.avatar)!, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) + if let url = notification.account.avatarImageURL() { + cell.avatatImageView.af.setImage( + withURL: url, + placeholderImage: UIImage.placeholder(color: .systemFill), + imageTransition: .crossDissolve(0.2) + ) + } cell.avatatImageView.gesture().sink { [weak cell] _ in cell?.delegate?.userAvatarDidPressed(notification: notification) } diff --git a/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift new file mode 100644 index 000000000..77a7b412e --- /dev/null +++ b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift @@ -0,0 +1,75 @@ +// +// Mastodon+Entity+Notification+Type.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/19. +// + +import Foundation +import MastodonSDK +import UIKit + +extension Mastodon.Entity.Notification.NotificationType { + public var color: UIColor { + get { + var color: UIColor + switch self { + case .follow: + color = Asset.Colors.brandBlue.color + case .favourite: + color = Asset.Colors.Notification.favourite.color + case .reblog: + color = Asset.Colors.Notification.reblog.color + case .mention: + color = Asset.Colors.Notification.mention.color + case .poll: + color = Asset.Colors.brandBlue.color + default: + color = .clear + } + return color + } + } + + public var actionText: String { + get { + var actionText: String + switch self { + case .follow: + actionText = L10n.Scene.Notification.Action.follow + case .favourite: + actionText = L10n.Scene.Notification.Action.favourite + case .reblog: + actionText = L10n.Scene.Notification.Action.reblog + case .mention: + actionText = L10n.Scene.Notification.Action.mention + case .poll: + actionText = L10n.Scene.Notification.Action.poll + default: + actionText = "" + } + return actionText + } + } + + public var actionImageName: String { + get { + var actionImageName: String + switch self { + case .follow: + actionImageName = "person.crop.circle.badge.checkmark" + case .favourite: + actionImageName = "star.fill" + case .reblog: + actionImageName = "arrow.2.squarepath" + case .mention: + actionImageName = "at" + case .poll: + actionImageName = "list.bullet" + default: + actionImageName = "" + } + return actionImageName + } + } +} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 90d72afa5..dd04118db 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -22,7 +22,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { let segmentControl: UISegmentedControl = { let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything, L10n.Scene.Notification.Title.mentions]) - control.selectedSegmentIndex = 0 + control.selectedSegmentIndex = NotificationViewModel.NotificationSegment.EveryThing.rawValue return control }() @@ -45,7 +45,7 @@ final class NotificationViewController: UIViewController, NeedsDependency { extension NotificationViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = Asset.Colors.Background.systemBackground.color + view.backgroundColor = Asset.Colors.Background.secondarySystemBackground.color navigationItem.titleView = segmentControl segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) tableView.translatesAutoresizingMaskIntoConstraints = false @@ -115,7 +115,7 @@ extension NotificationViewController { guard let domain = viewModel.activeMastodonAuthenticationBox.value?.domain, let userID = viewModel.activeMastodonAuthenticationBox.value?.userID else { return } - if sender.selectedSegmentIndex == 0 { + if sender.selectedSegmentIndex == NotificationViewModel.NotificationSegment.EveryThing.rawValue { viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) } else { viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID, typeRaw: Mastodon.Entity.Notification.NotificationType.mention.rawValue) diff --git a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift index fdb1af562..9d6bbedc5 100644 --- a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift +++ b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift @@ -62,6 +62,7 @@ class SearchRecommendAccountsCollectionViewCell: UICollectionViewCell { let followButton: HighlightDimmableButton = { let button = HighlightDimmableButton(type: .custom) + button.setInsets(forContentPadding: UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16), imageTitlePadding: 0) button.setTitleColor(.white, for: .normal) button.setTitle(L10n.Scene.Search.Recommend.Accounts.follow, for: .normal) button.titleLabel?.font = .systemFont(ofSize: 14, weight: .semibold) @@ -97,7 +98,10 @@ extension SearchRecommendAccountsCollectionViewCell { headerImageView.layer.borderColor = Asset.Colors.Border.searchCard.color.cgColor applyShadow(color: Asset.Colors.Shadow.searchCard.color, alpha: 0.1, x: 0, y: 3, blur: 12, spread: 0) } - + override open func layoutSubviews() { + super.layoutSubviews() + followButton.layer.cornerRadius = followButton.frame.height/2 + } private func configure() { headerImageView.backgroundColor = Asset.Colors.brandBlue.color layer.cornerRadius = 10 @@ -149,8 +153,8 @@ extension SearchRecommendAccountsCollectionViewCell { followButton.translatesAutoresizingMaskIntoConstraints = false containerStackView.addArrangedSubview(followButton) NSLayoutConstraint.activate([ - followButton.widthAnchor.constraint(equalToConstant: 76), - followButton.heightAnchor.constraint(equalToConstant: 24) + followButton.widthAnchor.constraint(greaterThanOrEqualToConstant: 76), + followButton.heightAnchor.constraint(greaterThanOrEqualToConstant: 24) ]) containerStackView.addArrangedSubview(followButton) } diff --git a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift index 81167ee6e..abcd9d08d 100644 --- a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift +++ b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift @@ -91,8 +91,7 @@ extension SearchRecommendTagsCollectionViewCell { NSLayoutConstraint.activate([ containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) ]) @@ -111,17 +110,9 @@ extension SearchRecommendTagsCollectionViewCell { containerStackView.addArrangedSubview(horizontalStackView) - - let peopleHorizontalStackView = UIStackView() - peopleHorizontalStackView.axis = .horizontal - peopleHorizontalStackView.translatesAutoresizingMaskIntoConstraints = false - peopleHorizontalStackView.distribution = .fill - peopleHorizontalStackView.alignment = .top peopleLabel.translatesAutoresizingMaskIntoConstraints = false peopleLabel.setContentHuggingPriority(.defaultLow - 1, for: .vertical) - peopleHorizontalStackView.addArrangedSubview(peopleLabel) - - containerStackView.addArrangedSubview(peopleHorizontalStackView) + containerStackView.addArrangedSubview(peopleLabel) } func config(with tag: Mastodon.Entity.Tag) { From da19f8f6418f96145ddd1479e06f821b64766ec3 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Mon, 19 Apr 2021 18:06:02 +0800 Subject: [PATCH 36/37] chore: remove Redundant codes --- .../Section/NotificationSection.swift | 353 +----------------- .../Diffiable/Section/StatusSection.swift | 35 +- .../NotificationViewController.swift | 24 ++ .../NotificationStatusTableViewCell.swift | 2 +- .../TableviewCell/StatusTableViewCell.swift | 2 +- .../ViewModel/AudioContainerViewModel.swift | 4 +- 6 files changed, 57 insertions(+), 363 deletions(-) diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 81732c608..5ccab431c 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -47,7 +47,7 @@ extension NotificationSection { let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell cell.delegate = delegate let frame = CGRect(x: 0, y: 0, width: tableView.readableContentGuide.layoutFrame.width - NotificationStatusTableViewCell.statusPadding.left - NotificationStatusTableViewCell.statusPadding.right, height: tableView.readableContentGuide.layoutFrame.height) - NotificationSection.configure(cell: cell, + StatusSection.configure(cell: cell, dependency: dependency, readableLayoutFrame: frame, timestampUpdatePublisher: timestampUpdatePublisher, @@ -116,354 +116,3 @@ extension NotificationSection { } } -extension NotificationSection { - static func configure( - cell: NotificationStatusTableViewCell, - dependency: NeedsDependency, - readableLayoutFrame: CGRect?, - timestampUpdatePublisher: AnyPublisher, - status: Status, - requestUserID: String, - statusItemAttribute: Item.StatusAttribute - ) { - // setup attribute - statusItemAttribute.setupForStatus(status: status) - - // set header - NotificationSection.configureHeader(cell: cell, status: status) - ManagedObjectObserver.observe(object: status) - .receive(on: DispatchQueue.main) - .sink { _ in - // do nothing - } receiveValue: { change in - guard case .update(let object) = change.changeType, - let newStatus = object as? Status else { return } - NotificationSection.configureHeader(cell: cell, status: newStatus) - } - .store(in: &cell.disposeBag) - - // set name username - cell.statusView.nameLabel.text = { - let author = (status.reblog ?? status).author - return author.displayName.isEmpty ? author.username : author.displayName - }() - cell.statusView.usernameLabel.text = "@" + (status.reblog ?? status).author.acct - // set avatar - - cell.statusView.avatarButton.isHidden = false - cell.statusView.avatarStackedContainerButton.isHidden = true - cell.statusView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: status.author.avatarImageURL())) - - // set text - cell.statusView.activeTextLabel.configure(content: (status.reblog ?? status).content) - - // set status text content warning - let isStatusTextSensitive = statusItemAttribute.isStatusTextSensitive ?? false - let spoilerText = (status.reblog ?? status).spoilerText ?? "" - cell.statusView.isStatusTextSensitive = isStatusTextSensitive - cell.statusView.updateContentWarningDisplay(isHidden: !isStatusTextSensitive) - cell.statusView.contentWarningTitle.text = { - if spoilerText.isEmpty { - return L10n.Common.Controls.Status.statusContentWarning - } else { - return L10n.Common.Controls.Status.statusContentWarning + ": \(spoilerText)" - } - }() - - // prepare media attachments - let mediaAttachments = Array((status.reblog ?? status).mediaAttachments ?? []).sorted { $0.index.compare($1.index) == .orderedAscending } - - // set image - let mosiacImageViewModel = MosaicImageViewModel(mediaAttachments: mediaAttachments) - let imageViewMaxSize: CGSize = { - let maxWidth: CGFloat = { - // use timelinePostView width as container width - // that width follows readable width and keep constant width after rotate - let containerFrame = readableLayoutFrame ?? cell.statusView.frame - var containerWidth = containerFrame.width - containerWidth -= 10 - containerWidth -= StatusView.avatarImageSize.width - return containerWidth - }() - let scale: CGFloat = { - switch mosiacImageViewModel.metas.count { - case 1: return 1.3 - default: return 0.7 - } - }() - return CGSize(width: maxWidth, height: maxWidth * scale) - }() - if mosiacImageViewModel.metas.count == 1 { - let meta = mosiacImageViewModel.metas[0] - let imageView = cell.statusView.statusMosaicImageViewContainer.setupImageView(aspectRatio: meta.size, maxSize: imageViewMaxSize) - imageView.af.setImage( - withURL: meta.url, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) - } else { - let imageViews = cell.statusView.statusMosaicImageViewContainer.setupImageViews(count: mosiacImageViewModel.metas.count, maxHeight: imageViewMaxSize.height) - for (i, imageView) in imageViews.enumerated() { - let meta = mosiacImageViewModel.metas[i] - imageView.af.setImage( - withURL: meta.url, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) - } - } - cell.statusView.statusMosaicImageViewContainer.isHidden = mosiacImageViewModel.metas.isEmpty - let isStatusSensitive = statusItemAttribute.isStatusSensitive ?? false - cell.statusView.statusMosaicImageViewContainer.contentWarningOverlayView.blurVisualEffectView.effect = isStatusSensitive ? ContentWarningOverlayView.blurVisualEffect : nil - cell.statusView.statusMosaicImageViewContainer.contentWarningOverlayView.vibrancyVisualEffectView.alpha = isStatusSensitive ? 1.0 : 0.0 - cell.statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isUserInteractionEnabled = isStatusSensitive - - // set audio - if let _ = mediaAttachments.filter({ $0.type == .audio }).first { - cell.statusView.audioView.isHidden = false - cell.statusView.audioView.playButton.isSelected = false - cell.statusView.audioView.slider.isEnabled = false - cell.statusView.audioView.slider.setValue(0, animated: false) - } else { - cell.statusView.audioView.isHidden = true - } - - // set GIF & video - let playerViewMaxSize: CGSize = { - let maxWidth: CGFloat = { - // use statusView width as container width - // that width follows readable width and keep constant width after rotate - let containerFrame = readableLayoutFrame ?? cell.statusView.frame - return containerFrame.width - }() - let scale: CGFloat = 1.3 - return CGSize(width: maxWidth, height: maxWidth * scale) - }() - - cell.statusView.playerContainerView.contentWarningOverlayView.blurVisualEffectView.effect = isStatusSensitive ? ContentWarningOverlayView.blurVisualEffect : nil - cell.statusView.playerContainerView.contentWarningOverlayView.vibrancyVisualEffectView.alpha = isStatusSensitive ? 1.0 : 0.0 - cell.statusView.playerContainerView.contentWarningOverlayView.isUserInteractionEnabled = isStatusSensitive - - if let videoAttachment = mediaAttachments.filter({ $0.type == .gifv || $0.type == .video }).first, - let videoPlayerViewModel = dependency.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: videoAttachment) - { - let parent = cell.delegate?.parent() - let playerContainerView = cell.statusView.playerContainerView - let playerViewController = playerContainerView.setupPlayer( - aspectRatio: videoPlayerViewModel.videoSize, - maxSize: playerViewMaxSize, - parent: parent - ) - playerViewController.player = videoPlayerViewModel.player - playerViewController.showsPlaybackControls = videoPlayerViewModel.videoKind != .gif - playerContainerView.setMediaKind(kind: videoPlayerViewModel.videoKind) - if videoPlayerViewModel.videoKind == .gif { - playerContainerView.setMediaIndicator(isHidden: false) - } else { - videoPlayerViewModel.timeControlStatus.sink { timeControlStatus in - UIView.animate(withDuration: 0.33) { - switch timeControlStatus { - case .playing: - playerContainerView.setMediaIndicator(isHidden: true) - case .paused, .waitingToPlayAtSpecifiedRate: - playerContainerView.setMediaIndicator(isHidden: false) - @unknown default: - assertionFailure() - } - } - } - .store(in: &cell.disposeBag) - } - playerContainerView.isHidden = false - - } else { - cell.statusView.playerContainerView.playerViewController.player?.pause() - cell.statusView.playerContainerView.playerViewController.player = nil - } - // set poll - let poll = (status.reblog ?? status).poll - NotificationSection.configurePoll( - cell: cell, - poll: poll, - requestUserID: requestUserID, - updateProgressAnimated: false, - timestampUpdatePublisher: timestampUpdatePublisher - ) - if let poll = poll { - ManagedObjectObserver.observe(object: poll) - .sink { _ in - // do nothing - } receiveValue: { change in - guard case .update(let object) = change.changeType, - let newPoll = object as? Poll else { return } - NotificationSection.configurePoll( - cell: cell, - poll: newPoll, - requestUserID: requestUserID, - updateProgressAnimated: true, - timestampUpdatePublisher: timestampUpdatePublisher - ) - } - .store(in: &cell.disposeBag) - } - - // set date - let createdAt = (status.reblog ?? status).createdAt - cell.statusView.dateLabel.text = createdAt.shortTimeAgoSinceNow - timestampUpdatePublisher - .sink { _ in - cell.statusView.dateLabel.text = createdAt.shortTimeAgoSinceNow - } - .store(in: &cell.disposeBag) - } - - static func configureHeader( - cell: NotificationStatusTableViewCell, - status: Status - ) { - if status.reblog != nil { - cell.statusView.headerContainerStackView.isHidden = false - cell.statusView.headerIconLabel.attributedText = StatusView.iconAttributedString(image: StatusView.reblogIconImage) - cell.statusView.headerInfoLabel.text = { - let author = status.author - let name = author.displayName.isEmpty ? author.username : author.displayName - return L10n.Common.Controls.Status.userReblogged(name) - }() - } else if let replyTo = status.replyTo { - cell.statusView.headerContainerStackView.isHidden = false - cell.statusView.headerIconLabel.attributedText = StatusView.iconAttributedString(image: StatusView.replyIconImage) - cell.statusView.headerInfoLabel.text = { - let author = replyTo.author - let name = author.displayName.isEmpty ? author.username : author.displayName - return L10n.Common.Controls.Status.userRepliedTo(name) - }() - } else { - cell.statusView.headerContainerStackView.isHidden = true - } - } - - static func configurePoll( - cell: NotificationStatusTableViewCell, - poll: Poll?, - requestUserID: String, - updateProgressAnimated: Bool, - timestampUpdatePublisher: AnyPublisher - ) { - guard let poll = poll, - let managedObjectContext = poll.managedObjectContext - else { - cell.statusView.pollTableView.isHidden = true - cell.statusView.pollStatusStackView.isHidden = true - cell.statusView.pollVoteButton.isHidden = true - return - } - - cell.statusView.pollTableView.isHidden = false - cell.statusView.pollStatusStackView.isHidden = false - cell.statusView.pollVoteCountLabel.text = { - if poll.multiple { - let count = poll.votersCount?.intValue ?? 0 - if count > 1 { - return L10n.Common.Controls.Status.Poll.VoterCount.single(count) - } else { - return L10n.Common.Controls.Status.Poll.VoterCount.multiple(count) - } - } else { - let count = poll.votesCount.intValue - if count > 1 { - return L10n.Common.Controls.Status.Poll.VoteCount.single(count) - } else { - return L10n.Common.Controls.Status.Poll.VoteCount.multiple(count) - } - } - }() - if poll.expired { - cell.pollCountdownSubscription = nil - cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.closed - } else if let expiresAt = poll.expiresAt { - cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.timeLeft(expiresAt.shortTimeAgoSinceNow) - cell.pollCountdownSubscription = timestampUpdatePublisher - .sink { _ in - cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.timeLeft(expiresAt.shortTimeAgoSinceNow) - } - } else { - // assertionFailure() - cell.pollCountdownSubscription = nil - cell.statusView.pollCountdownLabel.text = "-" - } - - cell.statusView.pollTableView.allowsSelection = !poll.expired - - let votedOptions = poll.options.filter { option in - (option.votedBy ?? Set()).map(\.id).contains(requestUserID) - } - let didVotedLocal = !votedOptions.isEmpty - let didVotedRemote = (poll.votedBy ?? Set()).map(\.id).contains(requestUserID) - cell.statusView.pollVoteButton.isEnabled = didVotedLocal - cell.statusView.pollVoteButton.isHidden = !poll.multiple ? true : (didVotedRemote || poll.expired) - - cell.statusView.pollTableViewDataSource = PollSection.tableViewDiffableDataSource( - for: cell.statusView.pollTableView, - managedObjectContext: managedObjectContext - ) - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - - let pollItems = poll.options - .sorted(by: { $0.index.intValue < $1.index.intValue }) - .map { option -> PollItem in - let attribute: PollItem.Attribute = { - let selectState: PollItem.Attribute.SelectState = { - // check didVotedRemote later to make the local change possible - if !votedOptions.isEmpty { - return votedOptions.contains(option) ? .on : .off - } else if poll.expired { - return .none - } else if didVotedRemote, votedOptions.isEmpty { - return .none - } else { - return .off - } - }() - let voteState: PollItem.Attribute.VoteState = { - var needsReveal: Bool - if poll.expired { - needsReveal = true - } else if didVotedRemote { - needsReveal = true - } else { - needsReveal = false - } - guard needsReveal else { return .hidden } - let percentage: Double = { - guard poll.votesCount.intValue > 0 else { return 0.0 } - return Double(option.votesCount?.intValue ?? 0) / Double(poll.votesCount.intValue) - }() - let voted = votedOptions.isEmpty ? true : votedOptions.contains(option) - return .reveal(voted: voted, percentage: percentage, animated: updateProgressAnimated) - }() - return PollItem.Attribute(selectState: selectState, voteState: voteState) - }() - let option = PollItem.opion(objectID: option.objectID, attribute: attribute) - return option - } - snapshot.appendItems(pollItems, toSection: .main) - cell.statusView.pollTableViewDataSource?.apply(snapshot, animatingDifferences: false, completion: nil) - } - - static func configureEmptyStateHeader( - cell: TimelineHeaderTableViewCell, - attribute: Item.EmptyStateHeaderAttribute - ) { - cell.timelineHeaderView.iconImageView.image = attribute.reason.iconImage - cell.timelineHeaderView.messageLabel.text = attribute.reason.message - } -} - -extension NotificationSection { - private static func formattedNumberTitleForActionButton(_ number: Int?) -> String { - guard let number = number, number > 0 else { return "" } - return String(number) - } -} diff --git a/Mastodon/Diffiable/Section/StatusSection.swift b/Mastodon/Diffiable/Section/StatusSection.swift index 36d4853a8..e01276e8b 100644 --- a/Mastodon/Diffiable/Section/StatusSection.swift +++ b/Mastodon/Diffiable/Section/StatusSection.swift @@ -10,6 +10,12 @@ import CoreData import CoreDataStack import os.log import UIKit +import AVKit + +protocol StatusCell : DisposeBagCollectable { + var statusView: StatusView { get } + var pollCountdownSubscription: AnyCancellable? { get set } +} enum StatusSection: Equatable, Hashable { case main @@ -127,7 +133,7 @@ extension StatusSection { extension StatusSection { static func configure( - cell: StatusTableViewCell, + cell: StatusCell, dependency: NeedsDependency, readableLayoutFrame: CGRect?, timestampUpdatePublisher: AnyPublisher, @@ -260,14 +266,27 @@ extension StatusSection { if let videoAttachment = mediaAttachments.filter({ $0.type == .gifv || $0.type == .video }).first, let videoPlayerViewModel = dependency.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: videoAttachment) { - let parent = cell.delegate?.parent() + var parent: UIViewController? + var playerViewControllerDelegate: AVPlayerViewControllerDelegate? = nil + switch cell { + case is StatusTableViewCell: + let statusTableViewCell = cell as! StatusTableViewCell + parent = statusTableViewCell.delegate?.parent() + playerViewControllerDelegate = statusTableViewCell.delegate?.playerViewControllerDelegate + case is NotificationTableViewCell: + let notificationTableViewCell = cell as! NotificationTableViewCell + parent = notificationTableViewCell.delegate?.parent() + default: + parent = nil + assertionFailure("unknown cell") + } let playerContainerView = cell.statusView.playerContainerView let playerViewController = playerContainerView.setupPlayer( aspectRatio: videoPlayerViewModel.videoSize, maxSize: playerViewMaxSize, parent: parent ) - playerViewController.delegate = cell.delegate?.playerViewControllerDelegate + playerViewController.delegate = playerViewControllerDelegate playerViewController.player = videoPlayerViewModel.player playerViewController.showsPlaybackControls = videoPlayerViewModel.videoKind != .gif playerContainerView.setMediaKind(kind: videoPlayerViewModel.videoKind) @@ -325,7 +344,9 @@ extension StatusSection { StatusSection.configureActionToolBar(cell: cell, status: status, requestUserID: requestUserID) // separator line - cell.separatorLine.isHidden = statusItemAttribute.isSeparatorLineHidden + if let statusTableViewCell = cell as? StatusTableViewCell { + statusTableViewCell.separatorLine.isHidden = statusItemAttribute.isSeparatorLineHidden + } // set date let createdAt = (status.reblog ?? status).createdAt @@ -388,7 +409,7 @@ extension StatusSection { static func configureHeader( - cell: StatusTableViewCell, + cell: StatusCell, status: Status ) { if status.reblog != nil { @@ -416,7 +437,7 @@ extension StatusSection { } static func configureActionToolBar( - cell: StatusTableViewCell, + cell: StatusCell, status: Status, requestUserID: String ) { @@ -447,7 +468,7 @@ extension StatusSection { } static func configurePoll( - cell: StatusTableViewCell, + cell: StatusCell, poll: Poll?, requestUserID: String, updateProgressAnimated: Bool, diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index dd04118db..ad9a7472e 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -131,9 +131,33 @@ extension NotificationViewController { } } +extension NotificationViewController { + func cacheTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } + let key = item.hashValue + let frame = cell.frame + viewModel.cellFrameCache.setObject(NSValue(cgRect: frame), forKey: NSNumber(value: key)) + } + + func handleTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { + guard let diffableDataSource = viewModel.diffableDataSource else { return UITableView.automaticDimension } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return UITableView.automaticDimension } + guard let frame = viewModel.cellFrameCache.object(forKey: NSNumber(value: item.hashValue))?.cgRectValue else { + if case .bottomLoader = item { + return TimelineLoaderTableViewCell.cellHeight + } else { + return UITableView.automaticDimension + } + } + + return ceil(frame.height) + } +} // MARK: - UITableViewDelegate extension NotificationViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) guard let diffableDataSource = viewModel.diffableDataSource else { return } diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift index aae4c9e2f..871adcaeb 100644 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift @@ -9,7 +9,7 @@ import Combine import Foundation import UIKit -final class NotificationStatusTableViewCell: UITableViewCell { +final class NotificationStatusTableViewCell: UITableViewCell, StatusCell { static let actionImageBorderWidth: CGFloat = 2 static let statusPadding = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24) var disposeBag = Set() diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift index afa044b67..88004afa2 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift @@ -46,7 +46,7 @@ extension StatusTableViewCellDelegate { } } -final class StatusTableViewCell: UITableViewCell { +final class StatusTableViewCell: UITableViewCell, StatusCell { static let bottomPaddingHeight: CGFloat = 10 diff --git a/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift b/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift index 56bf0cbc3..2bc6db226 100644 --- a/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift +++ b/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift @@ -11,7 +11,7 @@ import UIKit class AudioContainerViewModel { static func configure( - cell: StatusTableViewCell, + cell: StatusCell, audioAttachment: Attachment, audioService: AudioPlaybackService ) { @@ -51,7 +51,7 @@ class AudioContainerViewModel { } static func observePlayer( - cell: StatusTableViewCell, + cell: StatusCell, audioAttachment: Attachment, audioService: AudioPlaybackService ) { From eb89ff6bdc7d40e7c21490642ab076057c0d5cfb Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Mon, 19 Apr 2021 18:16:28 +0800 Subject: [PATCH 37/37] fix: rename NotificationTableViewCell to NotificationStatusTableViewCell --- Mastodon/Diffiable/Section/StatusSection.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mastodon/Diffiable/Section/StatusSection.swift b/Mastodon/Diffiable/Section/StatusSection.swift index e01276e8b..cd4230dab 100644 --- a/Mastodon/Diffiable/Section/StatusSection.swift +++ b/Mastodon/Diffiable/Section/StatusSection.swift @@ -273,8 +273,8 @@ extension StatusSection { let statusTableViewCell = cell as! StatusTableViewCell parent = statusTableViewCell.delegate?.parent() playerViewControllerDelegate = statusTableViewCell.delegate?.playerViewControllerDelegate - case is NotificationTableViewCell: - let notificationTableViewCell = cell as! NotificationTableViewCell + case is NotificationStatusTableViewCell: + let notificationTableViewCell = cell as! NotificationStatusTableViewCell parent = notificationTableViewCell.delegate?.parent() default: parent = nil

    dY2-Z%}X?B6BgXx^KG99 zmPH-SVCfzo^owdyAhe@EmEXm#zxY;J%02I(xd)ALxEOW|m5UGjy*Jr5^rGsccn%jh zk4;=t25{AH50#WjDap2q;M8Z@8GV`Irx#bf|KOHaItUlN#F^F~Xg?vo!@FL}pAL4+ zoPmTV|7wgtQ(4NU>*w$GFICO^7e_~=c8Dq48#TBgtl zZh4a~M6jnzdQj3+Nzz4Seyii5Ii>o~-aa!}CYjEgrsfQ+yEt_ZSqTo%HT^7#a04 z^Tza}1+)=K+$+Q!Z_?R`R1?9wNEt6E%S>+jVq#<1Z_YW1c`jT#$EvOH98RkIO3_QV zMM1(8QBkptX7tE}$4P(46waF}zDLE0W17wYyqJwTY6!d6d|B0xpLH;&&oTfcn3hmj zOC2hGrn%Ppx%+RwngE!E;*%ae!qb;j-f?vyf#jgcsMyh}1S>uaPwx^$9_el1=b3!e z-2Tk)Ol37vxB`0osG8Q*CPejJO31L1_YpPgF75Io`%s?P^mY@N@t0doJOmG-RQZm2 z<>nTCQi=Ne^pn z;#2B=DcbfN&k&0*fQ(fY*St8Ra1QFF9h9BxIAnmwUzlvZW&8>Lr=jtQpgGRQ7}CWl z#iYFH3FKZ64;Fzb&EZ4-#(-1MnA24-6d2b*TIi9zC)Yg=hLgUVz=M%wJB7bq9vx*d zaZYZL`R>}r7o@>TUK++Am?X95^9JWG^;$ecoWNN=sQ>qnzcw3*ovSQ%C%so|3{J1d zGgn#$8u7wx0W_~4uR~waz0TKoZK=}zTgFe{s6;cp40&J#vnlQZ>j|hO96Ir9TX1Ll z5Y~iex*&}P_S8$F8x)~*t2o)*HzEwT*$5045q&G18%+;N@X zuCy~L;VsB z2WDQQO=5N@LTOaM6A5H}({Qv`v^`Nm;48t%)7O(Y@qN-?V(J1o5-wiOOg_z84tc?% z48>->2-Cj`)!jk-p?BINldL3>EWdIZ8{g1;jD=cDZlad>)zE(zd7>+k?q)o;qig*_ zcPrhiRT6f*;;Ol^P#=jhE^N!NQ3q{~q@WQ~fCPiJYZo*YwYRIQtAzdRd_>{ReqLGSeW;l_VZOs4qzJyxyFMc^wv$?%vLwq1ImR?vIM zAX((0!i`9ucuKxwEQp=$cZIPdtS$4nYdajEq%Hb9P9Gwig^Hm1RZ|uBQdnr{ zkT|k9Pl(ge$TG+)@0>EE$s6|O3)t;y=*nHjC5YrR-8xFlQ(~F2>zRp ztsWL(X;Bh#83Xy+ZmwDa<;C@#aO`5LjAkttf+B@OrfJGP;o4PGVLgUdn(UmS-#2$( zavGWGe(s3+1p7t~+TAlk&SiliHFx5xgwQ{4ckyj235C1HU}Z%Iy{k>O7Y<*WX3%jb zk)u{$%F@8i5>51CJ(i2^bre^3PAFOzEje0N|3Kd$rJnH2i=^CnI#H40dsfdLM#ZiY zm<}U7E|`?nLbbxw1a&ic0h#se*qEY%x&<6u(s$ZipC3P$tc zcx2Mdx!S2-UR=LT`udch^G#>zlhklXUf8x4>1w?g8v_k_Bm)hrn5LHH+)rIzce@)rWR@yyM~;*&nRBqed4?a zw9x-af}l2TmP(ebNhPZ6yLF`EvZT+(iHsh9AN^9>*h$&`T7JT)>Xph1R`cu?k`)gG z-$)U0a3T5qa$J}^xzcn2Qq|%2X5H;E$meG-ER*Q$u_s{}l7G%yN)EogJF%&ZYbfsx z>lNwz_&qMjI`P(KgF#`-FS(x^IS`E%sI@4r!?g20?f`|;Z|1gO#=LHUvRc?}l_v64 zf{-M^woP>2%NfIq2ZgX5w>_WF!c{w7wi(vKg>@7aJDpy?tr5J_)wfc~1=&Xssl$OT z208s*qw}_SRe9g4@+!!)s2j9Va5AOh{{0uBCU-P6VFA40; z4Ghc;YM$UTSHzS@KM7Z3gQ}@xosqqhsynhg*7pt(hj@pKD`^E@v6L%u(2=f&`2M|-f@kre)Lb<=O)=jT6%e}*Bh@Lw9?SC)t(hQs!SU(FYU-Pd+3RX zi`BuAek137OV0a8;B%)ZMu-e`Nvq`Yl2nf(hi(2sCy?wTDY<#N@i#g~Ts2+q|Koq^k=}3p8~rX5`#$nJ z3e+qi+R3&m0E~%7Zg)Hi2=;P$$<#^|-;X-J^zBN@{JZ!xUD$$x39I3DTO+=ciJTb* zJ$&P}|KkSlKl|>7n!{tP`Mx`EPaw=_NqeOnVSURREH6gH8}WF>2ROP!PN^wL(C{wol93d3GO0F54%oiFLO2S%3AY3O!8wU9~sBHWNk#WFqqTjNu znWo3FQRlGvU5`aDhfPztP>{beb%+4q-x-2n%S!Sb)$nkQxpxnr2Lx!f7;ugWqXu>) zF7(x%A7&opFO>5xByQG`as`qnYxDEa7yVlaZ_D%9_3e%!AtrOsugS*&ST-V}jN$gI zXsNv0=x1c6@%zA9hA&p}T<3eA-Q}|R9Wh*2oi{$Q*os^LglLPeLb0A$2fOG`M)6}k z4Ktd_3USHjy}J-wW#|%F}-?lypEgHsx}45btZhQGH2p)2{@Gz~K7KEzetptjNna;p_F z;))-T*idQ4%k`Y691hj2o1kEe<8ndGG+m%1`vIGjdF77kClvgSL1A&%*+UH4eBl!3 zZtOTi_fx7C$lR63pZ%fjdCxpl!$)z2dP+y#K|ZjOUo-$Z0rL1_kdf_@pgJhU<0Y0s>cBG2Rw#e=85=L^ zBzohV@;DinI`rZwBCjQ|;eP!)*1TJjG$*DMiC~S46H_+pn9k0*C!ZiLY3db z_z%cSD%cu&9wrnuMQZYu0L+f73{g(Gqh2rmTdXb+R_VmN%AfYJ>!-@Oh2-kPom$ zYg7Tw8VO1bll=TZVVDrD=B0b34{R@r*bhwIKphN;r zNiAfs#$ctvas1^DI%5=2Ala{PjUuC40r2I&r-Kg-#o6Z%P+7WT-7r9Suas>$B3*gu z&Uw%yl28L^PU9!-1+>Prl<%f?Qxu@Q;hF?cQH=3)sH4%qa1)#@dm-LY&#`Cgx+BT0 z$roBJe`gZYtohtqitExFjV@I)AKW?jPif|p)fMfsmK07%^vg$R@94V!;;Ut1+< z6ACIph}CvZsNVTbVi@5lLe^@|oP>x{cm2scJ{w~x!t$}>5u<=Jjez%(B~lV58Ors? zlqi*G%QVR`Nm`XM?eq^bILj}yoh2~Qx+u;{d_soKrGf$6g5;@i7Mg!TLN>xN`(`>YRCcLgu@KrT{;87HgSU`k7-wu;t{7@a;USJbUKdUks)(!6`Ww(5Dt;&d z9Kc#)VMiG1*LY%$&#`|9UtJ6$82mHDU;%%wa+0ie*%XD!p_-@kGA|Rgd7mO4p4LDA z+t>7oM?X+Q8G){^J-!?nkO+RNvxzouPYR~F+7qw};xgr&L+g&SXi%33@CcrAS zZES(FM{<9&VCnw=q~G=(=VCE==Re`}I{e9(NMUz;$5w)yjwJ;O-TI;s<;h9)Cu$5m z9#MPX{9;QpT$lEPyy9fJn!3d_ofg|Y-#^RgE2?V5{z!e^X)Lt}Afc-W^NwDoE?)f9 zDg206RBujiPmn>BeOw^Z3|v^??q3;Ac@w~OpIJi37P2s_#ItcrZ!~b>AZ+~!Eg?oQ zmAZH~o3T}jxs@`po@R5OgRTeCujFOWwxL|+oIP)xB<}jz`>2iIhF@y-Rt|KFnub>+ zQ0n}MT*0i*(TPfrMED8u@rZDyZrUE8a6>c@O!#Df`aVL9A|QF7oN(FqK^wuqF!QOf z3|JvB==xup(pThrRf}Df|DsO^b4QQqyP1&h61Qrn=8Br+FI&<_c(cuIo0Y5e6bceDWe>na@d-43)6O#QPucP4;A6>s56|>I%6$l&7{|ciuwMqlAz1# zAfI43n~i+37CFrVc5Oe$M!A0TBu7-F4)N)|kgVK~Z+*?33WU zH@qj=ddE@epRL}ZoU87>46eP=q7JaK7(R48ucR|^`HWF*p+P(wQO_Oen1(cFY`9=GyhLPQ01L+b+t z1zgoFvg5Q%Ph%i+3OWzIr1)LinEmG~0UB%8nuz}214ht5nueF_yr<77CWqN5Wq;&k zSLXk}=q^||*IVtHC!Yy{8ih5603S$^w8te=jg`_z=m6M;wfNEv7liPoPy{G|7juxT zE&iJv0f0?H26}0IK&=EEAsI00G-vEHS_1xG+qBi#OHR(IV;4*MYL^Ci2+ke((_yUTva4v29p94QR5y_%+?Eg}7! zrkYe1%}6oEotz%`pfBMSye}w|Th4}7dyMk+;G;MiXCX>Xbow8BPMs3KL|Gzv#QKrv z-Oz`329LRpULMXO6_D8j4}e%N17+tyfosCU50ZH1^}bi`E)+`(v5+|{dB29QH_W#8|Su|k)5M}ZRbG(`# zYpPtGP%NGBA)x+ZV^QcnsSYpc6u06B7c5vD!11yFFFg$SLjwObDHNgv=lBanurjcs zDwI4DlWhNYC1OeMU<(k--l>6N8A%cb)3(Vrd5nn4wuW0%V`=zRVTv_5u{3?JLdCHe zD3eagPA$4N3!gU|x&^b(EGK&&+TJJGs|1kk@hWJGg3qJMIEIT7hp{i}cgB&}2Eo#G zV$?EP-B=CbEAz)As!pSiGX>^`6BGu%7p!+zU~70!S>GX@WQ+$6T>+C&?Xh_$J4dmv zk}RAkN!{MazHiv)s8w{f-d1p^KQ3TLe}Iw{8v6FCBgGK3pd|k+Z*W|W)(q7^Yk!5%Qre$7`gyJg!q=1o;k^Gg zIJijm1%qliqZZ=G2-^u-TCs9qZrCP8Z{~qsnYgJ zNb|cABDp6F(r!}CB*qs{W@s+tk;&A(w4I=qtYGPYQtMMwgA?EF#{L)WcWu)CLbf`#FldJalsN^s{%wp=v3G#-mYcU;g;v*8g)w0LQoABQSbQAL!dMjTl`} zF9i>l9T!#L<+R~H68pI^Xu7AVvGJip4-X$D+ibNQGPTPnB=T01`>F4vo+!lph7d=- zIXivO_FSyv7U5j+k?^hc9aKcgmy_hL=)Z$_sSlPTvTY2Lz8c?Z#F_kB)kNmri`DuA zOW*W$92o6_)0K*)7CXCxeN49br&l;(awpBry?-bF&zD22VzsPO|77ne#zZ9nyxG2l zR1xD;0qT|Zsjt+>r8-ta2CwR*U+L#>@Q;|Oi;0Ee(MS()H1m`}M|*Qy_wB!a8Ke7T z5zgloO{kBMbRol!Qb4@9^-X*ZdIV^0g<|nmNM?@_v7=N``~IN=QRaf4tihdV0Bf_J@Lky><56k=@_> zeY~Oz0S$@7rT$2J5+fdk|LjuV{0|RaeLGz~!i5t#t86UjD_kAC$Tg+Nr#fBzjb0yR zq1FaKI*BJh!FB6Z_>Q~tV>}{#M&K_%yfx+G#$qol1_ym8^uGsPrMZ&iD*^Y{f2R_W zEI{}nI>3+&yx^R`aKB(f4mJ?*9MtlVFYEAZ6XFu!9_o~k6OME2a3;N2!-a*bZD)+| zmO8VQ#R!PA*=-F7f3wI8_?G^F|IT^^nwOxPSZ9lRZyNb!EcTo@t5^O&8fHA!yd=Ig z!i)ROg}54zsSrvUoJfp{#4^Kb7P7N0fd5z$Cak>+U+}eGEp$3;AL=*85kkFh# zLN-J6-*QBZqxvp@hn||5{*{=Cm1CCFEl{ zVXTqUq>HT;Tbzo=`)pejp+>4CAib+ku|RlN4Y7a6FOw+@BCkWZOhL6 zLTxT`WhE+7pqH%OcZm36$xmD=b}j>(o6y&xyWJ?;s#(p)nU{snmzKhGgqIs!<2sns zC*`{jW3Byqw?p_k`}F)t^f%=7jNo*{c=;Q2~Ds`VUl< zytI8b(W6GoCq~Od-&pvLcB7%2`v-4cY;OX*Q)uF=3+}qHAGlYxcM|aAL_14vH~SXU zna=gM=c(uV#cN>D?gHOW9R_$>cq2rRT5l3bi>J^~24SxoZzo6j)Qr>ik zIEpr5j8|c5+9x)|@j>^sCsWGJ?jWroyFTZ&jVo^t6p(RiGYVhxolXp_tPW~$$3B5b5lbYv;XJ>!y?vUXEFUOCzLmjaD zY}m+m2UfalC3O%C-(|{DQM8V}Z4oqPT!&i}PEV<*U;*c3E@y537i=^IE2tvQ_%kG| zQDek23qA^yB-q|Pu0yqG-a+SJBv|~^ z_{F8h@5fCO1J;BX(sVS&V~sQrpv~}Q?*1BFSB{nO<+s#fDJjZFBzP05*MlBd7aSwJ zs~K%q+r3v{WuIJny2T$nyMN7NviSJ^HA!)Lf!{Z=KYbnJ!fcdT-Jx*0m*&=P)GJi0 zO=1on1zTvNfNc)>Mk(s=2M|r}b0Mi3gSMtn(;0WTkT}AJX58&EGhJ9-~3VDZC zzv(>_vWs34)7z#ac2g*0COg%-ZhPb;%#U{TqEjCC=A8^ZBgOMR`erJjk9UjV*_pKKfOhp;s6 zquJ&ZU|%cWm2^NwcE1mUL|J{M`oH0FizbiKk2Z}}IXrujVPXu;PNb7_YX?ItTDVRn znnpC4R;~h^Mv1aM7@nRk40Y~%QlTc2r2xVHP4t&BV%FZn8uP>RB4T0X!x$tEklgff zdlXoGI*ts`6c?#E4sgSn_Tqh{W&NOFq?TAd@X+$Gz4#u`O5GD!SCOnWR;rGy8E2L%>kHKRJm!3SxrqYBQ7Sv{d3=e!3 zQ^ZL$_urM#tJu4rDWip{9F~(dclNAVg7U|B$c<%2Xv&}k5Z=~D)!`ZAw<|HzZ4YgN z2o$M5N?!#8AEq^F$CC*~dwQk+LOy;fy+Wpong!l`R@AuY9wz~{>!JY zA-C-H5yc1EVwt(hA2PEGavtXz45w*HG>g4C1jC}hvc;HV+ZZK=L#mKom9cBA)EiQ% z5uN3oo#o$h`sQ*3y9ZZ}^DOa6791;c0{t0G)PaYMtKv>y2_3_jc%RZJ`x_3q3K(K{ zA+sAB$JH`1(3@e&KB5FmdLS-6i%=oj_cpk8?l!s&tfbFK=T1G)soB}^=s$Qo#r^!( zP<~o`)XwGQOE!PxfY;kAy-*_~1RwhqUL^a?tNnvJ5e8Y3#6E(T+rKA&EOc94dvEiS zkRGziVDaN5Gm*DIINK$UFPK{-LCH-_kLREs+RIh+I^+M>%81m^-pir9OlqDTK{B#~ z5Ct$r<$*1k(mb0jSe83@PwtEe*!+GXhu@|tT4u>bovrf&j^dD8` zOqPdxl((m(! zr!)LQ4UGo+RX?vt`-2{yYX6WJhV?^ITM72d-vdU)RqHMJv&Z{=im_Y9$M~M?3MDnS zd^=Sc3)=vbmmr?_PrL+BqG~j}Kbz(?`k!>49stCHNZtVNMM>K(B*}MOi3z}Rsc)-5 zpN|n%4eB-M`Zc4*h0O)!GUW4gd>o}hg~JX}4YV;IqB?R?OklD)Wb^vuo^2U`eaiV9 z*ZhLvEuKS9%HTQt8Oi$Lm3^^T^|@K>W|NL3oy@W<@##Ndy*@#S`j&cTPg__hSP z2)9997Ds+^KEf2e8J5@&!wU2wmUqR@A12#BFoY8sV=a=SK9ZSV z{uuG_xjZ@Ka5-h?2YWrFcKfm1^$Vm={3{6r1+` zTL>&tI^6j(#4GWa&dVQY2{nmJ(RkYn{W}ZUFQolfLm_YTY(e4R53ZN7=#B%uFB;m6 ztb-m&i(g-KBe+YZv0o@?i75RBdFEn-PncCA=xNB5c<=6sPw9-IM z42En(Z(F{^Ih*2r=nzvu^FO1ya6p!8@XUw@2Ij#1pPM%suD#6V6wdnUcDP!9IxxQr zF*ZTj2ti~07q2uJ>Cg_xbZcwG0;m>UOK4A_KXUloANi9OZ=()OH3N28Qv0?{>@i+~ zX2tp7+*$UdS}H!@K3j9K1UZ(>&&iFz84hN*6@z{g7mDZiP2milte%lIVjK*3;$QBe-ahu3`+yzEp6w^aMuep@4VAIkSbQhB)G|n#TrLrJ5v&ucFzf3 zY&puSo~WN+>yX%5$Jk}-!!bsQ4@?o-G-Jq!SO%GsXIy&Bqgo0qS;TlIYhh^!ZsDDJf4bQUC6CTJ-9 z?c8(>VYpa+YWwukGK2JHahT+gP_JwdLhVDviw2{xl(_@n zT`Gx;MW%Q^SOin{Dq{Q}vD^F-$3L|4op$d03X6ew{(^|7&tvk#06~!9f*1^AbC{sI zHXG;dmZ^aWA)&tsx4lv|HZq4ERBx($u~T2}1jf-_mNC-xo4l})9rWdeq<+&eb)V$g zXFvY@%zu;14%`ph-akYroU@{pYJaVwirV*XW=1G(9vrWrXiq*-{XrDRMpUJMPXPrLCF_MK-L(^%KUlHuFVJB(NxckC6<%ixR81=V}c zfK3OlO#$u1?A1&S?i}uv?@PTZl9?1|Xf{pLh1+NvV7Y{sYXUAV_E)aCxkIA>0FMjD@&???{5uy;S-BEr&e$dmf_5f7Hrx^)C2Y@tG#eX~<1$ zc=OYnJ1qYz+*eRimx+cfxu30?Tze^vya7v!QJQD0pyef)hH8xy>k>|Q>jRtEo1eTI z9}70orOefA%YA$GKK{xgwiLFu&x4@7@2nTeJbAWZq7adx(Hpu;@KY&^1iXd-#5`wZ>aI( z;5iDxG5dbE?y&^HDu`YGR@VjoJ}#ZMHWxF33Gvk@BORTwd2&4Ttzsa9SF5cYIVJ;J z!#6YQHP;I>t>;fqTdx&shzf4jZvG#-zA~!Hw(FMe4yAjOvgwp=*nn(8a?>r{Aks?L zCN?15-618N(jlPIjkJJ*2A1pzIG6e#|3cw?xQWde_L5^yJ0o0Dpcw$(N zi_q>41H|5+Wb|M^$v`mdE->gQ^3xc7BS7hDIhdQidD`dS10R9)MRe=%(#5Hrr%A+R z7Zn5UE&!^gzWThC4K`f-gOon#u7v1FQ{f)_GS)0$O}kotc=S@Y2+}dDSezcGqmW7g za3r{XzvlYgX=3W&{+fVc4{h;K+hv;4j~05_ARY>8OD&UK`xAr=B_sUgZ7Tj=Fa+N z0sS_xM%SIt=6oHS)SovTFr&xLp5y!N$L1g3A8pQjAA4eYZN@_|yhHGT>B3d(UvSoy z603~>!z$VN{;y-34d12j2s7nit;D zyJ-~O-{-#Hs%DJt+nq-11JgYHR6jtH76oc)zC%;u72P04xeX`-2#f(RaYA~pDXFTSYohZ;rOe%z>gI`RF3a)E zTy|&nEH`#Dg6gyHyu`41g%j+Wwvo0m0XNU~UjtX813RNN3p2B01cGKJ7@Vgo>1a_tB3$CKTM_!)Yw8=%u=w^YT_3C>YFmUvOuU0?krQSeEgM!HS}| z17YFdh8MOfD8xPm_}GrG(S(4VSCIw-j%q!6qwb)u-9;|DJZER|R^hLPWVliI-~C0i!DD14;Z*QHQCV zKa7fAOofd=+iC{wT{)PKLBlN`(0;cc^+d$n5*K5?F2kw?^dyGSaKuWlun10sc}51k z99W+W$7y_!%#aMZC7XHSsh$zsg;R21uMg~hO$h;Gr1wl>g@0)o-XJ$knB@ewvrH<5 zIs)yl+)A^*f_kK46JXWKlN8gov@Pv$a6oXKf5dQe@wr?F;UZ}Sq7Hhs+}Rz1NbA$A zkLeg3-Ai|)5}3OhPQ(i`jRs1}QmJ6lV2#{V7KYnD(&i^=TeoKqcF2$6&4Si|QATfP z8#^!?YP9JR!1Un$3$f>by>y@!f`ii(=Ri^bv#UcF0}z{flr^IIt04fGqmco2E-UE#iU(>k^r?q>Ben(b8$=>vLW(1fdzyF9-)zQtufuxv*@P zH&HTFLkvMOD&&_zLx)vbAEZt95C2?HkbA41OyA&HFNAwi-5r2>b3g7(yE5H#Y1M%n zMrNk~V$c*>2{Q1j{2ktC^SvJNUUR8c%jfk5_L;&AB zSn@w_buGVJ@$=_E3@Q1Z7g!m8gY#$;ii#4AchO-HLXja0o`4%ql{)rENOCR^=> zvietNedsImy-Q&IQ;+v%Wh7tvM}0uO9<8}N#<=nJ}h?RcRLTke0O+lK6 z&qfNc%#NJ{DKT}12p3V3ILjgWlVwBr0lv;-0UjvA+S#K-8=WW=l`JGXXf}41`RouB&DNMcO}+$T$>>ddaS9Id2h!3Dc0!Mf z=K{El$b&WHCd}kyXPRh#nGDb}ZoP=5A@^#+_W~ zY?OrCLbAp(DVvE8=4M8*l&OdhElbG+AY=FAzmCVPUBq-qZ_@_vzld77c+=#N8GwX- z0IP3YMc4IIZ10y)gezPJvJ6bk5z{fZ43Bb{6f z)c#7gJa$a({`2O)jxSoKWJ(huAY;oD|=;Ga~hLEh~)L z9KosnMh_t2Ne*}w>%$Q2e`V+s?E#J02~l6r)A^EnEiwU&{w}VJ>Z70ufy|Q*U>LeT z10s20>j^COHMUDQvU)fGheDEfXhKq@mYkdSEZ9MngZ~HVvKEu1^xKt<6f+H`uh%|? z-_*@n;@LWR--%Jaz}p<;LY*>j0IJ)*1K;D`U3d~7ILpe^>33QDIgPVnUUH0GXHW@{|wK0rw#SY zBgy8zR2TaT>L#|Qf5$@A0eVy~G7ex2ny+21@I#H$@P%)u+@k773MG_ZZ3U3LDUG1k z)ce9Ke0mCCi&Dx|1<41U6v*N^D-F*Dwnq$A<_CS4rj|aL94tEob2T@nuV*)*_maVG ze(d7M$aIMaW+J>OlDL2Y`Kj}IW`4_9ysyxNxDU##fAmOVI~z95zln(-($cZnD0vMg zWF=$sjHArpRgH%W+mDI2KZ#Q(FcZ!a>Y4MQdLgL>VNi8~tjAMyG+DFQ6l!zM!$2 zy5KqX#`-&OckcU;@YHr`y6vL_lJGn$%Z@?7mgeNp9S~(DK;9!wT`18M;}5}kOH%i= z$hZIiSK}=hMbv;7qE-zUzXWJ1^6@t{m2(`BJmMtV3kn~hfy=6x=<*hy@}FNQt1q{z zh4JAE_w}$xV!Y_2!lH(f(z*jw4()e(yV!&)GjMMv_joLYNxw}u)_fCnuVu*8G^yK5 z)KbV0Z~`!^$fTmIkoGR}|Fav~l^2e?2)ZwzGltPo=vkG|^E0UZsuE&qXw)r%Y%qDK zd(%Y?mO$svu)Zu|wswDB@Lzjb1>vTJ)xdIU`0r!%u>Ux3F?1-99sb!vS#Spv0hV2( zUP$P`EM7)dCQ&__9ky6;0DS&zx{l!;JdOu!Gt0SkkXsc&`uN%rCZL}8_jYi(yzXE4 z{ub?c`^#T>hPo%Ez)0Us^o6HY;tQAGT1tq1pXY84@d-iUiY0ti0p3>@EozyKoe;(| zRhcml*-@N#VxX{G)nLV8Z1Ms8rrfvu;fqMXdJE+dS6I3U z+tS;lbqenz3X42sAy-6b)EM;wuFRjIFdcNZI1zJ&eXz7x&NpP*alD@)vzv|C=H8;& znq}1coKbOc;j`+jxs$9vc2eIl6--cQrp)IOtL?4MnRjht543Kub9fBUi1k?i2I*JeYQOU;hk993c^)M&7 z0IG0t^icpdKn|yPi&9Mp%LdQxgZXN6zMfHE`GoC2G(5C4M)?!wj3z9ddiH4GCeW(R^-3WNsb)Je;`o~-m^Hn`g8LE zSj5)0$jnv4mDxkd#z)n3cy+2!TdekFbbW#tv%h|{b%~w^H~QmvIO@}xXq9Syp#yC@ zTvcA|eCBF+CBY8d{?)0y>)|tuYlGLIzTQeSHi<7wcnP$1=8H*(j;<~P6?(MJ#gfQh zO`&Sto7w0c5vsM=moYMk1Bob^;A;joS{Qc@jGO=7V-fAaEwnE$g!0tMzlYq^Gqkto zOV$_4lSvqCQnK+$TBR{AAd~L?f!(OYXuaqZ@w5DS=Zi}<9M43YF#@!6mQL%1FlZ!d zvE)OXND@6mM>9n{4}OB{i1N=7<(rYn4K++1K46@S`?;h=5YuaKZe`RQ@GIA_S_0h8 z7w;E7-Kt`Ah8<%6ky;zboW;ycHda-i8r2N6_hxUDqkoCZ8)-hci;SEyb z6qAcb@WqlAqiW%*#cgH=I&e5!zAwK01<$xEt_t$78~OQ%yTF%11K$_&m5>6}dV3Ys zVHK1zg_u0-WY{(sMupu-(;?_QUK-0e7zB}@(46QRdEO0G4Ex)({>*eXN>RjA+_DnP zf}JA$Gq{Q9f{TcqWt;Z8s!_rkrzC~;a@osVJ`KBmj_}y}Rm1DKABpmxHMl`*BP4u? z+MJS9okIu|-9AoZjgjb0@iQo6on^;=Tv*{jnX!A7=YpOqn#YB2Fz2hnFE zx=M&&`rH78Vw7ujI$?|VERK-rY&-8jt@^5zO(e6kzOE--2Hyf_;b*F z1T0^}zn=8s!bnBsMXOyl*EEE;_L97+$p<2?xO)9@0nuL*>>g%xU?0bBH|^D-P4FGD zhx$^O;axRI>c1Vvcs?~0RHj))?|eRC2ePPGM|5L7Y%0`C#8C_xN`01?zPfP>c#~a5 z57R@{OK_X#7B=M7+@%o>aL#Jfc-!pF1g-)9Mn-pETlV@#3CYUFaU5LaZZC}rx(oX?609_d1`e@X+I|$}J zJP>!%GSp)R0{gnT-xA7hNQA!6Z7*Q?iR%EZgr))1%gZM+2@XPk1{MXCKsb#Mo;_B; z?FpDlxdfoqdU*=sKrLkumz!9<$H)_G1$h{p7 zqBdZUgWWgL4mTA+djo5kBbAvWUor`ywWtHfI#v%w5BJJh_sVzo%IszskQYJV|JF1z z>e?6-MDZt8DDe%dMGO{p+%lB)dTGG@R>V}*K!j*ULC_;L@PgGz8rqMSApC_AU)*y1 zoL-M+!Lh709i-+SrDl;&e0%AHJM4K+D^#B%lF<{`R_tG@5wS%(%Dp{vI5aKvFB0>TkVI45Y7(Ge1xA0_?O_$-Fs6E%6dA-- zYsf5};Q2>**##&7gTH$=5NHPyvd9R^TB?*niVh{l04aP~Lb<6WM%0|7 zS}a*It#OMw(>Nvvs=PQyrP-L3(wDD>_I=3SQCQh+Joi zl~oAmOr_2Bxp(DR6dP&j*Ye^72uhU!_h~GzLyG`3i5y1FzJ0x*uy4|V7C38tA4)r} zSg3>H(d#ebd(#qzt+ZH%r?mXuus2H47}6#JOEN0xs0_Ak%GEF5w-avCn;~>ZL1Sr1 zfEd3MENgTE)QHP`Xqal1qIxeY#V_$rRDdL2$+9mrWW-j)u!gl;woJsHQ31)8C1y(H z^QEUcUdmg9g9if=Ydb2*XR0`Yr(=Bn7|+&7zXf@WsW((EcfTpej2ieJ@(mL2Vk)_7 zvl+8ZBdRg6h`&bzOG9}zJAAUVt+(Ai8ila25~W479g?_D_vG#6;8HUm$D)A;%KnctbVUUJp=l5oa}tq;CYR0f-NH{ z3Mg?ijTFOv8+6|^c*pO&kGXIPJoUe-Wr0?3tc7 zcNehy=fU;gritJY7d9SNvh&|Z6mTGjWeqA~XYzTjpiuio`>}EzMSC%hxUWsFo@T`dELDzEYxP z1|HsZ>Kz(XSxf-y@BQ-Sf@!Oy%gOwSe!8uYyf zLTgHFV4Pr!e^|-#r&uFRu&O~-Uq_lC4_X4=G+R~8w1ECJUNkCuIpW1}NQ+d@lF;FO zC<`V4EWe$6XbLYbnEXGJ?rhIH~}Qm(}oH!Cr)xoDo_LH zQf<~vRG27g8D`3SrR=JEefS!k!Hrz;1+cEEQvE3eY?$L%rQ+nQl!G$}FNn@G=bv`d;K?Gb+N;p`2yWMxzHtde(MREBKo)jXcQFE& z#sR)$k4%1#XR+AQ_lj2+(*ubQjOPbSy+7-Fdk4(W=^w&m-Y)_RuIvAfs_hr_;jQUZ zwb4pePM5+mSTQoqG+K0V^)BLS^hRvXGv@U=$9F~{6$2r$vXY-oS<|LtNX)--0+iJH z=<4plY!hC=+K*FLz9R3bqpQbcesZCF7AAR60a*3qZ?@n@pTqeFDrY;qpX7xCAIwol zU{4b0v;nnvK6QPfW$g#B#SRUj{rIs(49&)7{%bCCqaRf1usg*z(3$ts^W>{yQSAd!x>uTyPIrupv5thIBL+fvGY8kGxm<^fTlUn_{ ztqY_7V}$f&Vf+U1$og;oKYt12f2lAaV~w$fd@HO>_G)fn@Yl`lXcF_7nVnnx%z}oA zYYr|p9LV23bYk?y>tr$~8Asw~8UUkQ8*qhu%(9$m5kdiko>GnaTJ=zV%Kql;Ge=TQ z(W`=7wbas6=`W%1^XTK$bPdVbci7LAQLIiX88*Ent1dBsSaIP}>0;k#Q>cn4t`tUs z+-LMFo59{3lbrF2t9E)nzy9{3>-O%ok2d6H7Jj}Jhz#(XpNM57kgMcMy}|CdVh}^i zC)qeu&qggoHsx0T+n3*92$V8YdvFuG9atojC}9o4E8ifp*Pv9Pu9QQHZ};GnHkdX~ z+Sq=J*88h3(y;%}#OUhrXt%;~pRSYi*0*zNeTh3zSx}!%?zJecpQOK;Ul2n?I|{Ho z7b1psVKIGP&$ZR6RQ&|;GI1fdHnI$YlO|V-76^l1KNt0C4e2AcEXZFIz*+d{Z~*6o z>nDN_IS=8?qUcURa()uD@2B`-IB%``v;@g0u?RaPP|3aiTCcW{hXOv~z0-WiRmS*9 zW+8lhNfsU*G(K&kZA~n-xPG)^m9wC1)Ic{&q<~g3;Bo=wr0fzDFN~+W8@^~W>%^W6 z7Wk~(?w7x8Jv~;kP59V^Cv|?K!&SIxjrJ2PBxg!~@gds~@SvkZ13T9-f#lT}hlY0c zNCU{9oJaQ1y?NjoPRan^(k)C(y?BiM7tiz=Qxa8dF@N|6!cgOwK8*o`HhTNQ-T|~E z!Q%HK89r=VRq0OWkUzc3`T$KbmR2YhYF~dru8a zV(Z8Nu6)j_?b~l9Q05Wh2BQIjrTlrx-3yJ^Q-S!2&}v9vz9tb!Dv9+2Jf!S?A50GG z9Q+lxmw`4dA*Uhc_oCh=QJqs>HkrZZmwQfX54-z-TNKIgt(Wc9taZ}1c@)i=?4T!w zyE7*DDA#1?73KTdjOu|Xn)$Bj@Easg6rduXdQs}NeAt)$TU~hP8n640pZBjTU@vgK zgieqC!JOb6)3Y~BMyZYm8*0hk?|*ylvF?Ws3!_9%iFA@8VzPO+$`=A7WB6$eE`!89 z9K~VFWD#NG%0$Fv7;YKI?jGx(QHUB>D!dZ)EK)TrN5}td$Nmk8QXnLZjy`@}++}_>zd>5bgp+AHYm?r_q+1maUMpE) zGPmWGmJm1Yc>ilUwL+ZtV*sBsbCS@Z+wqA86{mfmt|;V_$F6tu-I+~@f2Yr=biIrn znhZ^)!s=1D`$FhPAxlSE{?=i<8b)aSOR`sAGrHd#$<;Rx&02&e$m;k`Jj3lvRFFkN zQQXp*0R^1Eb?g*orW801ubJcWaFdKXkhN$a;&@ z5evAzVGm3^m0*)1f^MO^9++-mNxi%h2@7E@N+-9}k5Q zMTVCX?hg1N-MPII$C30GBo9@R)Qp!g7(aJ+ITm8SfPLh=W&A_6w!cuE0haxi@7hK} z%+EO(K#_`1Ke2BzD0aF$>@y|!ag2LT#}f{o|tJlCLg4HJ!kEmgB?ft z(s$Pw$3(+zL-gJkyQ>j_|JV)@&!J;8%`2tvVg3?Cdch1RFDZE{q?Wb<79-j_Qhw>T zRzRig0^?*>!}|qM96!+JsK*v2`}=tRxA`NsOp@VW=Q3c1E(nAPHkB1A;Qq15a5#qz z{P^}Cd@=^O=e{Cwr07s^&i)!VM2 zN_%fT2z7qUf~<_;?CIO5*>kc7Cpg+&-LTv>ut;R%eC2`QPj4fQ9D<^6_Q!`!*Od29 zl$S+#({j~HN`=dY#e_*n8B($}Soc{m1hxxOrzzdPpmeOs)E(nF8YU^L%uD*g4pL&n z^=P^q^N~O%aZ>_GzJ5EjwWkE{yXL>Gx}?kIWZ?l!Pu^svFYNVcM*tF$-97@i)>99f z$R4a_9Qh49KNZRDKQAB$&5GZT6ZDh{A#Etr5P^`WNo02I>#+(I1D#G%Xnas+=?Q#a zlW^)1N5!!hOa*@MED-!*uS2?)&|G6R_l3Al384!cKW%j}q@D#uDoG#Suu2Ab^nCA~ z33%2{^Iic-T0|m>UxqSU2hr#wH&u%XaT$pDTEF2b%aktpBvoHxm^{znldEJ*2S={) zz{e4t0v$LrlK8+y9N+V)3rC-OZ*qyUc(L>C`3ZLMp65?K691rq`p6RiQP=n>B-s-% z=gA)7+jl=f%OUFR&IsmtBAyXNqdC$md-;sCA;$o#7p_Se6S6w^%hb`4QS4JTA){el-N8#tqBo{1?^hoBx`f)Da!eWt z_9h!v)nUbn@VXELsFX&Bn;xJ+I0qms?<n?qVlEOIib+@khWf5^MDP!S3{bkV0tWBd|n8it@dRq3;Oj0v9l@q%aLL_L2 z58!=rb>@Xj;0vz`VZlFGuReuRbh4^{4g+^9=0hl=75IqgyGnujqa5HE9S$5CY9nxJ z(K-g2E;ntsy$)IGc8r2Cs4GXsyrZGo2)aiB_dHyiv;AP=5EWA+s(NeE?Dw@IymCYMJ!k}7_QR8M!%#4xY|e=J85pl;xXr20BN6V75KUeban#zp}TVN9WlUcz3lMIql-Kz5?scq{*R;Wf}O=Tqp4T zD6`dZdV)a4^AX(`Rf2=zTPVlytlsq%Cu{xU5b?H_7gRhv!x~tUOlsHh%IN&6 z4x1cKXfhiMk0x^m(0d`;D5@jni3Sl!=<$KBu{0gS*^;`JcUp1|eG#COCu>}#`_`O2m7hQ`LMH3gvZ zd48r!Kp0?}&Q?Ku?k9dHO5C19*O5jiMRh?pnEjmbH|zcAtG*yg3hd#5P(IHMWnSZA z$ZKX|;>?=Yubwnd-ZR&ua<1y(XC|2qF%t|)Ka}#U> zOjf}7?mXx63ZwDpJWgD&h`{b~26zjFtt7w~^Ld%)?98}vV?ULRP$qkqH|+%F9IpTyS~t$~bX1b%YgN140`a;vRk#HlD8 z?@d$*G{s*?LnDImd$kiy^L9}gFIdtIj9jRAiIGYNeel{JNP7`f|9F^4@OX13z4Plb zcKYM}actzsi-ezad#s2gE2_`QJ^F-KwmHM9kw(8(8DEX)CNf<-*8f}&cHY7M`1rLa zx7+UL@q{MkR|--xVoKt-9tkX=C=C3|tZY`)coh3IozA{Lz1;Q%1)g_HT9nz@((fPt ze0}rIlRoh`{p!y$sY3R&Mj8HA>1#h1SMQ2SU6N&3-EFy=1X$z-!Wh3|XJkNcyc=G; zpl5mnPd7Mc)!}O&OwP~P8qUySawm`npS&f}3sgu@APL}b@f*D+zMW5{ZiZ`TLomFw z-r0j~D3mYG%UBuXw)4aJBixzpE1rc!v=>)-qu9!1KvEwf=6n=3iFdRI)lc7vY+dHV z72vztFSpe)sqGoVMN>|^4~Q91)qCUluumdxJUFy%D%cchDIqZY7u| zcZjD{RO6Nf4-p69E?T-yP>^y)Kb-`@aDBd4>4PRpSoOSLYgoO82^e7;eK7uN1BdX% zSyb4VIMRWBbOQe$r0T5%)HB9J%^O`uLJuU?qrpBv>O>cYj-4VPE|I#Zxxl>>_G}M{ z5dqXsW#f+gwF)JpC2e0(T^;005{P%;jo)=`&Z<2&x}5H_j&`{52!-4=QVTvW+Og+X zC$Xw2=lyAcaO5W{xUo)`qNpD*6K6Nm2*#)0*UcEp;A~o}W6A3pfR%i5&333LJ#2HK zg6?muq2%wmVkgN>I}bbgcFGyGeCaj3ctOMt zjz=D*BKn?j38zN;xarp@6C4T+;?6hAr&PXPFGK@olmQy|U_4hvG9;tm?kknsR4_xo z3Oqflp!JKPCuwy+b^W3B7{8T|l9ZY$2WL)`*%1xX~d8|*}mKQA~G{iu38$FJvSc^LN%sq}z=nT^Oyl>o^ zl$G|ri$C>86iJC3yL*q^j(%*BZY3v~9*zxu1xqdiB8EnXO`?peKla+HN+{)PTA7Q; z#J5-5!*MgRe0y{mOSv*%8x1~X5^Bj%&SeJ^lrs_!d=?pwUB}7v`6$0fLw1#nHMO&% z8-o3YC2T(9Y3;o|spfD5ufp5ix5`q9%1V5Vqa|vm;qnz86?*e_4I4eh`y*kAJQ`iE zPsrY-NZniSS53SA$dv>PLz>?BTUoufwY1@EoS7ATH!tAqj%4ShE3bIBUs z%LzjAq?4eymm3l$1uQ>kJW&x4Thd`sk_0a3MLU@b$UVZOUqUF~p&yRAu&y0DOD|)O zr1Tam*r(mAVja?Y#0o`?ZS}#!hRQo%`=!&&m=u;eTTk1ACSGI>`3{rztsgN#kVW3* zu^wYMtV|dva7z)g(rckf%U~JMM0dvXrtD z_E4u@&#NUtCJG{;a`#<0@_H>IwF(?*-+r2pbE$$Z(AvEg-0w2%K6)Ie&tKiX%jBZa zSG(bp*uIzl^p+5LtcjkzC}KuAD(haBK6*nvR|7o*2y4-J{|h&&cYVx^cuo1)`4mk*1~QrVAOkWOP?v} z&UN8#s}Y1jiVa|~eF@l!%$6dz*G6W>?;Bd56ezT?lb2$&KvyeYH69w#D9Izus4+}{ zDjZZC6Bq?R9~$KO)m-8#WY-t%4;&qQTU!mk9+o{^W<#vK7;+p>r*_o4Ixzh8;-5WV zjHx_|36$-3lWvsjH3tO+i&AW->a*{tDF%YOVRo;prY@c!AZ*!XkZ#;G=J(f4ORwz4 zM$Uos^gcMMk9iV@QkOsPP0UM_KjNXpOv#^{=nLMJ1OHm7%CR#O4+v92`1jrDyHcx{ zf?joAJYU;llaBrO=BF)4K5-(@tVfL8T@3vt^uTY<4@-E0egJ>Y`A}1*nMAkm^&AKa zZb|dm4%Vw>{<+2KPDa?!6zs3X&)H=KJ?L7 zX%Go7qB=#rcm;l1wk0lyaaAy7CFik_n(O?72S?s7YG11m>?E=Jm2CxfXunB^)VDY9 ze+z>?h;5CK#O%P0F_+UvRvEj5=h&%r5s~k8{c5xETT_hhXMN>GKP$ykd9xtC&3?}~ zZwrtk&2i~^yn684>kyA1S*+AG?;4v^cew=G9bfTeWw>P3!I{dV-l{14I%uDo3WcvN z+fIx;^7J^*+EYW1sL~YX6cZo=uE zo1SFS5vNrM96ii$u!XRKh4|0AU!^`ZcG7+0WP1%P@|eF1p66cQxt_EIPa6k3=o4p; zHB}&y-l?GNi>X_-?`iM4;~Q0c>}pq>b*g;z!@k*q>vmb`i%Eya?cVJqwLpqp5@hYh zB8O?_+4pL0-_J>|93B;;KS@{oWB936)CiDFKUqZl3?>}@Z2;~ze}=%xh77~=3kL0; zT>}dDBgdc*Cj7ek4qRN%M#u|Ij+|U@4%NeLM>3i`=T;@Zt|(7>T@}Fn#yrN>4Hj3l zGMm;)9gkTu-8?ml)4oMmG9D1gL?y~oYH zta@b958YgzJF2NYs;a~h5y^-5f9po(`}oekAga}S+)~ovMG~ZHvsPfUw#1xpuk255 z3M?UNh+@IfSrB2Z-C{CZ$z;a#Y`laOf<>k@C#o9=w!n_z7*|ow>bI7yk+z7p#rfzzL&}zYie%SHLgROur9A<>=?5Mx7uD@7^`|U zUtY`O}M8DQ>%9=WoAK?baU9;=bll11>I(>warKr#hUQ?C>Ou-_&b; zaa=I+rZw|+FLu_y*~~Lz&@DY73h17dIEuhOZavGtKQ@ zw@2ZgUkS_DrkM~XrG2e;rx=TC&NRBa1QN6*&zd%nOx<^wlfMyKKK)ekGJ*KahMmL1l`R!evAwV+5*_^`UE;A}HnNRLnX+m8qFgB8~85stl@ z9-nJ!`!)F^kXbXfPZiqMa-g<*P|@D$2<ypO`|?1KMnVi;iqw=-G7)i&k2nw4v^?OE}$KUS@fbKJ>K{D^lK4jo_J zJ>F~t>pnHt3T2OHGw!=V92zZdw3T6PLud z?z)pj{?|5!1cBbg8Fy5Ao24d@{m`5av)(QR4vrb zuI3C&X4aN>;AjtJ*|<|-u>g}(_ABo7T|VHBmUQT}y|+CRnUbzH3vBbgmE6uO>u92H zb`9+MPFkE46#H$3dICWzV9Jtc8-=Ecqi<=UYD59;ctWa?{=TPS^^Vr{Vm?pt-y-HM z|KG?cM_U5JGVgyqOt2+BomC5YiIN5Be}(Yz9E&fD@{RI1j7aX%NAL6CsACz)I%l<0 zAr?qi$cLYQ$|F2rPF`X`C@g^s(vUJygKChi)U%F^B1qE25eiBZKGjcL7)3nYmXh(U z%GGEteLX@BdiPenty3fAdNw%9-E_#)&xu6q?VaVXoxD~ACQ5K~SgWUt=m(1K+UxRZ z?NhD(-lnRq4P^p1_v^IO>Sr5zFU`9u^jq`;ity*T*q;TO*GmdZ3f##ZfujAcKw~4mW zNLoaF5|EH}cfPug8Hy)nD|-@N=yLKCg>SO33|FD?+<@3dUa-j@FwaSe=_GNbZ2?88 z$4LF4BskWI36Z6_IvfSJJ(P?CIq(FA6%;C5^0K7jeTjt7p%6!aDEr5kS(0yGJUj~% z@E0aG$N8xV6lP>~8G!}d?b;Z;y`eN4qxlPQ!Irs^PRM!>G$j77Wa}AJ*QknR=kmb7etl9LaQ)<;i2l3?ag8`k$cq2{D#C@&rVz z%c}a_f%#A+i+s#9Sw;j?JU<-@CJ+X#yS}FpU899u;W_%uIU-5{L~6SICPwwGD3c|# ztzVK`zdY=5;@Ms=eHv()t99fsRY|QJtbMk%DT*v$Nuk4hhSY{VQk3MaYAs1VZvMu* zJ~WQ+qP>~Ki?{#~nsVd-P@BxK8j}rdoaMI#+;=muIskj>4o~UaGdo zY(my_X&$#tk#X$!8&H>=@Ci`%9tvl)au`Ngk3@AkSGI>I+uCcAJ#FWl#!^i~LmgzS zczsmUV+c44@{3#rVp_nkn8MYr&4Ji{RCF&WhL2Z)VvMv^I}?_^#vB#3v(T@-)LgUA zYA=KN6&w10_PDWH-7D*KztXE-Wn{$rdE97n8^7yV&DGQAf%2*}JZ+5iqV^All{|FG z*H^`znsvzI@LXf_W4mOKwz}vK3qLr^dS}E-xng!TbhGS^_mGPtwQbL_sK zApI^<(&`b_k-w5$i<6gSCnbH$kNveGUjk>PQ38ly2+E%qWz|;ZXS#xYoRq*fYhpyu z@fq_C(`@1f zub(%{ABnGUl1uQsgrEV%@;{G?DQ$27N#{(EQmNoWQ@;Ka5vNpB6R?E>b`8t=BxvGC zJxf8h=izV(#Q15eogo;M%z#Mv{FJr=O_wBbm*nmJm^RQk!D}!X2OdZ%Jfvg-)gE-v zaLc%ZB`@Q8I#1bEQzMGHw7Af!TRyQ!PSJDV;2?_$ngGQKBHNmOv!oX=jJ&#wGF^Y+ zf~J4=YU4B#D0zm64(N0#a zd&9}unW{}wQ?(_UfWw0$uL#8wf3||pPQwj_ZB|yhZOn33==cm8K9n}yM|F3Nf|+^7 ztDX%IgbOXoXAQf1es#?IuFfC}u8HXQIh?WOF$Oh@&r7Xq;kK^Fm^d|c9Xz8|;F7KJ zCOSCKJ~Dx4Mb4`6&ogAcP{@Gbf6Lcv%2d$lH|h81*gzxKQi|S8rTmW6X4L97KAGcp zrurTtTI*Dx(HN$Ig9LmEBl9FPlLT(VEjSo@%)Y&#KYyMnj!>hqvN^37kFE*?J4^*v zuHX0jB`0u!?&b{ePR$jtnWZ|nUSoQP?^2L3g)8Wf^=i#A7FYE&tTVkYezMBw9e(Ua zNT3?AJGc2>1vJED*VX%`ZjvjmnCLJc58H#o{|P9?6TI3JcsRUwbI^?ZRT9?PQ5LXW7^zR7)s!>pgl-?X?Z`&&AhFaYxOwr`$k%PjiZ$oy3B%89qukt zEl~Js_<8FwDIMNYNu%Q2{oVMX;z zb9q+zUqWN_7VJ9y1E*x^L_);{< z#F6_Z{6PWB0$wnX0x42@8pDwViNC)2g7Z8eavIe1ySeDBSu#ZE)zGG*FIQiH9UI=r@gmG7M@2-s22{ESP;h8zL>h(`$pIW?u*5`fR z^Pc~8opU~U`NeUsz3z3d^^3KmBV569v7AV&m@{d&ZU3TenRtx34G(fZ2G=_uW>{U< z5o16s2%z!n1~iyNg+5d0q_q8&wEcp#y<>a>fg+|PsXnDA|502rxUpVn=Q8C*^YNqj zUBq+GiGbe^a#(NHMSSN2RjrWymFh(qyDo#H4a>EUFLyHoa)w^xzPdw;eaFiCQ{Fz9 zzk9vygLgoIa%)@&UPcZi-9IQHM8Iw3~jvfs{g{qwe^KW;X?gSC_0eizee zDdM9h)=;R^zDV|h#rrmSNi61}X*PH9$Mw`2D&GE(j|4r^wL@G81*x&3TZ7hEMz079 zo}$|h9+zmlz9j;W z_e*k90G(H0A+H8AvO>!ATAB%2AuN4OCh~+WiEIGXA)FU4*Ngw80`{g72~BC5(C!QP zsl|Wqm0uUzAUOLY^(HUYbMfmP>SSpAM$m6N+)`vkr(SLNkAqp2Z-RODlo{S^RGC4R}B8{%^4C7%YR=h>wzg z$Hk031In_+E+M#CZBfHVL2dEf*}j`f#ac}ij&Gq#MV43aXl2SbMp7$u_6fJLne^9~ z$zn4{0T~6Q6e!`IP(>$ZT$}VKdjX*t{1a{l^nxSwAcy4n1qZf1!w?E`EU6}4`=(id zLCA4zbqq%w{q+Z;j9fAG_7uWQ5*_|Y!=NLcPs>}lf`nera2x(ET+T)3HNXTV5b{I> z9%y@U{oHo1wL4@d6@vxmNiVq+I$Mr0zLn*|8o#?Z7QQ$h-v3eu;;O{h#bWVnUKW2$ zz-UaJioh}HY2)PEGhXUIo%wK|h_#OLyQWfHr%06)D3wmg%a4A6-?pB9&)RVNa5kvu zr}xaHuZB|1^-pq}A+>}s(^obfl-$qEy*PVwux&D?_JJ;F68S`B=ID+bEB*hzFi5UDN%(4HOss#`o;2%Bv83p z--V`Er06ue0acp6PFvw#svBRb{cFD!+ce>HJG?+SrL};55RZzzTPEUfs z>*`?aK5(Al9GPd17}8rr4JS%2BS9zQhrKIj8WevewvVt)xZ#m@_wIn4x)k2Wl>O#v z1p3swP)E3bBWH9H{%{B^N->C}G=HV?3gn4(WR}FH)++2{n&?i7XQFRZ!50aY)BwoU^#Jtn z)i?~Uld>%W;NMD|THMG{`p)Pf6st2R{oC_pm>nDK?Te{bBsd6?elp!|cFF-1Hj)KN zCRH)2=!7rz-A#V}yrK*|3fpnCYkesshzu{OHLDAlSEB)DSI1LdVL!B5p_vEqfT@s$WjODzyesAMXSdPN%Rkg(Z0J{-C{1 z?E_2mMRBHDMwAOQarpq#t`xE?(BjK==-!4iecjEyQC0)j#hbpft@uB9Cf7{oPu^@? zzQ&q`UwXZ~8Ka7?&2JCh`Y(Y41fLxQj~aZiZ#72E!ZG5LB8dFXwaY>bQk3=4d3BDK z1CM~kr{x|dXy)rf^28$_WI<>4%6kWMLN-Ac?_UxAAK@OA0x%j9y-ry;zQ>yV$DTid zX3?chi)SAJ>wx-04DsD9`a(v+Qa`w2qZRPc2=@GLphapjC}#*7(~35>M9AZz5k*kW zudwzX>MsX>kX+v*T+5E7wdfzsR|A$U5hN_2;0~;@c91X{) z0OJ;QwZYY%p_c&q6VVWgnU$~hGEo8!#jT^*!Ir_-#A=ESJn+fd!q0#4b96m7RI zZ+nPqnyuShg04V`BmLJ2tPIXDgXaQ2VRY7Gc|Fg0yd7tlYvy-4zeaf&)ipdGaDr#q z!lV4DMyeJpx+F+DB%27=YZn)XZuxj*23}glV`AcC?7Cd^?>p|nX_T{4E`M?TPzQVo z1K)6-IgF180JrSue1P4HD=M4Py|LIcKA|5pQlP2C4ORUc#{@#^Dn8mDh%^=Y%)+?y z@v&78#S|$PLz~FfLCb*rGq7I*O^22zIqMpbL`n(0yk7J_^Rtv6Mq9REKiywVv%G7e zu*C$dIYKX8ecs`_Tckt{4i&;OI^u1;V_Se9fN(_#jNCN!OU3BTJfzeQ21e8@9CB`? zN-34z#{_STb`UBb7e84u9DV8_dAOqcbO7am5kPw9Ym8#v?7sQ?!dBhzHC06nM<>OC zClcBe+@jvhI8wE|yXcAD09g+rl5dQi#Ha2QBJkk&9W0s8w5i*lQO8u6X1$uqZxaog zbp^j!2YJzxanGV*-{^ge--+rxa0H5IeZBL}+&C-Oj2!}~S} z(zC|=R<#t>EEHAOfd1iX#<96lF9rJXF8%P+0duz~!hFF(ZPBSg0B8w)kO}=JbH1vm z+zdjW&intwJ$aFI551{f26VFYEV~WW47Hrz)@a?V2`~t=3xF*?g_P>|EAVC_mHi?`v8D)v5(Z89bwhZ2np-Z9D#)=+V^#}RX?ZI zJ`eweuu@Yy*|<+opfzLJR+j0Nt~bANrhcLjPrOY&sW?u=>w@iV#}W$j_2&0>>kM+N zz_x$ii=uxs_fwr}WcAy3w{kD>>Be1=B;)t7Bx?#0QJL|R7$z<^2&wxjHD4BjHL5Zb zN@aRm;-PbwJq*5me@~3aSS>T-a5#o0q3pi8D#YU=wssab!vVXOIw3>x-5@_nZ&v6r z!FrMkYWYjl8A@)PoslE};_7v~r(8uLh5z_PuMN2O5z_Acfl!&$SI598Se405>E6^q z0)x3%VCQK3$yjc$KLef{a7bPku|ktNbXllO+uM3RFaCNA^gN2aDEa-|bliV9sc980 zWgypY=mOW*MdNKC-+0U9%JsDM8pwDa3KrAp$C~tX!na#7Sx}vP*ecyKK35OfKi6}L z0+w5pG~bHyPZ%7p%oMaSj_7!!72{$r8|i6qQ zfqcYuQxQP~zkBkNEE$?b2Y*OSN%1FMEF#I)&#~Bn-ku$)#A!wumG!%cvbWETVGpBS z+Wr-`=J@GA(C(LNc*QpXCwMH2rJUV*?V}H_|I{YYsDU2g^g&4V#-9urC^OW5oG8aHm-SDFjc`OW`Im~bGlq`tYHfjo-c!_u5arT$ z-H9FvGV#AgrfvqAT&Gln{^7g@PDl+I4SPWnXIrH>T1IaKkh%(W??PeQ2cb=c*?cLWT{{YyRoY+`tB8WU)pGEOepaoWJteJQzx2TE4u(3CCoQLqYe;;5)kC!=ib#?TFOAx8O<$IH+=EIx3B~#Mtd@`s^4Nf zbO2>sd@tu}I9{I_cSe`UwR7*~oq@iBD9f{5=*UgO@88y*d)g};e}F=5xGQ>M*7_n= zRJ_1$NvU`RvAkYK_Xy#I z!5ZSyRW|Prf!F(V4v#F!5|3@Nb{~Z)>I;ZUsKhDWvQUWEAZ0tX^gY}@UH<&G_w%>j zyyO2`+|0*>1O?c@WdURWKufjCOcA^-X z1%=Q~VP(ynthzLYHSRwa~I@LOdFNhulYc? zQFtnvm{C0uCWC9{9T~@mdOg|OuiPX|>sv+X-$12st$8p)oEJXco-rfw403k4e~!i~ zz2nXCEFDTn!Vg4){i2iB(>>l(KHN9rsLoeoDRPS3spdlO?IqU`HXxevQFg<(KDbSF z-TKr25kXi<{%wxm5n)v_%pH8M;+v?@+>Z-E0V8}398DqkC-X^#^`)TJ%b2==T!Oby z)R(TR;mKcU#mhc$&sC7y{9LM9lj)pf{LP(xHZ%g`twUtAC*>Ee$IFZ~UHRH_%Mkw` z4)bco10YXG`oO6ZA%?bzp38DwCgS75Rh;Gmcb;_wPyq+l1UPPY0n`K-hE2Z1zB>t= z+MKOTImN&RJub{=fJo$}gEq$@f1`3CV3Aa$S0l#6i_-CHVOMSheUF^&^QOER{kCoWu3#|R8+hPLG z_pYs^PQyzxyPg=`q5tRw1M6-!b5k)d__o>id4T@FG;rl(sClRxFnny_bxgI6lDfSygyvqJB2A1_Ev*zO2)-L+VOdB3`U% zZhX~5Yky}c1pk{0ccC9LaNGV>1_7T4|7X7g7>Hs$FIjUSaE&IJ4ee~v83&RlG=4Ph z^u&8*9l22LhuvzRAP4R|Jx(OAgq(@rlXI!02%jceQE#vte%^ZhP4Y<_qb8>WrHTx2 zS>~k!PAXNxos;o(kOFeml~$X|lx2jL=UfR;!3>~o13i4?21wD+{25J?J38eh><fGyDv`WfUz>58Wg0-S7wEq4M@2&2Y==D^zg_$o?@a#moEuqn z*1tYp$$D&|_~=c1aW6SRVK4Y2AoNVLWbc9Xf7?lh$`n&ot70uj9lA?YgY+|JOG`7% zp#G3Va^e_!Qz>R3PZ4N$Y|L$Zcogl<+d=afd~8`u3Xqx1o=KnDdcb*OXj0GQt`<dMK+Mh3Pd)t63CTop$=E8{Q z2Hsg)2yuT5Hvbw^K6{W2WHRHD*6}KK;|se*o#9U3bBHS|E57LnJ~J|?V8)J|nLct@dr!{17`6nx)y_|F3w?!~4E4H+oltQYekZ5R z1fb~2v+|zpLy@LxCLyrZ9Cy7_6_mq~Vu-~p1Skw<_~Ud5%lg>iQ7b}s6{uGGpu1tq zvxsRDB(z55L5Td4%oo=_OynUNNUC?!5Uol63AGRyfsy-8=$Gi{foV{*4>f$7N>8~G zP*MPl0n1(u)cfsa#Fb?vPsw~!4qDDNx1Uuj`Dv8fhvG@k6443O{btXG0&KM4w!1}+ zN+R^Zyx2RmT%tLEk6&!nCuuhDu^ZmMi14f6+9hke*AQ}5l){cQPZaW6Sh3q#(dXGn zcD%N2O+x|yso{(KY+SZ5BsPk0-#v#LompmqDm!il%vl`m~$w~%v|+&&q`ZRnwg0NNQA z86QZ_y3VhvG7d6$8+VSfb4S|@iu>gpZ%zwpgWtPTU37pp8v_J z+aQ(TLa%NMw47ViB6WG`q9VMHvOVaBuekYse8kP+Gxnv%PPlFE|AdMO>Fq5h&2=P} z87pZRFk{u$=hG=869puT46T!-LIxmoSO?t;vTj0XGB!1?VR1*%e3wy!;fvHY3?0?_ zm3R}hikTOzPhm*O#BGut;M*iQl=VQ!uF~gzg5%jmTuruX5TZyZxHvFYn0I^pipZ!a+47FtI~>WWM=R zaU}XdHZ+K(arGC;7(l4D{R7+s)e#2Phk!dU+F_lBMefxTKEMWr4zgWO#ML5m3}0}N z%l!=1&{p_|TmSRWQb>naPSRY#<$a@*WrRkhvQC>7U3?CA{5H_;akRFx_z8Yew`4YE zHK$9*Oqht1=)#@70W9|3c4z%KMykgO8D+74tz0;a5-+$GUke~5XHRbX5uAre-~}WJ z5<;d9J8k+09Z^!24@lyXE_GBgDqDT0w-{naP~uloEbH>%BcM3GLksRywWTv5e@o^q z2EYE4iP65Ffc>@uhyns+A_Brcq1-qMw+@>NB|?QRe&g7^BR*(w4UdZ9ll+apka$~{ ztWm?MR&x}#s*u9jU?hc1dwNOxF3I~J+@Ko7L#JLcsJmrwaFjtDE8mTCUV9c_-ad zh7DOv)RVqyOwf=ZpDBfXw{*(b(cbe+RFQB)xY?ImBN6(6M_eVcgfSB;9!Q%L){gfe zZJu$zO-u`qY&+>4sg%s+Im*kW z;6~MlRKh^!XdPZ)1Tsf=zRv<66rf4fh5?B9kWGRi4*IDH)Q#s_VA_se8f*}=ZdLIb z(`1RZ{8UOHG_5*23uuEB1(A39qvu?5ctZAP0LE|b1v`*EyImU~q0y;OO_rs|e&hN( z-!R%7qH_;S+T@IBzq5doh9{Lcbl=xrDv6i)3F3k6Ca0<`zm|yA=;w$a>q)N@<5!+N zLCY=VG2+AwfWMo!Min)NTLmq3mZRuH={r|^ zU;^x2J@AJQ)1VPV0C{Qplo}ZF1pZK0hjKu%WB}OcPz;Cw%-l)NaIYQ2t-)-tT>OF9cV>vWYD&h9PhdT98m<)WLG*oZ9{5(M69|48KzLQNQhJ*J>^XBbb9w>g;c zHsA-acR6IsEg>JG=ZCr$Ue_ya0VplkMQObVoNPn8sC#LXD1J7S!!f|Z>ZKF98sp_~ z;o~V|a*E^eszRV9y7}C(?#b-rgmn*mv1Q%q-%Zk z+$xc~S)xRT7OR2!ekOIWs->UgS@YS9bo0L<`&!K0%mbp8+j2Cx^=ZmP@o+%;@f4>- zc1pwgEc2#MmaC1{;ZZL_WwjEfVkeB0HnA&Bskghw&!K0oKgStxJ%u8L@Zc$n7 zwmZYbg~M?H)(?1PxHB5zCX+B3-NM6hKsCjRs|8u9_U|Nbr+N;VhU{&O>y}@dyYL{# zWx$EVqEt`YIg>`I{Vs9#xm<%y8WAuVuia-Gy8tqJ=_cD^Lg)8{7Pu`euK)pQwpX3G zPPEv8L)T|#4+EEKy`vavSx&Rf3-rMpN*e>Zpm~sWzv(SN4?9fV3JLRVL#LG6BNL#O z9D`=zj1(6gvnR6{P{amkn`!^$*XZU`{Hvrq0NS~!0U)4f|A05zA+V&>bPVeLtGA^J z`?i|DWpCiKV3>b+N6-bvYXx0B34fBOGwpbRyeqYI_> zogVG0@Ri8{9rDE3`WD}e0(bV?&GCG-7Mrib;=R<@NplUmwK)eBP5^1-n>`nt&iB6f znuL34tqyDU&eXhEHRx_?f|3j$dctfL-w$%(=N$h7A0pjbwDy|Tv|kb#-mA_FN6_R) zunnSw{MJMjzcv_so-~{NE?7_`w|^$$Bj2WXh***HaS7jm6vU-1#g47TTGtMBtFE=E?H2yzl6$*QO-jco z;(H0Uox}%^cYSm={O+G>7=S~}hqD~fb=4c$@fNDBt$Od(vEA>q<58805g1(R2ma{8 z*Ldwo6TG*>&TLJvKF}_M*q{GNt^_PdinnD9{y(?<-_#3sniCN6)g8 zU^VXbZp!h<1mNt80))2dc{Y^cj=W*HIz%Ylulg7HXP!(Li-)XRl-TB4_#59|WLbAS zpYit#v!4tlXu?v2aTmn~$PSQjg#2n%B6Csxa|yRgRa);eQD8vKP2#zDvk?*8?PaT7 z@mvc#?5wV@7mg8VO4oCy6i#5F%p!I3YN|`@hsFmq4I5ldU;lvO0G;mxQBMXV_};T; zBQfLlBu}~b6&2`)Vfk!tLPx-Cq&x*MPykVUG_rl|(Zjp{aJ;FV7U&cm7(^M$J+6(+ zpO58ZmrHIK$G-<6)fvcots5eXg#M^Znl@iIk+G_fqU*N-Z6vKD6bvWWAKJBjlOkQH z0;mkoe|+6z z3RMY&?|8Hlt^?EvK=7daVB6H6j?^rcmCZ8c4%St-X*$Zj)BE&+KTx{Lbw9jwJ`8^= zOJdyd{1KO?818Mqjst~ZcrR)Lbul**xhCXJwTiJycU6oCEUUmP2tsFm{`9OmFDsc>UZ5L;?n79zGh^IIn@ z5fJ36iPHN&15g@eR}5dC)H&eT8!zb5NO&WvFS@BcSPu$A)&~74b9u1i{80YWqzzCG zrD61yH+~vFDZH-`{@pHn!O`6h?pZqQKBO@r!AL?ifKa#MRc_HN%<xD^zRnY_sLfh^R!Z?ATrpLVWpEmwaPY{evf z${*C%vRdxvWCp3E5JfyrnygPEs~yUnd09KJ6ldQb|HQ2q|7qB-nGVc&RKcqrw9HDA z37YM(-H<-5!Bf3smeMLE9vv-9>9bwjHy?b3Ge)1;x~{3v4|N$wMiS9`Lkv{H2RT^& zfVhl@g+Q|!Ke(7z5uRC!_osnqzeVBokfL%|u*|n)vyX~`UY$j)vS?tCcxX#6i#?K2 z&#+==lfGM^YzreH?PlAx7{0=w@3ylH&&Aeckvm79rZ;jh)P}&^lq2-8L}IGTemLqi zKAym+4}_7NFznhr7(!9|^;9>zwUSG7YVo1h>9qVbJ_Hnv$q_FQ))>1rHI&(o;%*YP zp??j(wL1`eu_6+6yPu3&4<7r%`y?GoXTU9bekiv5h2Va+rrHJuy!Lo)atmC&%xnIW8cDvRDTqvSTrY67-i=Mi zt>Ox_2ff z3PyBqkK9-j5H8*1Qd+fKFX?m0o-ADjRp1MqOy0zTac#aAAT-jMl(s^Po^ z^o&eMm%BzK@u}?ZdN~R}iMQ+8p+pCF7b&n(BAX^kI6oKn@4e;+eR$|Kl_q|Y2DNf} z{g7FL2E{3~#uVlI226p*^f<_be`UfT+ZM z)B#Ik5NF|%%I|d52E6&oi3;!%ur62H18pfd;7AgZPy59p{w`cw^MMad{AEU*7Yif* zgvor-V-hNj(*kk0)k9`krKu!xHlnbgE_lDcIoVBrM*%L5c!VWd(5gz!prpu=%^DDi| z!t(uh%l-^JPh^4Pl{9egCsT6YQPKszGf!MXQvb((OSM5N`6#Pcj~}T*&dsJQvYwePXTz!G(~F{8sc=0E3oe=? zJ+8H8m51D;{~+R7n7?HsisS$$(_{7mn3$(roQ3SripYn6O>M5J_{m62nENuiTD;6s zo){ITDP~oxO-W+<0IVL|GZKJ;9b;hSN0=_L{gGH(~pq3G*#9Gpz4?r z6psB)^#`+V{gzP^Y*=ma5hsiwx$$tJllSX>9sL*|J2Q9Nam1RX$o7U3X;qk4TS1R{ zaj7~*8eU%dq1=(2g{sc)jiai5aGgM;E4UgIBEOd-O@Wf`Ni|d$5sodrR7ks2xF3sc zAG>lkn}Z=Z5PXBLmU8=-Qegr*MU_ODqE#1n=hlH-@QKeZ@1OV4uE`X)=koV37A8Hi z{a~m)6}j{xhZk9rnft>j=;`4P#h8|?z#OaftwZt4xf{0?ubU-A&h_sbihtpf*BEUY z?>%qaJEQa>sHId7h?>6P^e;&xiUnX?W_I>_0_cl@3GSI%BKpZf&mnIa(2x(=!J=mW z?ydkVrT{Aegf8Y!=x}fO^rHZIXrHVZ1C+noX1XJ!15p$?f|9qND?!^%O^6hI3cL4Q zvZQg=bk4bDW~UzHZcN_@*V6{bZ-p!+8M*G99;uOW zp;ztI6L>)r1AJvNT+eTK3_d)D05U(a=&r*+$1MtKl*&+@mqA*ul$$bRmhhd;%wHpd zBw3YlSr;)m2ND4__WNVS0tJqu%XK*|@W<0nVesoZKsfZ@9_X)A zjJV0O3H$aIN!Iv5zZgRR4Z9{teFSzl>}1{ zKz^f%63{lAqXmDrwd7v^4jO)c`OerWEl5dh^|{iYEh~RL;(v7IDBxpjUeeOK=GrM4 zSRCi?9(mn*6y>#yUaukEHv0Wtg)|3ZU2X))7RkST3aDfsrTedI-$VNYe$x-pywww9 z{t^Yw1|Z)sH`{p!@mDqKbIP@Bh|b=KdqrlGukwcp_G7#jQIZzUFJl*F%N^V1rCrc~ zQ&|7AV7Ys*3q^=9{L zEaaj9#keZOOrrPG(jgnIg?2%qH?5PliKx-3=mW9&BKp8}?NRbm(GGRLQ7b~5y(_%? zHTEg<6y+8)TF;k+UJfh}$G3y>tqm943>Va#*cRywovCLs>JPEtw!WLmi>Y43iI1zb zYrO8pvm>r<(Hm>SFM2*zk?0!TrEv)L_5?f_11KaHvhdY+Z65);*hYaI*DKb|SmzLp z8^PngAk~1QT(_m)(^5l07dHwl_-5|5dv$)A5S}~#gVd%$ZI^4-=p#dawMI#jrgn-S z!oGXP&k(hxi81DIT8o&{d73S6pNBT>eN#$@a*_jxO^E0rOooeo!yZZE2GJ5-qUN#g zWnq)$-$e7he`VyJf?LW~WoO$8C%}ZLP0;s z8niKx{Gu5;`N_bH^ATC_kv?SQpGP+Z zdX8aqAq1XWZq$Fx>I0yCqXfd<)hknuzNaaN=Y$gt&!atb_c8=(6{H!DtOQ?tbxa+2 zFGfk>F%_4{H1wv_V{E?4&Qa3ZnUyZXO?@aF8k#P)X@@02?qDJKaoQ8LV0&+i;5qa|8W~F zSbN?|BWjJ8-L`>m_Ed9)q1+|DuY{HVByye#@F|SZIq-Y_#R&eCB(AQVA+o8be>Mjx zgZUGb@4-JLB>}2t+v$(_o3NdJzlNcB`nsUQ=F5oI&q0hox10+YuRL}Oaw*yiUQ<(H zHZ1&q*NtghO92O8E%2y?qXlu3uO4vr^7G3p=f$_qH#=e8zl&~I|MB<9aA6Ig1P^DA zNIIVdEO+JrlzSzt{p%jC&)nxWc$9Cp+e5%+q7R{G5-XGAk;>n?Cwnwy4B!!ftSL{S z?_C337sAJ`Tl1--UHas-Sx&~+N%Ov}w=vS$9)f^$&Km; z@Sa^L-IG2n+DqR%B5uT&o0ksb$2qF2o0@@kyK}G8B0oBIP#r1bX|ZZsgLB_Kzu*=O zpYHe+p8%zuekxXX#q0i^WlAF&SdIf|zhkc(JiW5J+u-;-PprLB-p$nQzamCg2Ek~# zvZP00DM>0iAiy&(i0ohZ3_6gR>^z(OcDc9H(oL0o_RH&huElHNy7b`u;;5-EsI}m= zkIVeE-XNjq!OgnwX+&{PkbBF;fzEXD(|ETf|5I~g3}C9wL0Pe=a$#D>Q8=TKY-!RdL7DN=uXH zYHqgOB{{+csWc;^nSDYklJ{fi+Ax7jsWZTilhI%>m9va;B4I|oZU~VZeu17oE*i1f zF7c#KvkKPUtKRHb(J#g=5U6I+! zURw(pV4!>Xeedx7`-7o#(+_U%=LKGh29{cFnCzfQV;FZrYI=b=U<`^ef;PpRv*-sD`9`hlfuwSU`6 zz$^FvEU^}VI{$A22_WBRDge>2I_&*tFb>NCmNRh{lC8@3f`Do@l@$D%g{5l5yxl2y zLp!2`QM^z=$SkWkK2zL82_P`R2xVU;z@q5U9rbgRxIu zuIo-DI}wq=)$;(>=;wqF5}{wY^mq@5M@&V133du!p!V4Es*OzcE*yA07N>VZmRc^j#D2#bA+QQa}fxsSMye-VIkw|1^f& zNO&uJ`xf8@1zHMjpb$LaMrs4wlK!*M=Z|&%Z$sp&$q49D{;JRp-7lXlo;v`(0+T-2 z$5p8)}EMKhvD@00PZ;Zc7%gV~# z&2C?!;%eLWxal*{yM>mEeXGP6^-lcQjMak^taw1^n$|dQk(77el??&b4;&tg@p#hg zThg*%0g!Bfj3d>ECFP_BD*6sRae$xb4C9YDtn>1Rq;4xyqofPA_clzj?rUSj;M)|j z?O&4^CggEx!1)(uUBWsEoD$ajjkF?O-%Y~*v%_K{`HszTF7ekBo#XWM zpFWXt0Q`rW0nA3g-PdJ-cK7~kMzZ1fL*q%bAfa7iS?5a8XO=lK{HDrqZX{50B{154 z#vGpd&#ijCVs7EabU=tC76KFMBx(QtLt!Iev$b?6i@uC)H1-U7UoN6x9+T+)F6!>b zhy-4VLgIIMhY1Nq{>~A$D^cFEvt*w2<9u(jdFolyix|5pK=Ksh?-MpkAOBX{^Nu8x zZr?o;uk&3HXNG4s?n#Loj9c`8?8K$_iQ{NwC{VBORTws9zl+{YSd}76XUPD1YdU7` z1_y7yj$x_wq@m?W+Y(3LTux*$In6)}?#V zdupuSe42Z%W^?|RTDjTRj)1Y!R-Zbjt~}$)no=qn-I(t$BJK~1W}0=)NZ*I25fekB zvMOr;pHtE%=*q~W*%!%^&_?B=4q0A`M#yg7a2b9TEV~fsLVTcrO+(J7obz z4U{SzdxvhrMw>z8VM9dIVF_v&tZZQM;Ulok5SS2CEvD_Q_Q9b*UK~}hG5D@0$o_x6 zffP}?dvR)a2D$)kru6Zf4bb}9u=gbq7(j7kdI#%&dHvdyv&y>iE^e`UiC#x06LSFi zf^a+IJot%pHck{9+c0>zZ3EODUp%IZVe(RJoVZ`VlT;ySj5Z@sqtl^G3&2(b z>*Btrb7;??<#vh~zHIdM+Xlb9FK+h-d~CqG2>|6e2p~%Iawc&0it8QLAT(m>1+eeS zAMzr$s6hc=2;l$B`Udd+-Jl=?J~D^n2j2oK@N2BRM7!lplm9KY`6vE5pz;ja0zl?! zcx0if&zWWqU>vFU=~LgStpdueXkgY-OGG{S8F2)NIe{6xm1xAD<+fmk4P-l7*0HOZ z>O}j24-rS!HQc^_JS=&WT5s!EdU;$LFST=SOB|=DG<5A3FTDkD0X4jm&B8O~!qX!q znoz(=ZF|iqFaJE9_;XB-0!#CK8#DjHZ!Y;xXWJ#HZ=VlrOOex^S&|*AWbPm*OTN} zdR~*8I6SEcR2Zf4euHE*k)KL|(c!;PN`>z}_JPn>=1Od2B%V6=hx1GiN;$v+(kA-9 z{z7p`RI%yq%=Tn_&V7>mlkDUuL-%QGfvAn~C0-_DN>s$se-_pOB{v=RCc<)gILt)x z4~FvZxDo}tAi6kW#oi83<-FU&Kv)!z7Y}fApf9$|j34Pk-f9r#KL?nRc3A$JN^DPn z$dj-5;tD=@x#(dK97ytjwXdc!%LxPgYg3?8%)<^~^sqhq)R?Fw1JF2a>i6BxsM_*g zW(k%g#r9$*ic8#8;VCq!3_VF^U;~b@#QT%=@6QXrFcheNp1!Ha9c;vpcGxw;p7OALRTMaAx7ALv{Q%C(wHl z13O-;2l0QSiUBo*H_iCB(nc0}O9E&`nkiaGJCz$5Csq{ivoXN>pzrlq`Kv4tH-XU=yGvWz@fZ*YR)}uR(d+`7 zP5|GLg+liDX@!;HvlrGusc&g)m>36XpUkok)+!UC$+6SeJ*&CDW$F!IM zX81CCQo)cC59QKTDc#2tp~LZ>*u#zeEW^laO6_CB2+Bi`mgfvuU4mX8bM&B!x>`?S z{vGFv$D5m~Fx@*d7}oZDXD@)TRFaReo9kYJm@m$=)iVtktxJR;Ni;QQqbeVN zYzbKh37Jdu!rHe;RjZSq3E?n2OQfAI_4-zM zk5pFlHH`}40)it$NZ9-njy>1LCb!xQ^E|^&C?FWQ_Zj15)~74{_9Z-FvRmj8owDX} z+Kt}LW7su`D1$M!XVt1rkC;E?732xBS0b2WK@mdF7mK~|d3>4bJFUSkgJDdI=R=d! z+GGT%3m(-0bb8Ws%!vpVEDyi;NQCCY;ntw|g?8E(x-}L$n0pM#)aa%-;0c@aL zsKSfS<&|HS3j6qw6WM2Qzu1ZJq5&)ts)zuQl^GX=1UEUreg}6XK#y6nKlXBleDC|V z(g$uO1Cic5%I6}feQ>c2ZBRp*=%GJ1&eME!Rnu=!pS#o*Q_yP+2dtb;5@g|o0Yxk3 z-uKb&Wqu$oRq9Jcp_S`dtd!wkPF0AS9bd?E@%a)eJ8eWE$8E6u^_nv)^6tk01w)^_Gn_9)x;vhUddfKMl1Z6J;>5p~A?3JD$|0){w=TXsH|;Tq zCqWCAq?uKJy7hc z5v_m*M3jbPANHz->c9QS8)naqeHKS8H{3A$?J9nOmYuiJVw7-u6+!g<{c( zf;CE_P649>_gXd{Mp~QACbCJ=&=ui_e2!$(x*H*dDP?_Wyz?wNr;&s>R*|$rzn?FK znDy+Z)7)5)p`wXD8?MipqoV)(p2V$PhAEQYt>S$vex;MmQ3gG47V78#X){3D3ftbW z_e8;Ok72rVI^fyL{IA~xr>16i4)8UayH*7rc4W$g+-n~?_<8*jiYE65t(|W&uSJ<$ z2}%q?>&ttM#ZpHx^pOqGa$FKFOJl3tW@ zsK>$iU;gXkfXn+pOH3AjS3{*MS z%W%k_{?^@B02liV=WCo7u45TMvXSbWeMH&ms6OCCdgU#6rZK4LkukAQ6wv^t9?EXi zP+}iWy7gUz_y^Au+RPU>UA|9XdfIb&_fOL)dJtZUrQ$~$*d5R z-k;-e4y*HrFDL0=04N!UL4Geb9uwv$KbdFBGmt-JtN_7s53i>@Xe5t+`}&~A!o{SM zztjh%mU^PO@gu)NI2HyHC4Y2W%v1@`!2$V6t*WJGmHm9xqli;@nJ!I=m+dUIJbs_+ zh3nYw**lZ8;-LZ}{M%Qr4Zc%E(#hR+r~TV04+*&@p$3(J=KpSW0~CnrNkhZ^A#a}} zIY3>2*$k0O`*yKNc|jW{RU(*LxuCZdj))Ey6lI<-{}S(bVZ&cLu_^`KE4c^tQ(R?7 z@``?;Y>#3?hCjThYS7i_Y7v#o9Y@aLCiGem$GpkIMXD8FF133n z`coit+adDntnd(81@i`Vaz%Th>{Ou(&Q{l+ce(->x5L(=#qa!Ufq;f19+ui`z4jao zvj1Nn(s(#OyD1AXA(+I7rI)bnR2npaJ~-{F_Qu@_|6$lPXx}wZ+rR#1d#i2Tt_ePg zrC^C>0uXe0nCWp+@&0r=()0;_^rZLONbZ-==3B(yH%H0md6`1UUag=wtt>xDT9B^1 zC^uDVmI*@S$g2J3Y}n+fNoOQ! zg4Ufk1%2)w9)x!liF|%MS)ajlSqToIc@!94LzIfoATnCaM4T73fT3t^VZFqBeB6so zgF{a1^<1u?xx*LNnCdC?jQj!l2O}DmZ!wTysL;36yVs0h%OE0^~_fo zeFiDN^Yc_N@c8Ro6hYtleE?zrb^hSKgWpY!?D#%7O__8uC97wAF4#w(WnnFtj z79qa>eU6(DjJCYoWK=k?77*Nkc7%q?s)~jw6a_KJz>=&#Sc~os;Fw%HNec#ljo(MI zR0+VijIC+bDw`*rF8BR8-VteYHS=>w%+>%e*qSOj=OL)UPJNyy!pB?r#xbDh&l}GZ z^=Q3{HEF5HEKOl^M5}Iv%JG*JJEkq>m*$H|Rv(wtGmsNe0drudUIK@$r zv5v@{S&=Y^C*){7<3ZKHN=aSJ4LZ(`;=%NNx+M>WI63#?|-bqnk9c0YoAA zIpU<{K;WYBCt|%n{S8JC91M=u&98&;=m0; zmcHl;k|M=-vTs7hibEqdWBBo2?>dS#jG$v1-uh^0(JMq^tNATg+H%Ws;RC&%36>gB zv)tm$^oCJeNe}O{7ueL69L5w)bTKQRG=-5FxY{cv9vU~LQyE&I337fOA*-%p79*h- zG^;|Pg9)zc@4I^46JbZc-Xs)X>Z6WHyL)GOKU}rBu2%hgT~8HY7xjD|Tw363%3p%P zq4*pA#XmK%|2;S#zv;ipFdM)D9RehzNq{Ky!mP%2; z{To|9sshR}SWZC8^YJ@3XCM{PM%Uc4SXMszU3}_ste;1(-l9?ch#Dzk7vwis7o&#w z7(EtMT8f2&zVnUbe+)BxHUqTVJzjQJBAQU@tKZ0TlJbIG#M;Sx2~_GyZHet>f8#3Kx%4FPaA2=^YKF8r$r z{;weYf7}YYu380YN!Ik{+QPt6S{^1(Vy67yaN1v4TB@B0aD9<} zk}byL=U?j9DirXEwgK<yDcP78?Z;fmBD9;qyz^R~UU@^q`=H4^Sf z)}Cd_!*_8NruqYNlb_O1oF-;^C6({&(W1ae*kqpcYv%Sz^Kd4aZ0&v?{T7qX(aITv zsWr~u_ol6_rf`S|y!t-$czC#OcMAZiNs84^w=#$Gp^BlD#?eC)9+Q+eNmpA_$zhs` z&9ws*<6AcRhvp+Q*ipYLoQ@;joykPKuTke3&}-Kflf=e}McMxx{}sW93Hq`nBLI8F zXZg~$(`b*lF!_G^8{>z0^6tGWFVkb(yr7gQBkaD-J3u?fYxuO$%x#6O-&V8f1-3zCKnU2tY z03aQmmv-oXcFz&=^lB#4e~O2Fnv|Y(byDf6)Yl>$yD5sb?~Nf+1EibEJklL3=(jI! zZ{fMlSevnn3}m%@OEFiUmw9(&pN90-XyRvV31bET$^chaO9g;Qo3DUzM(5n^gE0L* zfr6iB)LS|65-*v9pGYdd107bxdWk6YyuSu?iW`?h0dk{<%9K4MIB(f5YY{`z5sOm+#(sV(!{L z0YHsVuGqVnJ`B+q(uggYrngLt{4R;!KAj1Fp=LBcGZ&?qb1;s*ryUrY-DAAdCm%N%4e;32IqtjdwD^5= zqha%;n-7`3pz>{KG{EBo z;|4e)UAP$P*iFITC`*K=NHAws#O}@{P_)odLW8N16tCoULwbr%%v>V#=)?~+;Kb%6u=70EdcDgq$6HEwho0*F12EWA#XiU8SKcMcb>yTo*(TAE-Q@oCy7)1ZO#1Q+E6aJOr{1*b1`23 zzVKJ)Vzy?E!Hjqu04>di@^PdyM39Ya0>TL;HF$YC*^ra5BExS^n-C#4NJFmF7+^OQ z$)V_+3sZUD(y0iVQdsmGPL%ilw~Q(h%Y%LoFTmSW?Cq`+b}o#ODW6KOz^ZWD?J z4%7!NK9lPy5*JEDL}EK%-IZP*PG)}773U>Qv7Ow*_q2Day6?hvif|nci(#B68oH82 z$PUZ3KUP>oe+>$Ewpt(B1i!}2-Lf^CF=!M08JAGX=NmzO?*UhKerqK0U1C?A{!s(> z2Ha<`NsDkbB9Hjx6-C5BQ&1QKKW~NUhem$E=eP0k%8a{rnyPExn>QiMC$y^GX%@S3 zIyLt>canqnM&%NH*N3AgQ&0MFJ&pn%N`xXUpf8i@K(A&=ut*{op3RmvJSnh4l$c&H zPb`S0_>QVIS{53^lwhO6#A4Baxgp$XYNG%A=9VWo=xcn!WxP;%7 zRJ$Qh{u{*IL#e%m&}ZHtXrag^LUM&zsKS}{4N#P~3EybSTr3i|HX}o5ERU;^Kuu^X{OBYQi42V8~F3@?%(LVD4FkD^zuRdh+ko-@=37Yyh- zL#fQexrsqX8ce`PQvf}-Ht$ZC@YvjX|b?QThmBwA9H6S_NE)OKc`Q*KtTR`-zkF2?FP zv`bl-1{Hzff5HRu4ZA6I9D~KlmpaNJRZ2Ynq)Q>Ar=VHOTMf zbECAZHs2wVrp63F1mr!QDo=ciqE(|ZK}Dn0#0uhG?sqJ4o%X)MD7*(Uz_7TsWua9d zJOQkOshz9p&1n%Dc81mFf}!;W+s?CRjqGy`yGnllO+G+^@$YZSSOTA2Gwtaz$fX|xR{4J>O@cwil^!J5Y+TDwK#S0egflJc z)7=KGW4$Xl!W8L3Ztc4ETi;`RmMYP@I#`kV$5tpR zXy#92W#y-pcldZ;BlRcWCEIJQ@C8*KgDmm6GVdImDimm@_&gZX<0khUWs62M|cb+g9x2`l4-%6arl{FpOY5HZ~Xwt%OfsGIh z%F05s{GFHkBqZuFKmcZ-mfp92xUG2G6!H~iH%O5v#>v+t6k0MwRz@UFa`3X&@^fD0 zqjYzK(mH?UcD%(_vekyR=??7NKrpZIzIPLAn=y(Os6GF+K8&xRsc%Z)7y&-ZK-VyT zyJ^UvirPsreuYmPrhxFJ6=qTg3Fdqm{IwYKl87}vr83_ zD8UY!!A#V#CbAI})ACvlazMoNmj(UmH*EN+I=;nbz!hvA@hBvOD7*^>9Y}?4m)N`q zqVo;Mtq^vz-YXfRJnmIEB1Oa25!)Ys42lUD^jc6%pvuM4gHd35IAcY_Y;wIMnh+o) zLU@AVi<}D>al@-*%dt*xLQZ zx6eVDLekJ(&p%$_yZ2RB%iljcbh(=3SQqD_$j3&_6B2DDFxOgn4=K4!QNM&= zelUEshcfz|(k!E@I!1Q)i!EO2c83;+^< z7t*gm|MLfL+NNbL!`2>r5{YyPTn_af>1V}X>BN1OKnV;Ojp`3*!dz9#-f;j6j+;Uw zX5l>$3W2O3<>m&x0ZoA)Gk1LPxf!^nh+P~g0N1fGB)dz@4LToo>5D;(`$OP~1bTqr z7mAmQ7=UE|ont%zB3ST6sS92fLS)Iy{Ziu=NAb$UwuE59VuB3O zxzkXzt?0Ka#&C`(!a34k6)cEqdK8>)^F}qunF=4TQhr`)-2aiI52~eecM>uvJ=KIC z4zR~M{c5aSIZjTRfGdPgZn&@0K@>FuY=$}vf~-#mz+5da zzE$(MhKx>})_k9S3@&%fRZ;rq^IldtJPa-3DDHja2^_ZpON#~V|9G6h(IWU?ud$H$ z_l9)87)kjIvP_{#m?%fA<}?70}34T&qE&ea1J4~`UDXiSa_ zdkiC~jc_8LGX=vvdeHd;`wM&(>D?ib4!GEnHI1}s%3%o!&b3@>+{_i;#K@noe%9|9 z_0bAqfo$Oa<%zfcDDy1((1kd}noEyZQ7YQH-6+gk$*&wRZHYpQsi_ zb*_20(^fI|c{NlxcyxUw3bz)VefnaEv+Y$pm^CW%)Yj-G(cp(Iq78Og7P`` zv(Ix;g#@R^Z5vfQ8g(D7@7H3H@kk^Q%L-l4(|!)okH)Je z$l9ApdY61`*F}7$`*z<^_)}QU=9Tb!G+yqAP4Q``%$?+i^^SShP${I}4~HLxrex;d zhH8K~ALy(3gTejW*|Iw5Z1Rgwx?39^_2Miq)1XtSI-^k6JP&TJ#-iSBkXja~#MLmN z(aaaJ=hap@vLcvmQ)HHC@@m@TeX7}O>lO;KGV}|U#;;t%1`y2`>+%Lkd{ghS@2sen zN*x|Qac`Fuw^op$j8m_sA1-1C6W2GxyzV1@FXg8SDbm#B0e+DYK$cQNb;e z_UcaZ2?wYuFwcG4B+c~@kf^YKbFv?yN%&E;Ek_csrVZk`3}RqF68jfYreudVA6TKy zpx;g`UmQ;I7smZp_XlW}h!f^Cqi_1^jO7380|5*db&j?B&MjA6e?Pqw+WYn3oQ?R; z%T{Z#f49lrCtupFE+Kiw>VLTJEgm^PKReoAYR^{%SVj0lURM9w@yE@tI?#oY--W_6 zYGt);Hf^$?Lje~3!evS&I zYhqqTn9(mav%|4mlwS=)pkF0+@psqMM6fT!p~w%CKT7u<=pE~Ae!lZJ%Wtn6F%*9U zDPMoFyXL;jmgXau1~AFQw#|W+4yoGqc^VwLEMGKZ`toUmVmMwx_DrF=7ThzY0h8aQa$;`EwCpGZtv=dtvma<2`xrvyOJFl9fX?qUj1JA1N;p8 zrEBOch+sOeYCAIT8(I~X7Hf<_x-wPNRZ(R{uasX?D?`-aMbDuCx{R-qD@cx}kau$T zs;Sw`wr*Z~H{+F`%0bAY()L5}btfmQTe`&(PH^=V#K4UC-v9wh%7MzIU zlaQ)NE>3E?IZw~$oNjIIa=RvKovFmZy=Z;jHtplHd7^>JSpHpItxyTEBc;#JYQEgG z?c-&{^3VAn()Oy!w$Vz{cZL0orc7XA)mbXi1*3VU(CMK#ip{j5cv+~j$vwkY!x=)K zBeKZ)8yN#B)4(sdL1tZ6z>EpZ6EU-&MRd^On!Pj95;5^TyOj*MQ~x?c*Xlnrb$J!Q zL*nlscH{jS!w-RQ%LaT(^eThn${}HSh-w-8FONvN>;NRD9yQ#r&H8OjMjIOOH1avJ zD>M%l%6&`DryYUG7xlOdBdo0%As7#`6(HJ0vA~3frjgB@`M9El9REcSJeyg~eD*p5BL+K9>C7_QUsw6aaL^?VRys+z{AS6bF&u0%eIee%I z5Qlnm9N+ef0y+~$znQTD8_r6dO_E1>lib0~viMxQcq=yE671ix1F51qmT;ZLFv1fV zQL4+{UgUS)sWf0Yb^dbzVDYf9>*(+c-R&8d4#<8nW+WCmqt_?;=ZgPscmFMu4XThj zQs>cRe+6^KgUc!$_L=BNn0*paQ6A$r!z#Xp+lwVQf0Oi^J20aIR6{p!Lz;jBAyM{* z+Vi)Ng4GRSqC>7hM4&>Tb>am*48_p7FKHWdQJJ1F)jKt_76EIh|=zfb5V7C7soRZ*F$4|IMwP6*Untn;0n9>JWLz=!~w78$F<%$CM! zv(Wp8=GuLCO(cZkdPHjvG;_Og--;_^kC`(Sk7)??n?8{fQ@lIPtB~5B-8ObbKUPi8 zzCp{;`$#ZTiq$ji2l+q*-JnFLnH@z^+vMQ;f_$su0y*mgYan#*piUg3Ksd2@egVqF ze}!dQtjbVh>Q*9EjsF%(B3A}6i{cde;T(}4m_`jSaaPreBfL8x>3N-FY9dCKCcyjb zUpG)xGZNO0y1L~M7qKY4)E<_ju*3)KGd#g!;}|44X@yFEYeEDBc0#J0I}PD`Uq)Si zn_P5^Ri-(zDYR4zJo(P^R7G5T+sjjyz6XJ=^i#MsEAi6AwI>kAgjhl#X*DYqZlPj8&);kyBf(iU6f1Efm zwz>DWP$^nm`?krFw|Q^O)q5FXigIC+q1TADQ&uymJdzxkOML}s)4`;yELWDouu0%! zHgn?Wj&NCv%FI=))XX^<1EfVdtB1j}>kk_VGeu&BO7nZ(Q^4* zO{bn@N&Rlrv!x#osq=X*RouD8ZEoquon9n4Hrk(8lvf5P7U%s|^V;!PPk+mx1=0#u1D*)uH5zP0z@QEqyoCgOfh&>BW8XsUR6j8J=;UWpD zARq(yrw$^~x}>sify`;o?ofvfPun0w_^J5WfaqJ$&!3HTlI(S+bxL<;{$1hyty=E) zP_O#Wb96{EP;5LD_vAz-_ezyS{W4r~W)0%sz7HuxBg#l6n90!#_j}s>3FC!UjIMVpu<qSE|53kz^Gtjp42i6P^D zq{65WcY>3BLQOD*0PQtxDo_If^S(HLUQ#bFN6g*H`QFw1nBYGdWMhAaD?`?&KS2{K zxcB2EtYa%amMs(*RN zOQ=1+fA8Or14b|XD|zN{S|Zp5GG)PIv#ev5Yi0z-pk=I9%=Sie1eplNM)b2 zS!j&?l2b-F!yldoV+-po#m0G^2|UVNGHkQ^Jb)WPgu;yd_IYm7JoNhuiU!qs5uU@w z%iV*DA)>EmreEOIJ`hlE*bY8t^%W$Y=0==F>Q-$GZj6OHX>jswNOx2C)% zR@GZowIETN*y>+heK+47g4Tf7=t|#g{c-r?$Ci(VB^Mhn$6`D$PQ! zLS))Q8nFv(X$C_I=e|`8?cQrP%091ha~)%rGsE@-`i9q!Kbfu;6hOHDjB8+2qIBddx?4orj-h80`Aie!O1~ zs4`p^wD{H#JR=up`64za>fL6>1cwo)&(V(=2YKn&Flks+b#9}MW~O@Aub4p%ZN_3r zD*0E`mW)B>kun2Z&R)Rni0M{#uV5nV?mG^8q~rD7?m?NFjl z(dw%r#v7st)X%Z;4wqrBPpXMcls3}=3@oynb6jI~T5aAKbq_qRN=>t!`wRC_z!+;H zqAH_36ts4E8{l$5OM?N1#+j1Knf}kf1TvK^V-#>nlLLFm7*OmhQMCIEP~>B2Ee}xG zPOwgy#p|L%E~JL-nqq;(rdicd+Qpi7)s3(w(U|9qBsWLGn*-F-a96+uI~e?k6`hO- z#|2p}{YE3XeM&3L%^45JP^DyA92>{R$MCV7>j`0YM%9H2!_EsT)_J6w9VwpPj}#`QpPhlZ z^OK+9Tslx1QQv`ZHoFo@>U(jcI*y%G3Bct)FxFEo?98OWE)*Cx*lHN z{B4W@uPlb?y>wbRz0q2{TeI1VVlmmDIlh@ugrn#g_Y^ySOE~HL=~{{ui&%|iyw%vZ zY!5C{{x@e&U;2*Rg~^;pMBAHW$>_NaA~flo3jBC;2%?p3As#KvdvwSAqQPI zf^JCg#jSS|;gVX(kHxas07Jr`1*|N!qcZapR%ibW_X>aeq2r>=r~pgQhhKSpmA|W` zjy2+$zIXV-4WG0(>50>vgg0q;a!E$6s0^^W%wGBf1)!+* zeE>^_(syO9vV_d8+t2b^rubi_NZ+AU#Bt{o2u{sh&AxyAZlF=~u6sB?GMV(D;!#`q z%+ch`?-HRU_%TV9;JGbW-~6l<0?X<0tPdp>A4)PEzGl*86zwvF?hB3(+`+Q8g&Sjy zvGW-}kBDl_l8852cHJ$`wcfNQ$y^52W4Ub|Cb`TUB}Qf@W4WI8@Y}JfQ@8~^Nr@7WzakZoz#RU+k^DmGDT7y z>T1KiPef4oIXvs~zcqpvz#Q8nFt+{6q=hI7V;{Ybbmzsk@TZiNl-A1&+h(mO7tYC` zRJ;ak=b%X)!ER?)(v@6JR5Zg)4U`jp`2b;3Lvt-8jJ)9qRjDmksW0=G1IrfN^PF7l z-v_lrq4OEV_wU5@`JWt3$wZl0Wvr)8dqJvtmPQFJMhR3c z6T-WtmJq2WYU`|;t(&n7Y{ISI$YTr`n223vF-KE-$_&@i;T=on#>UZUcVHwAtnSn% zbJeEofEB)h&r|?!PD=a+=a=}Nf&pp{6#ruv1NX#eI8NI9-1F#VTwr5*GaP&qJYW(W z2xw2y@r`Qz!CJ;`^OHzJwe&t<47C6@U!*HwXEOm-KOeX2^Vg+3uV0?NEQ3#C{$O*n zjR?Z0dhccL6sG8_@{+-T{1Q)~FOUuS;ZXz*YTgMLpnQ0EqHh$~l+1cx(DOE31FEV6 zG{BZYx_#!A<)W-wn^D}phQsa5Im*2M=hZ!N$vt7+5A93P z&7yE9K>&_KqmdtW<$e)6#Y4=BI(+)vlE_TQGG8FQXr(a6+&N!vf;e-jT#P$cNeK_D zHBOA3As<7I$s70bg;a{fb`1GEDzuvof0>^N)}f7PVss@9hY?OF2eSu!bsrRmQhiK| z)&d!;XDIWCp*+ZTAD`f*B7Q>JlPDXHc3Wo!1<`NHMm`!|5~yJ&7Im1MP6s2yP37S1 zW}M`2ft6{+5pnXzDTj8ZI{_A%9%35)D(TtB$12Y@mx#gA3nMkeijG8Q+rHw|Hj96_ zm3CiN4AYj87$ggCQ&18+!H)hHU9_nrii(;@Us5uD=WKBZ5RW+}t5&R2u4Ux6DL~TEu8ki?x)!$z?7Ww>xG^6c^^x3u z;o8(U0Qt5(s9$ALz|J!Zi-HL`80ki*z)1)R5@1cmSp;$kFw!ZZJt!t(eR>khNSOmr z!}|yk?KLT{TzX6}HtC~B6jZu*x82GsKMY6w#QmWp9nU-?ri->8=pT3IBBJ)eSF%WI zqv-J3v~j)k;rt~G$dg3-yL>pS!omJo0E`YAqx=$j7jU_de`1Im+4=w6RKN-b+@7?6 z^EArHA`)-8(-CW^n?3;O~Ta->@NA^ zSpmRc?4DjGeEbVt&NfC0= zSQ$2D#sUycgq%w9X|lSEWm9Tsai5l@_KRU82=C9fl^R<{y@SEd=CZ2Z(wGIKGNY?3 zX&vPiH_}c^2O?$h*Sc`R0rey=gjS?ZnP zxu)7Z7I}u03cVUqnJA9!o)u(e2C)UlONQHG>#|8$;gZ7_TxBQu-6FY~ZWC%}HKL!+ z-i&pI!*=CiM^%OF0I+oatEk>K)BEGwKREBmDG1I7GTISOZfrt3Kb=mbT?9#mwbOq>&tU+5zP|%Yxr*`s zYdZc9Tm#UTDS^T=?q80apdK9wG)(p}6XMG&jZ&ge`^mj_x0q`4^`=_@jVl_d zbOX~X!dXp*jgNdCZ-mTXQ*CQV{U0=k*x{d2~7(d$TT8{wK>`Nj! ze8jqUUYX)1cW&({zFd3D(6DtgQW5{FlZf@fJjj6ka*WJEM zNH7_fMp5~2LHQ_@N7GOk>#nR5=cw3gt~qTDmLn&AnVX*SMkV5Usyp+6-j$!U|B+gBh(>J{xK^dOPgH@wixCCk$=;^kH;v_Re`GN z$12kj+AsA9Tw3&n^$9wqWsilD3oaAp?tYpjX73q>9>(Y$NLH_WbLhPrLinMgym5N6 ztD1{IGmqIJkGY7O>y5?0*6^66M*gS;$*B3SoEH_A%v|vk=au@eZQsD6r1S1Pd?8v} zhO0*OMx`^F!&fCQ_yo(1cE`Ruv#LC`>hNlR`&&om@e4{K$GVc~^TLBh#p0g!-CeQo z0wUJmpAz&!P8W6r{|7<~G;FW`JscngW_iHebxTlJCTNK&bX47?;KYt8vD1sa@iYPw zrE**{H>mO5YBYe;fpkGWnL_zWu|K*BQO$qHZCxHr@NWOZ$BhgvlnLU#r^#aQ>R#lk z$^_DWd06uiEfQFaob$;44*Px7fv#5uPg^4zQe1C~@faPw&a4eRuSPwBMV=+(KHAJU z;z{R4B0QVh8ncg+26p4B4+C5VmArX&xlh{CQcIQ`(n$`G8}XGS55-L451;5>=)WeF zioZo855krlwN7=WFLGH8xlV%kc!7(V$3MV7>^B&d>xKND!0AEOm&~61&bJ%E)dL*! zVZ(hc6~M*Vz2Rp9(Tgy$&vm>z<)hhYg|7el3&n_rrh-Y^KJp9eS6sGotx=v zWuqiPpn3%UxV)f9lC)PRO)oCUiJ=$=18E*StlA5+x+z_7OLS>Z6kZ(tklfG(_o5M) zxWHR-ZIge|bhcr6{9DRUrN zjn|5&9=!TJ+xsJ>$K`a=)YGb*q#*~-&G;FtuHTIP`isU1+~lk9Fv*VDD;}K?i;(k? z`@cK$2peSZ;x;x#3&TgcAu)q302h>nbO~NR`k5Kli>&`PdnTkwSo{|H#3&Ba{a*g; zr6R>Y(B#5<0SH-X1>tlsB~*vX$RI@=+%#(NjBonc!0F5^l(G>0CaFv7;CBX%RBfnk zh#i$>j=-X9J(_GBY&hh5^^IHbYXXWi%$OFyF_)|-AdXaqW_ojr5<;RD+FZn5C()59 zssJYkJicVv3HD$HwAnu&pCOy9uA0{dJ_`E5zJ1 zvU^xXR(&51dcQvwAxAE&gV`(HA~hQ*2{3U1Q0uMDf1M!YSuY?m#X{un%=OB#L!(-WTbZ=Oq@${$zx;!)C>xzNoi>WM}QU3vYhL zh9?MqMyzXOlC2d|%oNAezQH@%+}IDx?@oRo9DHK$edr&XH(RNZ9`~nT?>b5r$JD1F zygT$zUSyLrf=#fjS@-%U3!l^E{cY!{rqbWDDJ*a67Z(_S9lNy7&~J^QUhYNhbZkOP z39Hx4aU14GTqEYbc?zj{xQVerU*kYQ#6Mrp7p{`WgrA4ScecJ14hwa?uDo_#u!#_B zv%zK751L2yOS4m4KWUaF1CaK=8_djMS;W8%xLe6RM}9x6X)2u$;P{(HMZsDvbArp# z&HvVzmvJRWJHH|Mk>53_&!P&);nYZlSMiS~R#Yy(;~pWFaI4s~p~@fy9B%*gdT_*G z6%$wmV4sA*(%@oV27UPCt76Q((Uhdjf1U!xIAZJLD`XAdn_~wz=rrLJ@y?ZbC%U?^ zm|3x|7>yBR-dK8^YNu~1vZ=Xrxp^lFeh%UZ7yZwuVC;{yjU&TgOT~7XSCo~}0SZI` zR^qWOi|VanF{mk{!{6NR+yfr%dEKGIvE+r#jSr}h zOOn4mabtubArC1G@YfsF4)YD!`@1Q`R=uG`vG%Zo+pr0HLjqPbW6S zUJyK31Mv7*@)V{&BU%F@(xI1*<~3_6K#4`NS{LY4rE{zoa(R`90Ci0_sQWLKqlD3o z+47Og{35hJrlXCsD9(<1y^x1gSIVm00Qa|Be8Uf-x*F+!cx_|!DT4JA{E6Kw3dl8X9)UN{c?y~wrOHA-UNMx9Cn$7_ciC&Q!)Fv5%iCGIq1T@%j=pT}ZXrad; ziRTDcSXi|NWCzik`2!)aA*GuIjJQFjz&3ETclAY)vM1|jW@>IsU4&$iGutf6hp>$w zU}t->kC%xC@ts$DjB$+#oEj4#K738ZCU5<` zraDU6^8r&Xm5enx>{<1cc2G<}wbgS6i7tO=QR$i`mo5TZnb#A4<3l z=O}S>8-W0S{|>Cq|G=L9L6LQ5ZW;J%H2hMB;B zcUQ)8`L7hH1`&xy;=J^OBawE_aUsVCCD9hcA8cgGm<=ZpI94>xRBf$KWWE|% z=#B!+{qvz9B10x?Xzed0+v3cl53o%I_XmGV@^~!27g>JS@khdX<(xy*k{6)P=zhy8 zMM~ueXWv(P>P%Kpb#7o^bMs%5_{Y8SABb!$Y@!+a8)#-~{7vLtP__Z84zGNh6?_1w z4j1&iibiH~wm;-O;u<@w;#&CFo@MwdpW=bSK$WZIUS?DP5{mqZntc4MyHW!%ifjpi z8!H{2$J0=%+Xhg3;Htyq54fQQV6?Fuew;tDU-eG}s)Y*2N`!@NG8Nl8(q-IKq8IE( z)M${La=AK8qU;fAoy@VYi}Y|!7;I!YQtB@|5s=0H9qj_SnUmqy>&T2Ae{fC4p#%g! zzqp;9%d2e+=GAA2{}JH->$_pv=GNp?9GZ%E4&1+a9_DtJRoIiaTLuOP4PT}OEJyZ( z=UC5PzUl{4ze*T;maOW9SM&F+!D8p~)td7MyoNjWaPnPU(yf>GjMsp23RiXwcyKI6 zQH`(LTAq>ThsHuInga_l4PUK(XASJdlKPAgzaROPM;1tkmz00{VlV#4|D9NC-#dAS zIqTe5mAp&Fs5Fy=(0u8E`XJ+y%7921!PN^LVD-roU5kSM88tr>phX%+_v5BEF=S+hyd_KDOZo%LUp_iH|ZKLIZO0vI)Us8?jCiFHq_)hJ};M5wEEF?C$! z8^fo`c)_|yQ6pzYaq0}oBC&VKw1Du``;UzEawNXSTpefZs`LKSRyW8e1$$Q-F zzUO?EOhUji_l*4|^KB;Cd#yf7X>UP7PG)#V;*rq|K8Pp<@8NT^X4DhgUV6MvP5GW6 z=r%Uv;}{Hbgj38rOaV`0M?j){AF~ruAtt*WDZLZ^wWF_>5|nxr1L0|oZBY+(1#{qO z;bI-JOK-&j_Jyw|E}jSC<5jVN0UFkMAejB9+(zLLM?gke+4WeXjSk41fWxJ3?sjl{ z;bY%IY_)mY+;u0DZ(4btVmEXx%zO!jz{i8`tT5t+KN` zs5bEn4`P)Z3~*;Lb4j4YFJfkX``5eW%M_YbnV!bsH= zH=@JLfqrIY;#^KE$HMn)(qU=vYYpAA+>(wZ7A&)GVyPNx!~GXliz#O}R>0*VfE>sp z(k5X;Km*>t&op2#ZMV24gGRmsvc>mAP(nin`#(Ihzrw!jM4=%S>Z%M`s%_^( zZGLDLziQN9nD8|ELc8wJKDsP&`gNPG9sFQ!yxPNE#U+LX#?VqpR(8IOM0angp4jm=h1ysx(#_MlkeTSZfQ94DB}_$e zs-FL}TYo(aCkDl|eI)Gj*M~uv7HOh6Q;7B17oJI!(e(%<>uqdd=8xajfG=sTdf$ec zqWO|jKBb!Mhha5vP^)y_U=r!;LB*lna zaYeBro`E{9N|9QgT#k}jcNYn*N-RuyEnR39_uoc#K^6x< zoLyqQT=TIc&sPoP;~cfv2FqtUA>wjrzcy1<2Y-Nac>M5m0HCAKcVb`O4za#i!sx9>6>M#uo?xRq{M z2IaGEh!0K|byU{43DkJ4VFyFBt}#~NPtU;3m6t2}iHFdNV`jsj3GuP%bquarWQV!X z*(a!)8Vf@nO{84#ooaOgB17}S$b7Z3^2e&Y{$ZcqiapK*3A<)YUfyJ$OJ12uh};4& zDqbG^vhxS;A42B8gC=pQQ?b8VGSCz7ziA)b1yJNtAKOzR;Q0p_gJJ-s`EP?~Q^@0$ zNcbo#@;ozB1A#@7*(}TGJEWFa08(j;onSDpBlx5)9La{1`+wMa%cwTHu50wJK@BLu z3Pp+pClq%m6e$FUq5+D#2G_PgTf77b?m>z>K}&Hj!QG)ji#vQ*pYz_|^Nw@Q?-0hw z-h0`cbFH->{&UZORg9HWOkLNV;ik_f8<<90_e%bK0Gfe~P9*AYcflL4L6qMxF&q_> z$P!0A7SnH1>>hT>NVfTL{78qadga$jP>Qgr!%y_7S(qR&5|ft$*bSvL+SnHE3If`v z%2V{*Y@F9Q>&vNy!No6TkpciZ0RXg@EaIE{z@ByKe{LBLnckSCC52B>iUcXqoQr3N z@E-uJ?uCCa7Ii9X951$>v20NK3|&d(PBQZo;~OpR50f6Tn1nZFz7!q`NRL<-IDdNthc;Nyd+G8z(+qt=z%UHl_1X5 zV?eBJ&Qg$;(i7UFtS%yrcAX71y8O&7lE_&x8OfKIA(Y!89J_R%mbAW{xO4mNK;`vVFFj(>gw za7cCtavSpOAs8g*Os#akY>djT`*Ch{PXDx11Q+C{V*4pO)S9~ErT*s)8c0nid5Bm7K9-OdS@c+TtY7D^eB~# z#-UC(L)p=vt|UdS=4L;ey^R1)cqY_$_kCDSOELVY~7XnbJe_xRRReVdh3exkkR@#lM)<3|PaXVtB*{cK{;=53TM zLXU4vp6GL)OqD)$zsrrg>vYOMCQI}PC6AD5#9hgW@&tBh-K#B6ZykJ>M~ddveaFu# zLR!G~hFL9IwnsJFEK8<5zu16(Jl&0#&iL(cP84I63hRtmyuAea`oW^n$L;ZKqjKB$ zog_XVqBPqn)h`nb%GkJ2-R^7h?WeOkE<*Wtd%ED+VaH`n@osYb zcgMQZjY1ru`9c+&-hGSZosMMoSUMy>o7t8^k4*$fVm3rUMw)g{i=}AnajL@n%NSMb z5x^fFdI2hSV7uLc*fn(GQi3T6bf*Yj)~M3sP;iE61y$UQ(&rE>Vp;UMAOotFfA@}7 zfl^X#CJIJc$SJ&l#iGD~tH1BY%M1Pp*ue+17kP&L$!_;mCtp|R4(i(5FOK*SFf_`w#+~A?sm_zB&R>2nfjFw=?lk!|I4;c0 zO$;1+2r^ja4`agLIs~~RW2HdV<(UL8UNn@Oe2uLtziiw~78LZtFoAUQzsKw+N5YA) z(YlA?XO?L&a0`(Z&oXhkoT|IeoA8K8IpOCd24P`AJ=m}khj_D*qmX{^nvF&ZST`P~ zeuR!C$O@4svLZ6x`SyzWq#N1h#FQu6?EL{WEdGzoffd5V8tGgj4RKC7s!NGRg}@H< zYiHQ_zi+dUtC^^(IQzkx4q3er}E#_z9pb%*3 z%rr9e@j9>LeK)yS0bZmHYjHJQY)bsOVV`e0Epj^!FY-I7+&eZ8g_RoD1`aU?sL0#2 zr^04j`$jc9Sv7UfP+wgSM%{e8ellT?$B)l#r1yy1-_6`}bR(DvQvWLb9s9l1UW39` zzoGC&+&rtA{N(#nG#wrs$p6dN#h9$5 zh`jw+X<5nJ!{cjeL_nSW8m@l)0=a>k<0VC~Dlj%<4|e&sl71gYbgi>nopNLi!>>KY z?=iNnN|l*oXYCZ;nc9#nwnDYEAK5(&;7cWw!@C!v5vLvKDeI@aRC~7f^9buE2Y*N7 zOB$-p!%@Vn$j&xu%Kb@vkYvyr}D(C5ZE$~)kB&Crht?*xHBz`*i*^cf0TGN zT1`AkPy*k@wj)qi6*BkmqU5ktdXm#HnRc(W%p+{5VHT_Z`{d|8j7ppdO-$6$9^SL- zD*T#;{28=pV*r+<<_Lq3yr(M_SV76qke49@2+Re4DRhe@iZ1Av42Y=4i&a5K)^n2xE`S6f%lFs*X zJJaiUrs^M;vi@buBkPOO`e**4-8(|$T>kN0@85`ahszs3lzFxma)*eS7~mBwMgAVh z$B?Hb4zQme)=z%h42vft%l&L;6l&sdxsgY2nIb2gynn;xr$9w(_?rdf8ie@nvUO7h z_^y^$Ae6PjDuQ?2?UgC3Fp^m7xM(MiycZQPInj&dn|dREF3Rf$ZGNafg){U1UI9AC z_r<9biBPmeqwql&R!Cd#LWRSR!ujA8t7w^MqqnY${2s6pE422q-Of8i-#4o+%4YU@5el6CzX$y`2I}@ihZvM@3kpvD2eTE_R&q zL=HFE*~a-43vSXL$2ZUy=r6-!l3EL0E~hVKCivN#nvJIhBKpK9tFGEO*mmu7ooV#* zOdi*E7e=GP^$a20efcR#~+))X8YDZ;8ERH)1(Rd9fSX2kvIrDUHNF?lyM zZP=3t6^(ATe|#k+Uf@4ReQ9smW^}R|$(Rcjb!#c5S1ukQ3Ds6#E$QS_bicJKLq6gi(Q-1=<46i?7axQ^>Q zJL;)UPx2RTN-J>AI)cX(5~A`-$flu#-=K|~k6ccf25JP@sY|rzNge3VLUJ{1Nk z6>$!jLAU4v68^82^fU5;+TNvn$e-NNM|x~C@(fL_-*IlP8aj8)Q|@=l3(^3BbM@WY zP!`0&`H}c1X|{6FOE+3LSSB6Xdzhe;W}trA6}Fbbb>4&8mQ9idlm8N*oMNoeh*rDe zWjdZyA&WnKWvx)*@_O4rS=}eAfmR~d)l$QRhVT(3PsP!Z>PpYY3$YtvDS2`?y>mYn zVj>ToCl2;{`pXc1y{e`G@nP`}%uqt7AHNGW$f3k_o`qGu?LT+J%8Vqw4#yJADcx6d zUj?biIC(E(=C)K;=D8R~>mewS-o}zPRABRk2&tr36wk%T( zEO%6AiNEhgC5$MOqh#32(*)qwvI7{H_r=UoR}1&z+x=`4ti(|)k)PQQg?Z7~rPpk< zr7(s5I88yS%3*Uv1&#oE}dFSH)t zJPzfT7ga8k;tXne&yaz15`3 zm*H80D=MyA^-)PCiVYs<`LN+`zopz`TL|jls^Hwb#iyAWQCXYTgriwHR9M* zV=Y^AHHR!0N63Y+UkQKI)%}=6XsP^Kh87y(loB{npw9gK_&XTyR#L)WP!Gec87- z62yG5Z7TJ`Iv(cx$v>GC3Xaf6@?mGhV*~3JTGQYju=yJeb%;6A62iiCv4u^|z8+9a zij4`h-ym~`>0rQ&N*L6bN!Q$jIgQdl!lW`VR~xV#cSa{mXC2vJA9o8%ONB?H?T0)~ zcT80Lbi;cpqdH_DsZZ+$(e{=Gq*C&U(J(}4KT1A@%qSj$jNJMQ*6Iw2q9s8^(ES`?Q}1?_fg@m-WV8@tJbNv2KsNe2=LEid@lE z+riEfZXM8csIb>M!Y-ZemmE&f>cAUv{3;N@d&5ylgH=5*wX}NLv3U_=6l8Ho*j7E} zt;d2!IgIxe-1>9ANLB)xVc~-u8_El36U}bF*of}IpC-JDL05ry zr>B4SnCWL*YRCK#>xkaHDBt~@{Uj;!m?`|UQ)t~ud;7iRs#Aj%jhG8oCtzj&V<*p> z0qay-y!0^Kp^m#7^fx@l1RbuumJ(avMK->pnZ@fg-Np>y0|xLBjVF4KiZCNd7LeJ>PeGKatS@$Z2`Yu5&8W`{EF=o)@Rgs8n9R3Cf@gVD;#+!;Ug)9n+Vw zBQuF=eA*x$@-Thua{qe0Zv8M4|E5DV?etij;&+4iWJk=EstSE+f!qF~CPau*yw)~U zI|wo9)X)gw^i@`S{eTP3LgVNT5j#Kr6SLsN?Yyi>WD>Rf(l_+Yf0LK)IH>iyLa2@| zm?$ruU&|JzY3NeCrO?)o(v_Vf?C1wi{oM`{tWhJfDzgS`D`2-^Mp}W_6{;|-$&S^< zX|U<#?eTR5?ai2Vg$rp+cDRoDn)GykP`XEr(+lEp)7ilnc>7#=#~CAx;w>vZ`{$|K zJdFOm*0P&ac7YVVA)hh=L!CS&iO@M^3B){%$Hf(FWM7B4iV4$A75Wnx2UH>Uwg=8~ z+*4yo%r6~yG}lsJIBejsG2yfes1ts;iZxk|m7k`+I{N*ZEl+XFTlC=LRmu})Mhiuz zPYxD}WH7hzn3DR!Qt#r4M)~yE%y0~FAq7~b4r#o#c5sf&o>S9EED-F!DbG%;FG>E& zMCf=!>vO!Z1hPsCv2PH=gG7AsJ4-pE@G7f4U1yefLtHEhQu5gi*P zAcBm2isnsKRsYu;eQC?P1)or!p}COk*I9_z{_?-Zq@$ojQ^*Izc=Wg%D*Bx8mnqun z{W|8Uv%WW)^O4)!vPi70$eB{p6ZC48>oP|ls`LBqdT(S&ua=9oynTw+^r98Do5$XP zD^-+h%C`mn!Zpmuy2VvpVa$W5c@>eFRsS6d;P~5n;f$-@;96V19|f5Yo+fbFfAwK{ zU`5wN=VGnxW2R#1>Nqi)JW?U}i)4&)GeSf0yEt>C#+x0>(c0dU?S?v=KbTEgKggU; z%l*8AZj_qGSp0kYPrLew6_X$jN81C|?15#G0QnpsV-s7x%%k%W&g$}^aB|JZvqT=J z>enn@B(=V<#leciw{~6V*U^9Rrf5$^>=lie*1J}OLr+C79=RR)f7~gt6RXjJSaif5er{ zcES1>Z*3TFG1bE^1g%hM;t_%pA?I-_TlXYviYNYjTJ1D;iGLLj}yM+l|iD^pR z)nj~5v0`eu${9kJy4ULuEg*4Fc^7LSw!}A|HAx9OD_XB6Li-b#8J$SYr{UmWaqjnE zN9tZDLGSaHjs>m#Expx z{W!zkh>Xkc6W=}TPu4(rxNARUSiq0KU>^wi?>#9(&u6@>$glL&uf_C2R$4-Zgdz^y zG`^C(S7t@VZiRV!BKB+@SA)_0EX{!hoWCtP?{mw&f)~IP5KtcQ5KKMoN;X9%$)A}8 z$cNdy4pl$jE56Tzba~GL*>iMfC&TN9u?BkZA>T5DK9YVmLm5MqmokRt)f~%l|0)Nu z_wX1|uqny;2366YdCj&Yx5KgEUgghbskq=?Q+{1p^L(pNvqiC!>;0M#5%&hdZPa>Z zv#PY(hcCI!-7Ylb+1q#1Fq0oHwo~IsMZ#b*a3BSs;p{zOf2- zLIBb+w^O*cqjTsqp$CIa`*~-W7v-g0{xqPE#IFs;ulY>SqbiIU43_R{$jbYYJor=q z{-~}jUjyzR{Sdt7t$*e2ccjI@4)1{vY}Bn+8pUP0&e=8@ud7=~*yG<6fi(3;)TB;C@tT@?E1^=?cZzBXziSfDb)qe_Tlp?6L6dA0L?b-fB*Pjs;}Rv}OYo zL$CVAdOuq}MJGiD2>D79K>H$`1vh^A;KriMW%x%wirZ5gE|1OmFrNfdhl9LpONPPWt9}ymt#?OA)W@Lqy^?E+i!@-S-48a=S>>UNC4~ z{d=mt32)4Zj#2ns;c-sD{)R?_#XrM+u=oJ6zX;qBQB(--YL@Y z_V>|y`r6gyWr)K+&zY8bN~%@dOPb29$=ga-{323xqMj^eo%Du*ibof`?aCsIr`F=0 z)ZH&D7Ep&=oqoESl2f~^VgBI80?Se3UfZ>ge zh=-me@o$MBp+P{o>VQtwxPxvF#O7OjjJsOZktbQNtG@>7>H>6C-<%u&tULd#H|=bA z-|)EYa4r*}gcaDgrS(=Og_wFW!0 z--m=nbWAq}!9vDrM=`lm-=K2drd=1Na%4GusCRFW+62+h>*{Tu=i#nsDoUc;+wo=# zs%rSXWs|Q(^gk)ap45gUl1Z;0wLgE9YB1?yY(0cp^CPG!zFQoGo6WXoZ{Tdb^XGgl zu*;jGn{MzEJyi;qZy9|>9=%H$k2mn%6NJn2w?>zD*=%u2imB>ry@V!7wX$!2Vt~Ml zBy%&=9d#>h*>G0bn~P_Zl2_x&eIedu-$JB`_zawXI<)levZ-`BjwLJ7^YhA<_lEW| zo*i9M9i(Lc9ZQzA)`mJf0hxA(v!_a&V%x7O-v})}DKzn&=QP1o(o zVtLC{%{9GC&z8vDJU{Rgo({v>9~R^_6L@9+UVFMuaSya_r??MQ+FTb%(+#Wlz32^T zBjeu#tm;J^)aKT6JjsIt`555=kym~~+ldDK=aLcrB{@0k7=E8ELXSWBGfXE^>*bZN z$9^eLgof}TsE6C9xk(D;w32z0)-XV}I}18)f(pUq9pPp+7~U5y@@nbt6$ZiOGr0E5 zZ8RIsxr;D`MP>8y+9|nX%57pAU|`{kjd)5Ln~mu)f!A}h70WB-I~j4W*Z*V(`r)PM zXku2s0Nq}SLX~B~Bl(p^3k*Oo*gfIv&-qdFBbpvsS_C3<^YD`JP(qK4{T$&OEB=q(YQ2w8+=@}=;?;Dh zs{Lap#B4+boI@v!TcSbpWeewP?EP!wnkNWL$iUXLaEs*^)2*=y1T-{1M?O(XzJ~`H z-)C^n(q|ZI`t;v?2{1z;c#olgSwCvpL6r^XZ)ok4rz3O3?vEsqw+=FGvbsD)FLUw121Y>XBM@a+k^awWmWk$Eu@4&G zc`Y9$9js!sooVXsJN5BBSOeV(E_S6-S^JI7?^iV)Iww12S9=wKJ@dg;h2Sa_K(udD zJ@r~v#@$3^OsstwS>e2zvF6*;g9KkiXGpZWOMWsm>R$;XO@+o>X7ov?<*tRwEu+RuyPt2&$PBxUCX9w1?U^#+|o%w_7`=Mp0Fb50Gw zuL%_tN?@#(%q-l<^)NI-eGsOwrg*-q7rEqlPi2g_RECnrdb9Y$gEe(O1GdtyX{_Y} zqB3h3d^w`boZs-CGUl<+M+H2LSs^4AdhGO;gQctQu8OilS`0SMr%;;GM2Q*Clw#HN zG*t@BICH~+F$L~QSaF%7)uDPynaWEGp-dfdC_;KbnvvZTpD{1VjNA0XU3&_o0Uz5Gx6ClqlK>$x6DoC>>vet@~lU?fqb2 z32}B6kh*kZLF+{oPNIXOP~wY-bmc(X7c+BOM!3D1s~r8g^Ms6!^;7IQ(#YJ zI&`LHcc#v{>-|J;#2HLF9I+L%6gp2i&CW6rb5+@N0gypzH zgIOt*yZ_hZ)Ew5qIeDl|%<{O{y}-c-YI`5l_h=YP;?}#lBk$xz3!AMd(ni+l1lvdU z#N_Ga#4HzX<_2QGbO#L{FS6*K(pJgkgv!G zQ3p*p<*(H%RuMlR|%1G{ux z_>7dRx&DnQr%4f0yz_D95s3n>_tunnMMmPz$eW$z++J062M5B;SkHU&5N93P0rthkdclOIRu)5tHE!0tFyetzh=tV7+3Eb>r`+NUFPQcTON`zKEh!TxzNlS!UKoZfKQWg*v3kWt5ZMLpXo&b!s_Pek5$nO8X z)?O5qPc!A*P4rMee?RIe0P%5nu6kW*xQ1<5zAJ3{o``cNF2}3Zg++9Bv|7R1&Ip)s z%?q-WUoLm|v`UwERZZ(nfz~k&E7Y-xoy?@+fE@crHZT)bkIh0DF&2MsGJE~3`0e7S zA$baBnGH;?_vJ&3%*bcP>|%~Ak6Zw6s;|o@l6w)ja(v_Lu~XM{kkQyOW!{6jhnM!I zxHTqlU<2u9WYqF|Jf6fuR$FYgdL28DR~i|DIPf_yXCjs^{$E%2$1Cw&yMS&WsMc^j7(0Hg-PO9EcxYWeSa8 zl{HMv$#`CICT;}n_?U-@WKBB%mo%B{_dE7~q#$#x6o&Exs8SPr3dwIO2IY77-{$29 zhO7HOKm8MX6EeHM;y6tgU=?*^ZW(EX*}yQ-UKV~>L-|7Iw}Fa-qMdBmpLW3;m%5Oy z@sEDGg6NqS(d}nZJmGUZar>|04tqb_26si~#Bgyh%U=GLZE7Q}p4pr;$+NeB4CH@u z>1o;0`u*cN^3aGh2^yAe`6KE`kda*5_(!ycAhZI-*>STQpEomL;2y%GFl~77oBo%= ze_wW7H?KLA6R?!%gH6< zX11)Z6-cf@3ca}c+D>YxYfh|r(vTjNS93;U{d1b=qpGI3%%wJfIQ7ZmYabyHCBf?k zkN@$;!sW#cG@=PoUY~z&9pJK&IB$tpS(G47fsP~n%jx&0lA$AMY|&8BZJC$IGdyKp z>2ngcQxPA00*)Ua091TZhT4=7@Xv;lXyQq@i0>cCuHc{W0>MO=5E}E>$3-u_7=4%m z7(kYqRh1)h04s*`uV>DOO;_G-G@SUa5TpW*{V(V7gxZVxmUs2=(0%|+t}sV!OOrA? z<%-s%F_@f0S5(8tK9y7}I8NwAO16)b?oYMrGCI@#&ie3J9hix!N2Y84#KGyTR@kq> zpg9&+Vd(bGx&$3Ov)e1O+uLAR=+L?9MSd7i5|+!(lWU~V5)%=#DR7V{gi145!+3CH zmL`81`Wb1vyIDENig_($RVch&Mddo3AILsF(^N3dc z2H>f-qZiy`S&%2*SmD;G1!YG&7f` zcZK%ow*$LdS)6y)`}7uyQ69y9jiv+F1AU2HAy#_Rx1Je+(%$0~q;S;uvzfIX@V4|pEG;QdrGk#M#t4lNc&-Lit@=n*Ivy!5`@ULKiy{|bhl~T3Yeo09^17nhAG!KgFMAqs0CpE~_7K(8 z)O3}#$D!-wV9Ye$8JLlfz}3+Nm|L9(6H<^a1heZ{dNI<^Ri?d<)?$<(7@%Xkz_#>4IV(w}1&@RH-dT*N1eQD|hF3Ghm>NRH0on z9zH>NS=X8p5*mk7J4fQNSgkma@Y5l_D19vKK>~Gvfn{)_mdzgX)p1(-daU<}QO^qb z9j7LhH~bD8)f8t3*vF@uL@5f!>qPGdf9CGBhF4mpXYK5EM?)XK0sm5% zZOA@h1t|EhjeELIhE7pV`F!0lZ2#*gWIm>CCN{sPJ`S`GpQ`Lw#vgSg2HLT$f+U)% z%^%b%y#YJRuJzUj2O+Z76>OwYazxH*)=JwnOZRO$T?6_aTPU8cZX{3>guoQkb77$7 z2p`W+EI`F|?&cFtRCv7-$AC1v;P@IK(1lbf&T<;FWRfhv%<8rrZ47_0Q=~@O~Vc%e{&b>~qZOu@>4Z z!u)z!2bpu%o^#foJJj1fw^NbA!b8Z3I&zG$`I!!wWtCHavQ>WM$9r8Q)c)@3t)XKs zOnAA9`~6)H{^9{;fpH;GQAY3nWaixJG-=+5QIS?DNLYjwt9Vky2FTu}is!KjF5o%t zjObjDYm6DoQ3-O^$q5RLy0|-c9gp3kDWYnYsNdXAJLbfgm`}x`vNC{%>RXD_j1cbVy1s6UK8n$?bI-))B?p$k!HiAPfs_#py|&gDEj)Fq^koF#9H@QYGjQf46uHFUg zBIGLND}n{dJ3Gbh$?K`8UhK{=Uz=O@t+P2s5Ejz|!e1lQ zc!N)NpA13>7k<0iw$UA|E)DXz4)o=~rn|VJPKxsU#3vh5Gz?+$Z5(%MpOIcgF&i~BKmR3yqa$8&m6`C%KflI{33W^q=d;VeV2 z3on%ok2wRnhTLdqh^jg;6;_l27W=a!^oh#bRZx_%10AwGqCc!ZOVLoKQB=$5J4{d5 zH8ViW^Fd}0TeEY4q5r2IKm~DZu?m`zNp5^57D+6D05Y{;pxg)G%B}?H`?1aMD~<<6 zJa`v`(V003K-%Z11bH`fIu`2qozGvXI3DU?+c3&;T)#GlJKXO6qx|LSrnX7*Qs=Mb z2RpU`MYBy_ZLM>-gRCMaX@)g61ZON+$8FJ{m-3BP)dfYLhvR+rUEYQflj*BMytZN? zjs~@*dS+^@QY@NdxEI|o(*ctyqpW&IQ=^?;rkz%$jZvt3X%LNW|A3V>>D0XL=5%*F zW?j8vUtTR8XYa&Z@VDh9hW<&edH8q;?3`CNXBcJ=VLBBaBSqS_W3`TA0OHA3%;6c? z^8ydsaRD6N36x1^RRK$8h6+ysjAE-$Lj0Ko*Dp`+G8W^EeNT_;^1(^Z*(eQvCgpm2 z!L=gswIYnj(ld0duxXMnF9^*m{_E>uUwuf%)(g@(N?q@O%kNALOHD+r`X~&0Q{qP8Q5sMa5OkJQ z6&J?m>HnVSh@J^YG39J*@R-I?_u6hwU2B*Ci7!g2_s3ImC?;||Z^y)Fp8{Yp>-o-C zF;Pi(C9EHzI^M?;sR~QjIR&7?fFCR2;B;Hnqr!FFEYd|b@f~)N+jQPljF&D4Yk#=Y zmd`vE#JQsSxzedKC>91vFANoG`95@(HL_xsa(1bjR11ZLhJs`EUVGJ0~u!%PUnhu}i%aKJwPS2lYXMxL@T5 z&Faw_mye6JS_xGMJn54e`n4Z~E7as=HM;?CG&CbY*^eIh75_tT1GR=q66|gV!$hLB zwB5bY2$Oa7M@@WaO_2r5#JyUJZm?YH3CG)I!#p~8J~fycHVQH*FY_4L9gxG{7Wccr z(63FReQawYKBm)6*E3^kUQtl4vPb6{*U%G|4>*NBVFyIkg3$C**>*Kn7XWHz10LD- zGoxkrFUIkiE=IV#8agMReB{lzvj5io06Gf}GUtj{eV-;1#r>FB&R0Qr-TXC$*FS|u zHW2f&dC6T}AGEk9fw5I`QxU}6)=B-S$)1niO+-&jp2kI1;mEAF`)`gCO2Vt8`hS>@lbePqgHOov@KuY2C=ow{Bq_@BMq zOU4n%J9m={XY7?)LmYVZLqp7@h ze`V1QO&cMmhv0TP&O9p)Td)MFX{CDs_6>ijTev%PIj8{rSUl`jlqT zei%?(18W%mdx4L8P!4iR8^np!m3M6Wj{0HVFPh5Hn)Ic-K#TkMOyL$4pED9QU`{Jr z&){5o{2Yf+P%$>20Y%^Jo8dPQfBeN^*3)}qUM}7D*0Q%xrKQQ~kPzofO=dCN+_vkW z^S8;M`a*qGGhDaI*_eT!_$18av0$B3NlAu57*Y`FUN1^Kat9d}%xmu4Z3v$v znJnRHE!Hg-HU2Kr9CmGc=RESxc|zm*_060PvBs~?`lGOZp4`2pz_VajEGY*c(tjSb zY@+)QoP-rQD9jc$3DO`Tc{s~bBgsaa4iM_Dhl>CfHaWRCY?cJUlEeaf^Tvl}~o5qx!o*}Oxj(0gDw7~Ho-x-u=B2-Vk`ovL4s49~q3ndsG;e#^$i zn&nrq$P18++2F`?-wj#7-E@+ijYKkjc@0tdpgqzD z=F)zwD?upITIr$&%P=m<`I;<=*Ap)vIKPxiC^nxTHX~V8`X{aIzr+uxR8WJ01y^41w>L;kXDNEiSoU{xcHl_Save2bqqVe zgE7BEJ~i|1$KkfbaKW+mN1f}4hhVS}Ia;z&vWP+cD6YE)z z{p!sA0`Whe+iSTF3%HsHxGarpxkwH;U-JmKgQNI-duDQ>x}?b%Y-zpu%%?xhjh%!i zck&rocU|ZcXg^LQfv9yN)>c2vE$@Ts=`=DxY7nPlRL1 zIA}>xGSC4OkT&bKyDS0kLZri9D>374=2u`wsMg&Fn%_RT$WKjBkXAB?@o9&8qD3+g z6@pmeh4!5ME=jd0oOYQGU&XIZZfz#smQuTTD(6lk>d`Vn#fA@$3s5uk(7pGrBA`fxE1MyoW|ZdU@}4ho3KZza{CaxA~I)H&M$rHNZc9591{>pk~3 zE_MHZuZMJ1{n%G~z}LvYAKgCNl`-G)ZC@2`Mm{z&Ru!r>-Doqhf8CWXasGSZYT|Y$ z;M(!_@^&fUDn0ggz2&myda3kQ$ejiqZvG~j?6i2#UVmh)vA*0?Xaw~+9)%YHHNgvG z&UJeK?MZqH7pkL}8)#$XD71x{+EO|P<^LnI1~PATee~2Sa*`Eae`6`f?=jcUaC!9l zce75{E)5wjv2~RZ;+PaJ^GnK@s|LSeo?J>au{+FdBE=(Qs@IHB)7j`{ZCF35*x@wy z8$o!?>pSLLbRJ=O+U>|mMwbFUW<~|P8+yXi=(6NYOoGZ)VdyeIaXGdhzsna>F~=+ z0CGJW%gZesg04di3&oZln=3a*+NZ?I zh*(7ME+7BAy$yP7)UT<)*6|Hx6-W~zGdox|W2}s{7zI?AHYKs<@v)&JfrmEn-6q_E z#}Q|v2w*+#|G?Bz`{>y3^{K};=RGO%UHz!qVc|4ymsu zCI)1K<)N3lDvdo82@&*8z`mT1}{MR6lYLww3I`gjvakD@M9L*FO8cWmjk4imD@3j(;=T_2ARYBQ;12P!yf>3IY<%T81zcDUB!`$@Y%im;^SK#?XjRd@$I2 z$nyf`4cZTQh7XI9=IpE=9QXLMid%d?4tjI9*%@He3*I}vfspvqDs0M-|1bUq$g)uP zBI_Z}xEeVF;Phe|a1V;(g?p)fwSAdia3VBG6kcFbLR1C9tf{A7y;38+uUz0{4S49; zc>btrvBme}^e4|8GF%FpjNe&~eDAoY&tEd*vwMY`?t9Y~aA0&rBhPTX6mYw6+j6^d zdvyEbOO$w5_vh#5Le!&9s729E8S zQQ|?9H!%+Z#he`(7gPZ?grcXN@Ruug`4Rn`z~GM}nhuUd%qmAP#zC+2PG<`7Cv7K5 zm;GTnvybASG*NpOM`!b0K61O^CG|D_!yWGe$+Sd>mK>*(|7;BkPX6%VQ1h2oaW*JuHi3;TYBd*m_)*sYkLBD86{Lu64-Xj$ zFd9sF+>0W+ncgtmZ>rU>0y`Uopb=7o&j%DCVqs@AGFJq29}8fi)s9i;l7IOdLr%hW zoQGN4f~dD2rhtl26A0-nZ*5kHooOFi62}yn!7@JotFr>;Wv#12uy5o6?*YD=M@5s& zkmDW+aPq+AV}Q4Pxbf8ls6(fs`OSa_^HIKH1JR_sO+I98ofnQ#M~{xwf8Nxsbhs@k z4-+u*KR!0P)xOfd?9ZDp!>ALBH1DnA?Pt&$Zh``s)6uI&M%x|!j zwhg;{UwC!`2D;L+Wo$Y%n*kjRk>Y)PbdK~6rN;g1U|&Mz{;vasFx(R0`< zUQ}D%^O^#tIMXBswsQr1Aw9`>;p)jW6{H1v7E^fJn*>2g2H|3ct) zbFX3z;~33?Ofv0z@gknDi?sGL&Wr1;IH?l<7PpU|zZl5jB@pjlosONHfA_&thqLI- z6ro&CnE~u=SPGmqc=h)W6fPB#(h4f@u$kV3nKP@dyS^MG8kBRe6C0Q(EyrFzPUx0f$($wpnI{|zbiUrO?~#uH)W^WUQgrU08q6AIH-7Pk z^!8)jp6X=7LV7o9F7kU*=DxIzaS)v>KN&7LrU9B> z{LHYZu{JWTr!bv)A7kC2;59MsNLMXxZN1lu2D&ZxPisnkR9?S$l%ksoCEU<X513%f(>4v3n5}|^v^qEmm);37LrbWfFRRw>^8UJ&y)aZhaQ7B|Fjo3 zrZWuCc_ZLG^xpCg8&Z&hz=t2FEcjOu3oB0)4}7l0(@by;SwC;wkf7RLM=>hlIMt*&sE8JN7+ic62>i^ZCO1lkgl+_hfR_+}`x z6U< z0EDK{BrX=FViSyOhqzoHc X>m!O#N716yC052-xsnH|;9#3QX??z)VK9r67onvN zNA35haHz>zoA-k6={;JxF2>3GGCkBsz`OJl0f~O=U4_{UMovIX@E>I1fS-aG_HM#j%b!TyjetI=NztvLCx{m;e%4S@|Fk7;D~~WB0>oe6Eo#T zuy6wesrlD6)Kf-M;@8qVt^N}Pgi}8V$wx>+u*DmQjF<_*jsnB+Ne~6yFn>T@oC4;T zf+rC?WaYfzv*|%jYV?0SC9t9MJJxBmN+sH!o65^W38#_~xx70#{<^UxbF3eQ^~rV# zIVY}5;ROUxU-M{!!WpS`e~Map_ME&+#@`imx;aDpa7tXCl-^tzU8Ud70cTB)e~S&c zUidRb5D;4Iqg*uaYvtsmVRSlOGdMP2z?S@?!>T~MSrEfb8HwjCqX&^GzDE(s(#;FE z9$lN=b=`HHei#ajRjskT0m7$g`UCceZWIy-lV3PjG|n_yT5FYnvgy5bQimf;u31a$ z#zhVI$W7zVyHSJhFbcPZTKdJQF%V|k4o{`4q~_t|KLD3fQ|AF6Z3bJ>xCz&Y*o#ob zg~xYOx?qc-8R1V$&h6@c6Ncm<`H`J^fj>Wys>&xxLpU}YKcMF5qKUb*Hyf%dZZW{x zx^a%?22+j%He*>h7J#Qc1UMRM{r3Y&0-vF)JX=>v=9vr(hNiPK;(~PkDf$r&^oijV zOFYzX3Fk5e4e@5J%bkl&9Wlat4oM{MlS_U|;0g(Qcb2~VHkBrb*5O_)1JnLaIkxeW zsH8h5oj7p}wDCP(ih3JB;8d(^vj}odzNSXIfE3JN*a3C5~&8w#JLq47KK-@7iYHhVk#^f2MxJ^ zU43CgY-0i(>sfU23k{lgNBU7YLlBZQD4E@!L3N8q8?A++G!c~kUc5cUv7}p5>1GG6 z;#bD_+y`n#k%ucaX8<@%(?yT!Ma}u2*3J5*P!lCCSIhk-{JO)hW@x6ym`zAiYdmTV zRP|ClAH=!q$PX&E8&~0gL0Q8?F7GrqxUjIq5({b9SGY$f9NQVn4t}Ugd~^X* z|H|mxR8KzA2L3->eRnjR-}>)Kl_sJ`glHqtMzlni1QCW{NVFG;-ph>M@=bymL>Xle zCCU)J215{uUSsqgjNUuZ?w0#I=XdV?&$7m{X20*=`*}X?IYKq`uNnmg`RyYQ*TqPSYk zaaT^p@aHRD(FvltXw7GzTtPa)xo#)XQ2*R>sVUW?6^Ke!^ zy=kvFKJEY1pIumfAZ(#aC!X5@V?KV2YtMQrA7|23cFbi9klJ_t)JLijo0NNO;N!n zzs_{1=#HcIbqTA>SNMQ38ZhGTjUz#M+5iKFy6vjsm*EI4@N8TI7`pXUVL%GM7x6Vz z2D{maE_D03`(u*g*kd8|q=e$lCfU^c1KgY~v51Y{xX&oeW%UR6HvBUD;l=j`$}`vqBSCbg?^qP1 z#7s5s$Wdo`tw)Db=4;yj+gIc?L4gY{ta*RQf+uj(%dp4oQIV49X6xnYYHAS@miawv zgKQPzfsnDd%kfYCnu8$wlgZsTM`b5}@{ea$s}EOplaAK3u0{Ql`Sx;-ZoItbrfw6% z_PgglJ8q|2#}P`pEn)YlOyFG#pu0M04)>4)?vxuUL%|peqlPp}9(dC>=)ims+p#O> zI4^jY$W3EYPR3xSl47`=ife;qh zF-Nf_b1d!CIfS(M=ZON2hTmVvzEJ?JP|X9aQyuO4hSRP`idj0Picy1{Fl`LtN>^Qk zQm9S1YQbPMB9>Y)KOTr4cI_%GTM`ko>`dS03R-4lBlL1+qaIBpz54G11pvy84qkNe z4J^w#|E0DxgPWSoAd>;Q+6D=tn@@FJ;Oz%sYMfLXq*Omh2zwVp*n$JAYMUmUOC%xZ zRZz5RzlquoltTaI;`W1Y4MV0XB0P(HK?5%d!naq3h`lxT(YZp^2TgSS$x|*-f3lengvC==&VvzLZ75Ce4` zUr5iJRU)zC##JofoLf=y)7a9@H80?pO-WId6|iJ3{-d-rq6ee*ovakp(JT6)xy3Ua zFKv6h=v6i2Ce$8>P}+Go1(OeKeE!lR06YLZ>T{XT8&wdmH*nOyiO3|aA zN7d&V*>=(^RG-8WtLm8pug_P_k{^oWa^CALUv>4}sqTO#w{+(C1Azz)qw!8T1vJ3<;=jjjg+y8TxZPd*d|1zZc>!I)kI;u5beFd;4uWUg- zd4Qiq*Xf5dd&a&(sGhI$Ycj)9f^k~}nr(8qqxZSw2(p6*@P+YmyTQ33(_w#H@HKvB zO8f7N2K1ZcR%b&lNHcc&azL-TyhN&w7Yqz@%U@{ldY@^17vs!g#_&1x(Y?3iCM|fW z=Z&v3Y}?ck(52Eq$KgZAMNdnnuv2~Id`y~rx4XV@AxC$?gZHd)iGdbII@+5fT1RbK z?QabCtqu0AWv&cKUk>yZd2eb($BmN?7VRWtsfuM?g85Yfs~Vs{)p6F9t(i+MgiyD$ zfO;<@bt$p%TnoA8a))`Tl{%w8xLMyl^nv?>hXZB%R;9x{_$&M4EmiX_8=r#_=B8H? zaCYatc_p^({14T-B4N0Y62H)r4~_Hzr>duE5m~K=a00=7KcTC4*Cofj!u6=`nDR-w zBmg{{OPxbqbKJ|Fr$;{`(o-xgW%lr@mgJA+yNf?>W*!n>7}fqx{hWhJ)Qso?h0MQV zUG8rb?=&PiIjiDO6G6GJf0-aBeqza|q`Ru)9Ta8lY6ijPD4)s=R}GbMyKL zwiDS-epV*lEqPtgw*`OUakBc#9eypirJ-8(bvAOdPlxEsG}NM6mhGhwRbobD2ino( zR=g-v#}9^WQU9q;?7q?C|8n%jBfvW|2)qbwZ7_T!fg>qUQS#+_4x$B?39Cq}u^x5k z^hgxq@qch%bK#C|tHAG!TQ&NU!7vU~CN~V{CiZ2u;wvXgkzWJ8>^xLYH6$PsDQ1=b z`5&VAJz2%B*;5D8Up}Vs8gt=A!~<4yW#za5AI>tvKh`>{h2^I0m!mUvzCabUj)~4M z6HpEZ)PYT~sswl^rE8dx(PcpXn)tnK!Y5w<^5TmmpsX8yVE^?Ro(n`T0BQ_UZHB>I z;a@M-CoEV`MsrLPhmx&g{Jz~>ju{FUcC>Cd_M(-!$#mNIB6fRlj-+l^r~@$NT6%v#(iN{Y5Mxl zbtFOfSC!ot^U+tG6~~FrS1bBTALg8uk^j#6T(VsUnbiYr=+Fal662kyO}1b?ENu0? zM`v_If3*Cwpf~)Z7@u)RMQX=TcSlxtNK1D}U`dE>Jr2%w?b9=ksuF_Jr~nynv+yAo zW2j`5k-!6t(qzq*;m&Wpo!>;LtK&k?ecj_QY1G=Ve!4AfeZAW1vXtf8=vA?N&sBpXD z2u`(&<#W!^j#%FQ^24*tbV*7bkoW+D*e_ZpL@ZoiPhyMJy~wmaHNiS*N#|r?trYu) z-4<+g&K(=KLi3+>d1q0UDKOs*O8V9fWx|&F_dkxm{wOvz{Bv0{Xl*L}Ut3*ua`PDp zw%|F2Ar5iNNhJ?~Ns7be;MebVp*W!G>pavTL6;{*wts0f2ZiuXUWf^t5^JYy$z=2&?1*;6PnWtv!9KySTxF8kJ5+1LDpo|`W6Kl1{{skhytKKJucE3SE5hEZ&C z=)Q{f{E6cF1<}v{^yJHa#W*HyjaF0+Ksp|lbp5YU+Kd+$XbFo1Qbdr*uyqQFQLL(t zcsfjgGZ^Sr)4&#*i*JEdRfp7NMDKAaF)Jxq!2u9>`ABkKgd69<^9dm5`tZw*@y;{~ zbd9#?rW9r34E6`M?Vs&W+A*fvnksQ#y*cMVGjgX`((bBEu=~oMjn?R70|??KWqcTU z5bXdwA1`kLqsjUNbH&t_1O4#DcmuTD${l;X5laA9lwPqje+>2%*6^p3)cx)LgLr}* z&+;mUNwFEfX#Jrn;y~|Z829vH4>kp*$l6yGZ%VH)v(LUrMig0JRZiG5XZ$wPvjJI*}|b{>hF+GWdEU&~9<`1|kMERtbr1egQ9w%zrK4u3T3?O-%X|{F8s*S@D&}tKg)u>o>z0NBt~y(j}zb?JsoqFh*mvp8;d-(^vxO z%i_#&`h(}9q9Z-U+{xCoov||m8_$NH04TE^w*9IC3D08r16`S$QBo&Fko^g`TXR~v zM-WJ>NvqF0V5`7}Rj!wleHY{U)zq=$!3UO>JWWER+;Nwlw|nkXy~7uUrjIB{5HbAMUaVTAzk+B?EyWDoMYMN z`GkVOaFIel5VbqxV3CyI)vCW*pa3Zn>edB-*EV*Uz;QCW^k2on zJ!xE>Lc~T-hxh|kz{JiV-)wH|tfi!XSL+eEf!abl%YT}Ouqo|ULl3eF&>y)tZI6lE%0_i(o-#V!Nk^6ux*^a9s%yrsNG z>xOnC5uiKdZ~e$?CoD{EoKd(F*a4Gy9H~=~^-#0-!z&fT@^pS=dqFhyoBR3hq+;o*pu{aj=e9tQh z*V%7gjAPSZe`@vd?>n@%e30mu9(u6?c{n-<Y&R5m4^k)1A*{dvn zHECFhJTi6mx_Fj10W47n8T;%Lch5um1iqT3`NM=@&L@~--w&yYdwL zN5+ZoFhxl|<7)5iKaNuk5N6^eQdbf$-!>T-&AZIvsKK1P0a zis521xQ*En#%e6`82q(&F^2%nHHh z?=67%P*b%FIBY)Y;k91DF>1ta-17mcHo45g*9=o>&sy(y(vi!kAf#gcTvZI3P^U{K zt!feFvg^C0bE~fasf%v*r86R0;u9{#Db=5)cP77%tqH~%Hr&YX3`bYp|lfn_Vh)-p~feak>NzGDInGD_b(~u&_w7Ro6 zqXbU2$keDu9S#paItis8aPjk0mGBEhAz<-5T!Uyu_QdFjo?y$@z9$ctELB>-z?QRW zsx}AHJ2q;M;O*bxb+l24qNqAr{Pb>r#tgE4?QM(v2Vez26jS}@8s6DCVKSaQR#oUY z1e)kKUsu=c--idelaOUqc^WL@Sar7giEkRDq5|Q2{P6p?x`mMV``by{J3Z7=H+jCv(p)4N8ES^Qn8!9tUR(95x_MExDSsUE5 z5+n;tVD;~5qtKrHkV{MH4F`ELxArxaexB{>_eSK42MT;Jy%Jnm2Zy!iUN`>+OjSkJTH{-=s6UmhW=36JP# z336zwoQv`75LnIe9uqsz6c2w!e^+0r1OKUm5I4NCpVPe+Bdo4`NFHx1)rY!mzxFo6 ze;6$`SANsTgH3n-TedD3jWGGecBR~QEIgBd#LDj6YV!Vp1Q#<<4bI=Ej4C9S?1)s=TyE9#$bclO>-2XfTC{W zDcz?`FMP2`Ie3CYUt+wG*hEnx3g~o+GgMk1*Dp-MIZ&3ddoDxPi}c>WW@s>op6^|6 z℘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%0AkxG5kj~J9VeaSm*R;nLbyi)>lQajIK+?Kx_nUu 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%0Di%aY@+pXXd0dUMl$aENC(5boCV_qfv<2Tlm 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