From d9a4d42ca0b7aefe803636d354b6f26d90b352d0 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Fri, 21 Jun 2019 10:54:53 +0800 Subject: [PATCH 1/6] Low Power: Stops background feed refresh --- iOS/AppDelegate.swift | 8 +++++++- iOS/Settings/SettingsView.swift | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index d03cae7e5..c78102625 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -253,13 +253,19 @@ private extension AppDelegate { } } - /// Performs background feed refresh. + /// Performs background feed refresh. If the device is in low power mode, it will not proceed with the refresh. /// - Parameter task: `BGAppRefreshTask` /// - Warning: As of Xcode 11 beta 2, when triggered from the debugger this doesn't work. func performBackgroundFeedRefresh(with task: BGAppRefreshTask) { scheduleBackgroundFeedRefresh() // schedule next refresh + // If the device is in low power mode, return early + if ProcessInfo.processInfo.isLowPowerModeEnabled { + os_log("Device is in low power mode. Background refresh terminated.", log: self.log, type: .info) + return + } + var startingUnreadCount = 0 DispatchQueue.global(qos: .background).async { [unowned self] in diff --git a/iOS/Settings/SettingsView.swift b/iOS/Settings/SettingsView.swift index bf7eacc1a..87e01e8be 100644 --- a/iOS/Settings/SettingsView.swift +++ b/iOS/Settings/SettingsView.swift @@ -41,7 +41,7 @@ struct SettingsView : View { } } - Section(header: Text("DATABASE")) { + Section(header: Text("DATABASE"), footer: Text("If your device is in Low Power mode feeds will not be refreshed.").lineLimit(3)) { Picker(selection: $viewModel.refreshInterval, label: Text("Refresh Interval")) { ForEach(RefreshInterval.allCases.identified(by: \.self)) { interval in Text(interval.description()).tag(interval) From fbf2da0ab5ac818020da5dd7ac8bc20bae92639c Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Fri, 21 Jun 2019 12:58:36 +0800 Subject: [PATCH 2/6] Set bgtask to complete --- iOS/AppDelegate.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index c78102625..899bdddc0 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -263,6 +263,7 @@ private extension AppDelegate { // If the device is in low power mode, return early if ProcessInfo.processInfo.isLowPowerModeEnabled { os_log("Device is in low power mode. Background refresh terminated.", log: self.log, type: .info) + task.setTaskCompleted(success: false) return } From 11961605d57ec14355dbd9d3655eb566a99b2d79 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Fri, 21 Jun 2019 14:24:52 +0800 Subject: [PATCH 3/6] SF Symbols MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Updates more of AppAssets to use SF Symbols and tints using `withTintColor` rather than `maskWithColor` to stop the aliasing appearing. • Updates Storyboard to use SF Symbols where appropriate. --- iOS/AppAssets.swift | 46 +++++++++++++++++----------------- iOS/Base.lproj/Main.storyboard | 40 ++++++++++++++--------------- 2 files changed, 42 insertions(+), 44 deletions(-) diff --git a/iOS/AppAssets.swift b/iOS/AppAssets.swift index d53da2302..beb0d45d7 100644 --- a/iOS/AppAssets.swift +++ b/iOS/AppAssets.swift @@ -18,26 +18,26 @@ struct AppAssets { return UIColor(named: "avatarLightBackgroundColor")! } - static var circleClosedImage: RSImage = { - return RSImage(named: "circleClosedImage")! + static var circleClosedImage: UIImage = { + return UIImage(systemName: "circle.fill")! }() - static var circleOpenImage: RSImage = { - return RSImage(named: "circleOpenImage")! + static var circleOpenImage: UIImage = { + return UIImage(systemName: "circle")! }() static var chevronDisclosureColor: UIColor = { return UIColor(named: "chevronDisclosureColor")! }() - static var chevronDownImage: RSImage = { - let image = RSImage(named: "chevronDownImage")! - return image.maskWithColor(color: AppAssets.chevronDisclosureColor.cgColor)! + static var chevronDownImage: UIImage = { + let image = UIImage(systemName: "chevron.down")! + return image.withTintColor(AppAssets.chevronDisclosureColor, renderingMode: .alwaysOriginal) }() - static var chevronRightImage: RSImage = { - let image = RSImage(named: "chevronRightImage")! - return image.maskWithColor(color: AppAssets.chevronDisclosureColor.cgColor)! + static var chevronRightImage: UIImage = { + let image = UIImage(systemName: "chevron.right")! + return image.withTintColor(AppAssets.chevronDisclosureColor, renderingMode: .alwaysOriginal) }() static var faviconTemplateImage: RSImage = { @@ -52,9 +52,9 @@ struct AppAssets { return UIColor(named: "masterFolderColor")! }() - static var masterFolderImage: RSImage = { - let image = RSImage(systemName: "folder.fill")! - return image.maskWithColor(color: AppAssets.masterFolderColor.cgColor)! + static var masterFolderImage: UIImage = { + let image = UIImage(systemName: "folder.fill")! + return image.withTintColor(AppAssets.masterFolderColor, renderingMode: .alwaysOriginal) }() static var netNewsWireBlueColor: UIColor = { @@ -65,26 +65,26 @@ struct AppAssets { return UIColor(named: "smartFeedColor")! }() - static var smartFeedImage: RSImage = { - let image = RSImage(named: "smartFeedImage")! - return image.maskWithColor(color: AppAssets.smartFeedColor.cgColor)! + static var smartFeedImage: UIImage = { + let image = UIImage(systemName: "gear")! + return image.withTintColor(AppAssets.smartFeedColor, renderingMode: .alwaysOriginal) }() static var starColor: UIColor = { return UIColor(named: "starColor")! }() - static var starClosedImage: RSImage = { - return RSImage(named: "starClosedImage")! + static var starClosedImage: UIImage = { + return UIImage(systemName: "star.fill")! }() - static var starOpenImage: RSImage = { - return RSImage(named: "starOpenImage")! + static var starOpenImage: UIImage = { + return UIImage(systemName: "star")! }() - static var timelineStarImage: RSImage = { - let image = RSImage(named: "starClosedImage")! - return image.maskWithColor(color: AppAssets.starColor.cgColor)! + static var timelineStarImage: UIImage = { + let image = UIImage(systemName: "star.fill")! + return image.withTintColor(AppAssets.starColor, renderingMode: .alwaysOriginal) }() static var timelineUnreadCircleColor: UIColor = { diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index 3911beb62..26ea8f3a2 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -1,11 +1,8 @@ - - - - + + - - + @@ -57,7 +54,7 @@ - + @@ -67,7 +64,7 @@ - + @@ -77,7 +74,7 @@ - + @@ -87,7 +84,7 @@ - + @@ -96,7 +93,7 @@ - + @@ -105,7 +102,7 @@ - + @@ -115,7 +112,7 @@ - + @@ -155,7 +152,7 @@ - + @@ -216,7 +213,7 @@ - + @@ -289,13 +286,14 @@ - - - - - + + + + + - + + From 183490d3b0d2e698a0c13f0694bc59160a3df518 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Fri, 21 Jun 2019 15:29:20 +0800 Subject: [PATCH 4/6] SF Symbols MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SF Symbols • Updates more of AppAssets to use SF Symbols and tints using `withTintColor` rather than `maskWithColor` to stop the aliasing appearing. • Updates Storyboard to use SF Symbols where appropriate. --- iOS/AppAssets.swift | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/iOS/AppAssets.swift b/iOS/AppAssets.swift index c28c5e0d3..c5341ce80 100644 --- a/iOS/AppAssets.swift +++ b/iOS/AppAssets.swift @@ -14,26 +14,26 @@ struct AppAssets { return UIColor(named: "avatarBackgroundColor")! }() - static var circleClosedImage: RSImage = { - return RSImage(named: "circleClosedImage")! + static var circleClosedImage: UIImage = { + return UIImage(systemName: "circle.fill")! }() - static var circleOpenImage: RSImage = { - return RSImage(named: "circleOpenImage")! + static var circleOpenImage: UIImage = { + return UIImage(systemName: "circle")! }() static var chevronDisclosureColor: UIColor = { return UIColor(named: "chevronDisclosureColor")! }() - static var chevronDownImage: RSImage = { - let image = RSImage(named: "chevronDownImage")! - return image.maskWithColor(color: AppAssets.chevronDisclosureColor.cgColor)! + static var chevronDownImage: UIImage = { + let image = UIImage(systemName: "chevron.down")! + return image.withTintColor(AppAssets.chevronDisclosureColor, renderingMode: .alwaysOriginal) }() - static var chevronRightImage: RSImage = { - let image = RSImage(named: "chevronRightImage")! - return image.maskWithColor(color: AppAssets.chevronDisclosureColor.cgColor)! + static var chevronRightImage: UIImage = { + let image = UIImage(systemName: "chevron.right")! + return image.withTintColor(AppAssets.chevronDisclosureColor, renderingMode: .alwaysOriginal) }() static var faviconTemplateImage: RSImage = { @@ -47,10 +47,10 @@ struct AppAssets { static var masterFolderColor: UIColor = { return UIColor(named: "masterFolderColor")! }() - - static var masterFolderImage: RSImage = { - let image = RSImage(systemName: "folder.fill")! - return image.maskWithColor(color: AppAssets.masterFolderColor.cgColor)! + + static var masterFolderImage: UIImage = { + let image = UIImage(systemName: "folder.fill")! + return image.withTintColor(AppAssets.masterFolderColor, renderingMode: .alwaysOriginal) }() static var netNewsWireBlueColor: UIColor = { @@ -61,28 +61,28 @@ struct AppAssets { return UIColor(named: "smartFeedColor")! }() - static var smartFeedImage: RSImage = { - let image = RSImage(named: "smartFeedImage")! - return image.maskWithColor(color: AppAssets.smartFeedColor.cgColor)! + static var smartFeedImage: UIImage = { + let image = UIImage(systemName: "gear")! + return image.withTintColor(AppAssets.smartFeedColor, renderingMode: .alwaysOriginal) }() static var starColor: UIColor = { return UIColor(named: "starColor")! }() - static var starClosedImage: RSImage = { - return RSImage(named: "starClosedImage")! + static var starClosedImage: UIImage = { + return UIImage(systemName: "star.fill")! }() - static var starOpenImage: RSImage = { - return RSImage(named: "starOpenImage")! + static var starOpenImage: UIImage = { + return UIImage(systemName: "star")! }() - static var timelineStarImage: RSImage = { - let image = RSImage(named: "starClosedImage")! - return image.maskWithColor(color: AppAssets.starColor.cgColor)! + static var timelineStarImage: UIImage = { + let image = UIImage(systemName: "star.fill")! + return image.withTintColor(AppAssets.starColor, renderingMode: .alwaysOriginal) }() - + static var timelineUnreadCircleColor: UIColor = { return UIColor(named: "timelineUnreadCircleColor")! }() From 5e5c0e0e3d34ee2672a9d73f989304d73cbfecc4 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Fri, 21 Jun 2019 22:16:02 +0800 Subject: [PATCH 5/6] Rolls back low power changes. --- iOS/AppDelegate.swift | 9 +-------- iOS/Settings/SettingsView.swift | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index 899bdddc0..d03cae7e5 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -253,20 +253,13 @@ private extension AppDelegate { } } - /// Performs background feed refresh. If the device is in low power mode, it will not proceed with the refresh. + /// Performs background feed refresh. /// - Parameter task: `BGAppRefreshTask` /// - Warning: As of Xcode 11 beta 2, when triggered from the debugger this doesn't work. func performBackgroundFeedRefresh(with task: BGAppRefreshTask) { scheduleBackgroundFeedRefresh() // schedule next refresh - // If the device is in low power mode, return early - if ProcessInfo.processInfo.isLowPowerModeEnabled { - os_log("Device is in low power mode. Background refresh terminated.", log: self.log, type: .info) - task.setTaskCompleted(success: false) - return - } - var startingUnreadCount = 0 DispatchQueue.global(qos: .background).async { [unowned self] in diff --git a/iOS/Settings/SettingsView.swift b/iOS/Settings/SettingsView.swift index 87e01e8be..bf7eacc1a 100644 --- a/iOS/Settings/SettingsView.swift +++ b/iOS/Settings/SettingsView.swift @@ -41,7 +41,7 @@ struct SettingsView : View { } } - Section(header: Text("DATABASE"), footer: Text("If your device is in Low Power mode feeds will not be refreshed.").lineLimit(3)) { + Section(header: Text("DATABASE")) { Picker(selection: $viewModel.refreshInterval, label: Text("Refresh Interval")) { ForEach(RefreshInterval.allCases.identified(by: \.self)) { interval in Text(interval.description()).tag(interval) From d6ea5bd636b21a40d9985c752dd95c0b233f3252 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Fri, 21 Jun 2019 22:40:17 +0800 Subject: [PATCH 6/6] Deletes assets not required --- .../chevronDownImage.imageset/Contents.json | 12 ------------ .../chevronDownImage.imageset/chevronDown.pdf | Bin 3996 -> 0 bytes .../chevronRightImage.imageset/Contents.json | 12 ------------ .../chevronRightImage.imageset/chevronRight.pdf | Bin 3993 -> 0 bytes .../circleClosedImage.imageset/Contents.json | 15 --------------- .../circleClosedImage.imageset/circleClosed.pdf | Bin 3905 -> 0 bytes .../circleOpenImage.imageset/Contents.json | 15 --------------- .../circleOpenImage.imageset/circleOpen.pdf | Bin 3985 -> 0 bytes .../folderImage.imageset/Contents.json | 12 ------------ .../folderImage.imageset/folder.pdf | Bin 3994 -> 0 bytes .../nextArticleImage.imageset/Contents.json | 15 --------------- .../nextArticleImage.imageset/nextArticle.pdf | Bin 4237 -> 0 bytes .../nextUnreadImage.imageset/Contents.json | 15 --------------- .../nextUnreadImage.imageset/nextUnread.pdf | Bin 4132 -> 0 bytes .../prevArticleImage.imageset/Contents.json | 15 --------------- .../prevArticleImage.imageset/prevArticle.pdf | Bin 4239 -> 0 bytes .../starClosedImage.imageset/Contents.json | 15 --------------- .../starClosedImage.imageset/starClosed.pdf | Bin 3961 -> 0 bytes .../starOpenImage.imageset/Contents.json | 15 --------------- .../starOpenImage.imageset/starOpen.pdf | Bin 4043 -> 0 bytes 20 files changed, 141 deletions(-) delete mode 100644 iOS/Resources/Assets.xcassets/chevronDownImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/chevronDownImage.imageset/chevronDown.pdf delete mode 100644 iOS/Resources/Assets.xcassets/chevronRightImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/chevronRightImage.imageset/chevronRight.pdf delete mode 100644 iOS/Resources/Assets.xcassets/circleClosedImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/circleClosedImage.imageset/circleClosed.pdf delete mode 100644 iOS/Resources/Assets.xcassets/circleOpenImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/circleOpenImage.imageset/circleOpen.pdf delete mode 100644 iOS/Resources/Assets.xcassets/folderImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/folderImage.imageset/folder.pdf delete mode 100644 iOS/Resources/Assets.xcassets/nextArticleImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/nextArticleImage.imageset/nextArticle.pdf delete mode 100644 iOS/Resources/Assets.xcassets/nextUnreadImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/nextUnreadImage.imageset/nextUnread.pdf delete mode 100644 iOS/Resources/Assets.xcassets/prevArticleImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/prevArticleImage.imageset/prevArticle.pdf delete mode 100644 iOS/Resources/Assets.xcassets/starClosedImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/starClosedImage.imageset/starClosed.pdf delete mode 100644 iOS/Resources/Assets.xcassets/starOpenImage.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/starOpenImage.imageset/starOpen.pdf diff --git a/iOS/Resources/Assets.xcassets/chevronDownImage.imageset/Contents.json b/iOS/Resources/Assets.xcassets/chevronDownImage.imageset/Contents.json deleted file mode 100644 index 4e4464069..000000000 --- a/iOS/Resources/Assets.xcassets/chevronDownImage.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "chevronDown.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/chevronDownImage.imageset/chevronDown.pdf b/iOS/Resources/Assets.xcassets/chevronDownImage.imageset/chevronDown.pdf deleted file mode 100644 index 60ce49f7646348500c07566968209cc16a9e37d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3996 zcmai12{@E%8@5bg2$en6mkcS(td`0;)~K;(XIA@?J+hVM*s>>tWD8k}N;G6Aj!Cvu zNVe>etjRy4`cLOS=eqvynrpsy?)Ulb?|Gl+xvsfyh_0%-1WXbEhBQyEOwJX4x%;ZQ z6^sO+fGf@ceEvKjr9*VF^|S*}R7f9?Qnz>VB)U`YPFPQ(DiQBWAOZ>sU=L4sBGwt~ zOHb6*c0r$Ddq2(P5mK{pBgE@cyb(vRVg8{~F7mcEYN;nxGi=|=2Y&ylkR!)z3iK;q z6p=inHukeV%*c(e=qgUu-#rcKCQ;VdjbEPjzVgV}@GG4P+<)+tQU7j67PISt5Bl2 zL4i&C&86?N6-st4JSDNaAqU0U(_BW27EtT7glDb4qNJ^R3Ru^hd0V!3Y zw>_Syuc7k)yPbK<$IxJiCxSwjA-_5#1VB~={8)h3=QO!NdXZYex(wl=BHpU|)VU6d z850a&&}&2p;nlcUZ(PR>vaE3Gwl?Ugs!a~ZII=92qP~oz@3fhY4oyED9I{;s7_6bw z{dOJH=xIV9jLb3NTAXXJICQwPd7Xielb+p#{>2!H1k%`0W$61xmQPE&ui09;wkR1) zsC_41uPfp)up5*hB!d>-PX|`(mp&gT!aK>3Y*5+458nm7Tul*!hr{4JIV|@c2#q(F zJFOK?ovH1(ohmYsBVgLi{~VbWQ>#0Y4jIdh0p(cShJ3Kiy~ac&8)~J~O|GBn?cKPe zLkHzbv+kM}$#IH=t8wu!My@c>F()_6J$Gl1-juV;qVp}VornTOYT*hF4&Jt({M1g` zTCOzM#KF!aH(eb2!&is0TE%t~${SqndP|KSV(Oe`m#|POxUgV4FlDz{KQwwQ&|pWt z-EZ4yS!AA)r5uxGI_fn4K#I&mw%LfBd7+#P=*Xa8qMllYzN7re`1pN#ZAC9{M^+SP`g4>5_CB!EMM`p1I!q(zzd z12Y}D?7Xb$0>b2UtF@TgUFGS}CmDrZ6#W42R;GJnw>$A(BuAahn5z!3a0T5r8ftmB@X*(>IE9(7N)gCp`sfm@RK? z-DP?OAouUk2ZSEH&CrWI@P_V5@KD7$L1vA{&JU`-+;^CGU%VT;P|c&j{{X2u?M6Xqk!sw(j&!t@7EI3@_?F%+q#$Ft`hc^0dgaAksVe?$)UHXlzb z|9FIH%oxrXJAk_Y?Z1t`ZLGsPB~9W)glt~V$MrufFcE#A=*=R1Fe6r?+1Mt|#=Ii+ zA>$kD{5e7Pwio;#1>FLx`7Gcrs4~z~j=`AP;JKy)VPMrvURb^G@i&Mx6O5)NA7v|L$7E7xNG1PJpvJ{aQA)iRecNrGd_T&h0= zlRTK}lWHxQEoyxt=)(7cZ`BNX4N46LA-NUCIqG9ojq+hyYU%ejQ4N{A?cSuBmeu2*$g3QT>H8DGmD*zF?~=65eKZpki&MrWJxTgkm8d?$+Sl9PJD})t*D9gtKM?>+B7Ra zn>yQFudPo_^J+p6r$SRaGTCe5ZFTR~IO7P|~dkjiMeoYJy| zLWv%Qyx|i0QvCf&6WiQNmEDIe6D7@Ml%HBWHSkfvXiJ$$S(ocAzqFyK+tE+ppzb&DcD{Dj#hUoyjxIV=cZQ zZXhuye%w^dbf1ZH)ojI9)7$2BM@xJ_Te!nGzOuVuc2_E7?XU2Zv>fr{f(#hsoKzh{)2O$#;UuQW5$_8{Y4-4Y88%Vns$qIAL!0y zW#j$K+b6;2-g9NFTF^Z~k{}sl?dz7)XY?**+-z>E>*8SSw0E;}^Y9z_p`GgOGaT9+ z2^!ID$%RSN0u)xOKT^vtCtNOnnz)Wza#$)HU=aMdcg7toCi_|88a!c!dVXO^8z(B&^OdxKQ8s!TG*nGhe72V+B@t#3yRH> zd&`4QQXKg}Wd3Tkk#C@{4@d&1riyN^)r@O@-L4TG%cITXqu!y>qSmi*QO#d1RZTn9 zMBKD;LOsST1}Ko{IevuOU)bBdX#MrDcEtGnNAUQfB*NlW<@{Us$CE{!l(Km12Gc92 zj~zLFbd+;9@^E9(q)yqY^)sJI&|p$+#CGCz>zV1;Wy=lXw**jX=%dgc)zoIoNW4~= z7PrEVO&M6O5Qtj=V-*vuf#t3IXZkV!GIy@S&)gWfS)ayDpwK|bL;nI1u<4ebO zAc}`k`RP@Hk65ZzPPAyK{P7A}N%2J1SsX|sgUvZruqdsCF?-S=nO#?1( z4tK4EE|Bxr^0$3Hcr*LFAD*fCVv>e4wHkU=_QA4rvTNnu%G27*^L55p^D8zS_Hl%` zD){|JsYGn z+=6{S_MnL}cW<_)-ZscONOeJTIf0@Prjg&)80Xc0u5VE0zD%-oV{BsU!|^L^t~(#T zqWuq-%;+L=pKX9-PslBQY}+`#l*M*_=xS6z@r>wB_S%zIW>IE21MdeSpX5o~`|J3R z&II>n9_>CVp_s9IZ8c^sExq!ktu`g0oBK|NT((c(ib`wPa&#nb#M#T93N=*|uQSUk z%0@avQp>HDpSc&kBX55*N-eQ1le0V*kQqQ;2;YevI98i=%X&W0e&+F#GkM0Xa_81~ z>CL)*0n=NS+fpNIH35@1cQcPLM(^KRl&tgLwR$f<6EL#V!&Jm!rP$>syJNS5pC7*` z3dWqyDpoAr>E9S66_Hox?+)5fD*v#J3$I2??WSy&W199+iYRB)tJG&TN;N1kn=!+F z4_8}0cgCdlj)&EYeSfl^(o>Qh=(A0>#dS1)cI=r;Q@k*8zfNvzV9j}&@M)sg$9}1x zFlwZvPH`<{CubYK+LkagkJ-SaWXCG{Tx0pR;w$1zni^dX{j&W}{Y+D#d!kty2LB~^ zY5J9hQAMs68m)r$AQAwYfYk>qe}&LQ^e;{Pm&W!0q%IN(_E;5HU%(tn4S^v6**%Ty zMHSvKKuX)5;6c^S@E>Hq>0=lz`tO8jtS8pV)%J&a_xLH>|5D{J*v}_UIb-n{1HhQ* z?qToh0>Ge>Fr*|BusEgSW$#1)V6tjdZ(tz?=y_q?J^cWxY~NG*zMf*g4g;g*Lwort z)w6IYOb&{K$-s~ZX*kRb3KgY({)+r9OR5zhc;TsTY%de4IYU!Tm?t#_Rho|9frYLGj%lf8iGK{$blgcHHxPX7j(@ zebw3qMgcH@h;;>@J`F&P@Se_O7eI~8( zF4MEx`WB|HWAz7)NSyVdmCVH#y_A+8+KeLm!nu|blGYf?NG~_IV%|N>GI#(C$P zg!d!^$e(pI#d{NdNI1MVApaB4BzltR``!Sf_NI)Q{^Dco|L%n`iHI}9lL2cwsg@34 z3qUoA?nIKA7Y2t17|qi3h64(}2>#$u{Db3HKb3Z(pl9g`LDd;O^`tixfNJ4=2{^o| zuEzgvb;eD!?#!ZyyLk> zX59#JoHifl^=sHcj<3ANZA~Ux+O**qH;#o8xo;!sTkV#kLsM0QL(U6s;m#K&99+?Vqw zkJokHN|l_*7P0IWeu~PBsWTo)hm7UKfU<3FK|VO=Tw%jg&grK!(N>Q3_O9MBVuJCd z*}s^Q%yy4NX!8kwj{M5P#Gc%$^pwOMy{6=n$>g8sJP`$o)W_!S9lS-Led=&pU#u`& z!@`dzx11UK%ioB)RLOM%CKy~sys6C$vGhoDNtiDYo1eEFm~>fd7#clz)oe?-BVfaP zQF4x&sUDMQIqE+507?;HT9&Z7eW0Q~#hj_qW49V@>;ZZKVEVd?sdD7bw}avCc8RSY zxuiIw=jPnKnX}wvkAG6w$ht;+-Vm;|lGgQkSLDi5W`us?|HZ3nd&rs{d3oh_UcH8UgciCP6 zsNGx4fuVbEvGij0ykUA0JXC&4j9s_6>w}g*{~b2L#&=@|)dDKqRn3B9qFi-@@HGZzMP=@5GA?S-W;0+y5}nLh6C4FNgfz+p#BF&pX69SeK_hWPO8~ zJ0-^5-YEQ0%9G;Mg=;)b-e0g+4%dT&#DWfv z#vN*Fkc#K90=Zq|IeZh4aF;m8E5bg-z7@K+8D$bufF_HF^ImGT!Ad{8@kafrzL@0M zBtHFc2|-f{>9op_bNa60wvx({l*37#CmnT3LY8WF=u(L+z#hVrsA`;iRFV&EAf~M` zbXLirM(vW?CC&S$dkQ@JEQ)T`W>}#qT7d?EP~9YC>bKPK&XT0!1hOl#gCBXD)hs4WYE5P#IpycGb;c^2mBaM4)9qft9aV#~T>X%8)ut#lAY(~tK*G2|Zue*M4nNgle5=j@S z7ZDaQ7fD66$qA=>rgx^((x*`El`dACk3m*6tEtC!u#~jVFU~nZDx#ILOG@YSPxPqd z4i_tz;0h`%oO8}rbnmxKl(kk+ud=B!^V2{ZLM@>7WhM*RDkfPaS-B0m4c0-=8(#r$ z9ir85Hx*<@WjA0lF*#$nBSi_tJ;!paa!$1=;+|ZLT2vXgmMo9V&`;El?L1@lrf=k& zLoKzE%H=lcB8e)Nt82ek{@&8^fzH5PrIynjS8^`hUOUdI9BmPuAuudpFEcM=c4AiM zkfpTcE(?#!nez3Px2@@Jwz$CdaMy8MMR(rtdw|tm${e4 zHzYUUY|0V-5ftu~H)P+Vb)kX%duKn5Rd+AOjI&8ymU`H$pFf&m*)83@r#pv}OYnHtJ(DzX9i=Zd|N$QhuWp>o>&m0ETo;X+we;tF=bbs=Bnq)Mbptjhj+-}>S}=qhH5Wy^Pc_}k!@srA7P zG)NKjfa4Q57o-C^&!)nO;Mljz2h`HU+*Eh%5cIXZgiW6Si^is=Z`f%LIWAlNb#EbA z8Po&Gxl7gN{#X6|Kqs);TAHnOdT|}EJ9MLC1q=oJbUJmPY4_`%(Y~yms%@BRA!AuF zp%Y^j1LP?S91`WfEa6KkTzNfg7%@Kg5j_4`7HM;{V(u;JF|DwRS{iTPWO?z}LD548 zMtQd*_cs^Pj7pd6Yy4=S!KAu~jl`+8<5RJVwyXHf1W;<|qtG6$)K=R_oPMc3zy3H2 zTK(|{pGWpzLnaE7g) z&QtC$-{0{2;LGm!et5d}n?)Md(r)Ng=?B{q+KaFEzE;&;n5#dJvA*cQLx^*Xt3(t$ zq8OC9>h|Z)I*o8x@?PxTEd6euLiH^(NnJsiK-PTczNUGwt( z;%Q@KPR%Mv@vze3$M)4j3z=M}hb~107EMcSWi3B>Wff(WJ@9@Y@=2~d;j+=?(dppc zj04>VPN?4AzOodvoR(hk+}V(t(9M76wo;bg)vp?DVT;j`f)OV#kX33cCthcimY0rn zg`}3*E!L0<-%&O;%~Ok=OO?5XHG22@XW9D8+jj4jrvpc}de{ni>{MR_C~moI;pWEgNrBPF zGK*A8w)$5GoeC*Sb9VX$o2F_oQc$n7KCtXD<@jl$*N?D}mmf7! zT(7zuvX#AoTWU|3o+6*|4CwUWy zo&X#s3rESK0Gp#4J_L710IsNwK*-xj113Hg5;*{%%k~|m?@yNgeHl0-AI6^_)jElQ z!IfYrxB?u7P(;D3U@$5A=kLfrvZPx9M;{#BitS`VcV?P&2S%o+pvBPfJDhaz4AJq= z-+$-tPr^HaVE`NnhW-Bo$jiwgPc(vIIX zBLvXvM|VZ0L?V4^7?VLSq`s#Ukv>8{*IM);I*r3CDaa`zunIUOI1H!gDDUKiK`LV4 l3JOR#-VuRU0srq1x`W#>&-BsQX$VqIK^_c&Xrpz&{|6uT#1H@g diff --git a/iOS/Resources/Assets.xcassets/circleClosedImage.imageset/Contents.json b/iOS/Resources/Assets.xcassets/circleClosedImage.imageset/Contents.json deleted file mode 100644 index 3276935e9..000000000 --- a/iOS/Resources/Assets.xcassets/circleClosedImage.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "circleClosed.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/circleClosedImage.imageset/circleClosed.pdf b/iOS/Resources/Assets.xcassets/circleClosedImage.imageset/circleClosed.pdf deleted file mode 100644 index 4535180631066b4e0a9ce359e66eefd4cbef0b9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3905 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 Bnr;99 diff --git a/iOS/Resources/Assets.xcassets/circleOpenImage.imageset/Contents.json b/iOS/Resources/Assets.xcassets/circleOpenImage.imageset/Contents.json deleted file mode 100644 index 50e5308d1..000000000 --- a/iOS/Resources/Assets.xcassets/circleOpenImage.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "circleOpen.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/circleOpenImage.imageset/circleOpen.pdf b/iOS/Resources/Assets.xcassets/circleOpenImage.imageset/circleOpen.pdf deleted file mode 100644 index 6fd77db9a348f1c2f896bf3a63623396f3c3684e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3985 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 diff --git a/iOS/Resources/Assets.xcassets/nextArticleImage.imageset/Contents.json b/iOS/Resources/Assets.xcassets/nextArticleImage.imageset/Contents.json deleted file mode 100644 index 7b74a078a..000000000 --- a/iOS/Resources/Assets.xcassets/nextArticleImage.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "nextArticle.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/nextArticleImage.imageset/nextArticle.pdf b/iOS/Resources/Assets.xcassets/nextArticleImage.imageset/nextArticle.pdf deleted file mode 100644 index 06f3dd2c315ed7ee636519439ac4d795c3279d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4237 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 YpAfncX=wbo5QH=w3KkMl#i)V*4+N4#Qvd(} diff --git a/iOS/Resources/Assets.xcassets/nextUnreadImage.imageset/Contents.json b/iOS/Resources/Assets.xcassets/nextUnreadImage.imageset/Contents.json deleted file mode 100644 index 1b632e975..000000000 --- a/iOS/Resources/Assets.xcassets/nextUnreadImage.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "nextUnread.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/nextUnreadImage.imageset/nextUnread.pdf b/iOS/Resources/Assets.xcassets/nextUnreadImage.imageset/nextUnread.pdf deleted file mode 100644 index 0e125ae7b63799ae430e145ff8f0f17a16b90360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4132 zcmai%c{r5&`^N`U7(yi?)sw?Wg;@+uvW`6&dqx;DW-!*WQ?g_UBRf$@k}XS(B0_e` zF=S6jwrp8)$d=z|`JK-9e6Q>KT+cPnXWpOtxv%^A-0weLx2T?~x&&Mj2@!3WSe}^8 z`EtLbp$Q@lzyKGbJ>>j(KuU+~Z0l|Zpcs+?Af--mbSJwqo{j`}vMSlyg+vAv6d-Qy zu4IA}#G5I^@PczA!1>+{g1?`D4Ipjnb{KQ>!rO-}+bcNY|>{0U;BVRF>dOn=N!F=bZ1+O+Pnb&p4ejA>Mp{mpl)`7;$m|0?U zU>zV>f>Cb=r~J$*RE)+tEh({gKObHRLU+x-wvZhf-3m4w&ZxkVWn&DXt! zZJkOq;>lFd-Xxxm?!p+KK#F8DrHHs=adI;3+ZI%giPO)@o98CTrUl%#$8*w?fNx}d zi-(Y%Nk7k=vD$6bZhv;4NE!I<=I#>lTNjOdu8;vKJ%a7`UstlTJAnMrQ3JA@i-)T< z*$t5SAz)mb-5L9Cz^)4ncDwsC-|qe|SLnIASR0bvfy<1fs_K9RAcb*pba6GjLa-(S zySBl&!2#Ky34Y6Q_O~2AorV4$C8f(KNJ@FvUCs<^0aB`DPl`3!Kttt!n=UQM%gAtm zFN|I#Th(zu7!X|%^koO$%4r?~>xXLv=rM-|Lp@dZsPpa@Hz66lV$ui`wpQcixEVz3 zV_)XcYpT^(Rht;1I`dKo7R5^I2Mi1)NyW<}#EQ=A@ z3xcTi$eh0c<)2_qFr+mKAa=m7R}#e$p>PCWCi{cO!eb4^j;lG7rz>0UBtyqD1##^H zFQwC|m3qUeqN7<T69c`Bm@_uAH9sv&5B0k#RcZV|Zsl{eviDtM?gr82Rzc_l!TZg_< z%6S{cA5iR)q{bwQb4sy`oi7xcpU3r1+O5|Nj2ydRxGmq}yJ@@xouj8KQ`2!Hj&qNt zs`x;wB4&4w(y9}UL8VT6l_o|XV;2C>@*Ys>@Vzg`LLDvR8a{H0aYW9|Il3`rI7puU zB)gdrE6up-6=JTeB+#`O)z(2GOA<1eJk8&PeP;G1DJcrZJKvNU(p;sQ+OZF;;;aX%4)09(a&n2wJaPi?zi? z9)$UWMZ{Urm)URjG7lWmQvK4dFt*q&8sYnGYU4PEd4%(*jk zV8>eK12L@b_aV}Ok}&2oR{MkkkXKlS0Z?#&CJ##zi=-wqMG5>=S)m^UQHJ+3dET_Y z0_qO*?Evcr$z0iM4!-ni-xUtd01YKbXzc|U({Lb#EohPF&;#ZC7`}(xDJs1@N6grK zFv@yod084U;W0dMO6wia+{34C=4WE`YGGsPR5xWivZSgK zV=BV5|Aa%V@I&T2wbU4{heuvSX~te1XW1K;Nw{;EuSsAm3`ZR$nh<)4+OVEG)^|*F z_$Os-c#whXLD|HfCyz|U9xHmX%j~}!CDCAF6>W97B>4$TKVeQzh^zUPz(=7gH_8v2 zBb-r1;4n%pLPhuuM8s1{1C6xo zg)N}+(5e&ht>;J@u7`0-me?YZ3;-|69jB<5a1zRk)fQ4y8PG**zfkf~^1);q?8|lT zHqF0Nk!FUiQuWjJlhTMsCVxpDYb}f~h;>MuO}-|IP3TMZO2$iOh~ZE8YkzyRRnDwm zt5j2q@k>A0NYREp^?24amTsi)!YK5IFO1?aCazbcAaDw*QU~e7F>MPPfAe$Ob zt)xbOk)C`(AEOV-6jLmBUWzBKpK?BRJyAH(CXp#II$y`wrH8jCE#E00+YPga+7s*t z>^FNP3!>;bbgy)J8eV#5d@F3Gq$1q6e8c{)`Wg9|c)?V`YC!=(W5HzUCX_&`b82hq zMCz1ubE%yf$1||mgxS;0J)HX|()_%|; zPV%y>a+!IVp_dBwf|RKgzF2=DQ$atYFymp3M$Kja*RMK&cUF4dCN z>p${i3p!6_nPtf}owa^`HDXC&>@u_@JWVT3E2{OPVSo3qkyQn~l+NieX$O@qKvgzB zD0z>=Jy!3%kFG!8ay`rE?)qsC`AE~qG`=A|{F(VPh7z-9j^o5}drX~5XG%8e-!-H< zSXlcthuV)>)7l>mO+G8klNj-=nfH@RwI~_ltJJNeuX3#lZ$dZWtny*rVO3mf{qCM8 zD}()d_RoGAEpK0<9LEfa`0SYAb_|OTER5n0NCrt88IBL(a3KI4ursxE+=}BmEdU=TmO%eZ$)eEJ0LL z#WYlEMz_3e(TI%VyTIqA-m1~4)}wJz?V4J$+J$7(GdS9~I@OE{Jd)=-e&o8YqCi?8IZSa5Ri)8J0kof@n>Y@d{nKGv4RXe7{kHv+E90r-&To#keresjfwDn)dDvEaehb~IMSXVQDh%l@ zG9P@Q>t#_}G5S~aY_t>Lq&cwoM*U3``N)WK#BjI%ef^SZD?8f4WRuDZ75&jFiT2A} zj*X6o9Os8@XodEJ$-jh>vDhckhK(W#SF zGuO)I)7~`?_SK9y`FAlzu{5$O9OD&w>EE)Z=TNBZ)JS+g`naAx`(UP`#?~M2uR5=} z6ie3#(a3JDi}vV|>+X}yl}(VTi;8P{GIq7uW&6Wlm}>_MruC3nFTR4$o4j_FVAbZ9adLre z5!yn|FU_xNK6E>(_gH0m5`OLmW%}8IQ`Php+IG@d;qB@@ep4G3n^ME86@C-9chZiq zMDE@AELnYR$MU`WwBPV{Cu<(JrDB`!*=@UR>$$N9Vi4@9^nAs_?VhiFHhEPmbNBnK z=(Jn5(V^uSsh!02Vr=~$dLI3>da3%1Mxh3sx=tPPeX`QH_=cL?H5O7M{_Xi%VrN0d z4X@2ATViX&qC@9wilX*#ZZ&$NchzZ%^l7}yi?Z-2Ct|puT5&aSJ9E=|r8#zb4*M0G zm=UGub)9`{*&FI)GdZ#r{AKgs{Jcw{-=SFsj`#(1}?)GAqXVn{tn3=4DyBpQWq#BHwHZKB03}6Z-5Nn z4gY6G48fh?=wkZ=-`#$4``=g&hyQ%zq!Ym!YY3Q-UEL@y&Hx-H373|X2Fy>Ycu*Wk z0Q{^P0wH5A4(NLjT-|*E2Dg7leQ$U1Uta_NH8Px3J%@n7(J*NQ9F9Q3k#I8@OpI~= z9r;_8j9Gx>Va=EdzgNN-5;2Tn(4A3&>MqEC&&d!kx{!YV|9Ab~u4Ees41gmcu>ZdR z859bM0&IYv8d64@aW1GH`KW zxMtTGjDys2wsB!t=*L=>VWRVBG=cz!6KxQ1lnmOMaa3>{6w!tZN0LcrVF)5x0rI~? ZewfhBonejd4MEDnQ4mp4HLN=1{{VI`3v&Pf diff --git a/iOS/Resources/Assets.xcassets/prevArticleImage.imageset/Contents.json b/iOS/Resources/Assets.xcassets/prevArticleImage.imageset/Contents.json deleted file mode 100644 index 3f375e776..000000000 --- a/iOS/Resources/Assets.xcassets/prevArticleImage.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "prevArticle.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/prevArticleImage.imageset/prevArticle.pdf b/iOS/Resources/Assets.xcassets/prevArticleImage.imageset/prevArticle.pdf deleted file mode 100644 index ad97268893beed550ed25a9005a30e5fd453af46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4239 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