From e691601fd9d797c57083e3b505fa64b2296f6991 Mon Sep 17 00:00:00 2001 From: Dwayne Harris Date: Tue, 20 Nov 2018 14:25:14 -0800 Subject: [PATCH] Add Share button and fix Load More action --- elpha-ios/AccountTableViewController.swift | 14 ++-- .../Icons/Share White.imageset/Contents.json | 12 ++++ .../Share White.imageset/share-white.pdf | Bin 0 -> 3912 bytes .../Icons/Share.imageset/share.pdf | Bin 3912 -> 3927 bytes elpha-ios/Base.lproj/Main.storyboard | 61 ++++++++++++------ elpha-ios/StatusTableViewController.swift | 28 +++++--- elpha-ios/TimelineTableViewController.swift | 14 ++-- 7 files changed, 86 insertions(+), 43 deletions(-) create mode 100644 elpha-ios/Assets.xcassets/Icons/Share White.imageset/Contents.json create mode 100644 elpha-ios/Assets.xcassets/Icons/Share White.imageset/share-white.pdf diff --git a/elpha-ios/AccountTableViewController.swift b/elpha-ios/AccountTableViewController.swift index a5ec613..add8465 100644 --- a/elpha-ios/AccountTableViewController.swift +++ b/elpha-ios/AccountTableViewController.swift @@ -175,25 +175,23 @@ class AccountTableViewController: AbstractStatusTableViewController { } override func loadMoreTapped(status: StatusMO, direction: PaginationDirection) { + func removeMarker(at: Int) { + status.markers?.remove(at: at) + CoreDataManager.shared.saveContext() + } + if let markers = status.markers { - var removeAt = -1 - for (index, marker) in markers.enumerated() { if marker.context == self.currentPaginationContext && marker.item.direction == direction { fetchStatuses(withPagination: marker.item) { error in if error == nil { - removeAt = index + removeMarker(at: index) } else { AlertManager.shared.show(message: error!.localizedDescription, category: .error) } } } } - - if removeAt > -1 { - status.markers?.remove(at: removeAt) - CoreDataManager.shared.saveContext() - } } } diff --git a/elpha-ios/Assets.xcassets/Icons/Share White.imageset/Contents.json b/elpha-ios/Assets.xcassets/Icons/Share White.imageset/Contents.json new file mode 100644 index 0000000..9e6f6d9 --- /dev/null +++ b/elpha-ios/Assets.xcassets/Icons/Share White.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "share-white.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/elpha-ios/Assets.xcassets/Icons/Share White.imageset/share-white.pdf b/elpha-ios/Assets.xcassets/Icons/Share White.imageset/share-white.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d9a5758057211b188ab4138d6e572da6b776029f GIT binary patch literal 3912 zcmai%c{r5)_s1<$7?R2osqQ?6l+13Z?8~H-t;Nm^gRxDGv7}_l5=OE$D9MsFOHql& zz9fB3vZX>3LqZadHTm7s@_l-q-*a8x`?{~WKlA>a&$-U$ob$))z)bZG42`-b8=faIk9IqUlUs*HsihOpz&P$_Ky_{Vi zh7-I8<_`Z43y{W4eK4#6HE_%tDg!kDBmXHS~SUctEp5DH-nPAoqq-f zuDJK%UV{5YVo=;o?h^IeRZpHjO9J4g1lRAsRFXFhK>xV5Imw6OOLZdo0IEL(J&HFC z-1h;vsWRuL;HN+C{;$-TQYlUrBpP4?I@LD>>;SkP#gjs{I7@IM0o>f``5*z@PY1vG zQ2Wit&-AN*w}PJl1A^;tOW+OWAAswV{K!rubG+{Vu1v;t|C1I2l2I%sj`?D%8~~e_ z2^0ce9y%fcF^e_|G3AR4SMbx{U?{#t>9q67dR}~#oRfjL@Z~UKzt9&k)7AzveFM%Q z-9u=m1UomBzSd?nJTU&Kf53GnsK1)W^lKQTk!Hyog2}QJ|1{ZPyLDSf^CI7NFr+3k1KU&)4&nsgageaHO?j;gd>;bIlv&I#UIozV+Y)Ih>ySMjog^uj=7T3Q`=t zWQ&RxY1BI8*?fu;DiVp3%o57JD>u?y=DCnRw!fx5m7y@2C1ceo{RDH1USm3x4rAxg zAz8Mmuy?LG7X?VnlSb)0oW;G}-Agx(c@W}h4$sFGvOJ?v2IA76qQCI*2qrhHKcR}o zE~~rU;t9xe9gTrR8xixi^rwx3h!1HATPvy|fxm}T-_KD5!MHGc&r=~o8cr!gz_J6>wW`cTE5Ja}iMn%Xw{4Y<;9&o&2BnCgq!%^-{ADA5NKl zNEQl@cB_dv9BO$@#TgnN+{+H$uBs>?eJR63+|Ad4Cn!SQw8}`}DMf=v?+<=?Z>>PS zph+7sB=l+R6StCtGM{)<;J5LW-NLpp-fUwXIg7Cck$7h+EL&MRXE@xmfp6=;nf1O|D2p?G+a$iUD6%SMg`HI)?vin({p3uM-kP~65 zXE)kH&eU%@D=ZR%*M>$m97FI9g^~rsK8s0Y>l9s+%-x)(+b6ceTJXG{j;WeBe~Vu9 zHL*nP)cwF-cJSsUUxsp{3xCS$*AWmh!w?_IM=7 z~^0 zc8Az|FV9l(u9lyW>XsXE2bxbi#yi@SGw$)fB1|2U6>Y1RelL6WQq^`_lsC2%@@R8E zy(VO`X%kyvHsHy=A@P~8%?&=Ei5K_OLW5<4cMZqyZmmUe^N|F za9nULd`lz7EVRIcCKoAozS)+jbnogbohL@J3MZ1pjUwfx%;lBRDnm~ixy#upXecoE zB()!O##6UjY1^BW%4Y%&u+52DrpbF1#7&OM8t4w3P(S)u`@Hsfy*uWc3cPzPi&CpI ztWB8uK}Un&_#`xAjxo|+l2n}Fkuu4+05eJMXZSN5R5BGE_5>gOmiM)aº!6G!L z{B)KfyRuOu!pI;!JB4_Km`;o)UVe{lF@rrx3{8Br)ud2+qWmT7&K?=v?mOpSR#hIa zJouXQ8nF|P%U$hGnrNBd{ed|zM1qlQID0v=92rirS>ETp?_!Evic1P_N_>&=DN3(+Z$^<XU?beUQiX_-?p3`{FlI^8?HJ)M(2j%llO zvle~;vF2EhKd?unq8=TG~ z+ea4ux+cfqmT-qMvzaVSv&@pr+&X-nP4Kh&7r<-BSe+XU1z9m!b%a}l9JbRRMG3`S z`*N&v4z;Q|JvS3W3NbE1Z|Ai5y8s<4U_(1;3%Vu~)lqWSHu2@mSs zGWmgB)j3Na5m3CKc(2lUcQ>k-PXO6Il)Mu%l1KX)x=h#)U)C3i06}m&f*{q&Z zZ&F6ACs&>y?~fbzYxZg$e5En4R<*i+^Rdkd_}I4O{G@RimazR5M%kH!Gi8qw7l||O zGx?eaHKR4-G`H3I)fNZAmk4WoYkn((bN!#kSNc~?AZn1iLLZ>H5JSjm0Zn0)(AEvU zkfsLShMKV5@Rttqwmp)3x?lDDA`S~-MeHP2e7377W9}+Uov%6-a4Enaa)4-{uh(32 zB>w5kr})@7$zziKhVA$kgI@e`g9`=>gJTR!Wvhx&L%KB`$kUMAy+h)HydSl2@#WyL zsFA7n(2-9nXxr-*Q?IEHIE5Xo(rXS4R_FHZ+Od1*u-JO^w#Gt^ap}CnV}A~$KdB~a zHF3Ok|9IT2-4f|*0)!EMKfFty(QFs(WK?P-VKl;LqVwRL?|p|ap`(S#*OGIT(1l%v z{~?E0E>(8x!U!?t`|Z#gicEMDCI_Kc{fylE>D0Dt?XCply*^ehHK|v>8UJ~NE`I}d z*-E&={r-?Eo|O5_?D>|l`O)-I?~a}AbM32_ur64CU)Nf{Z;@Xcu%A3cOCtJ8ZQndT z;cwSa&Hl4?GTsaDIx_IN!>}Wcv}4#iW~j&Pwpn?tqg%zySgY=1T{AZGK&OqUXN#wV z=k%aUMTz?xhMaxZpTv&$G4D-aZxbhnt%A-h4?bTApJv`!xU=g2&QH+)?chZ9oMjr( z%6{NQ={vg;&hszXUmn$*nW{ZausP?rnH=vNUx_NX&pcY@j_=L?nENqQCO&5SKHZ~E(oy@I=W+yG(GPP~$rp?-3{Qk~XYB0Uc|hyN`o($rLRxyoGuLCR zgieW@H`FuzFMZK%jhKy%mWn!fhNf9vIr=iAw7hhvBa~5QKl_+k_=dUq^%SGnwN%~i zP*6q?b2@S@u5VY(t?Ld`m&g+jX1tgaXDimOkCa@k-4HasVz&w(TBr`USw*&QIO$cVtyu zagC3x(u1$3ESH%yZD19$_8V3je#DpHS@dQ4VBo#^md_n@M)ycWozl05iz!{jnV0-m znXbh4=Fc8olWAHzlycj;W`v3WvOQGMPSrz$TfadZmR|6r}NKa3f;6ri-xBzPo*!^N+ zE=2!g;=dT%2Y??ZIg<&xlmNg60h%Dy02JywB>RHojRfGw$j&|>JaZ8p^!6JdBe~{( z_ozpp5j-ibKk(h>C%6BFX%f|kOz{Sg2o)qo1qs;h)%7KNI)gFj z;;^<#fSE6WN(%%)Z2wOB0W_swmqGrT820KPL?MuBNF)M>z@kwYj5PwG2)=(={uU%S z3OM^Zfs@nsK)^vt4;+|iU|b(x?QoCyDxfJhdPPg82idB6A7_Y#MH3fQdBncAhcU^8mKz(Z8M!seP9+&cckLnhzlzsHzOwL__`3J6Wv0YiX|9)}E#*m3`tzX8z z5$5(wsaa65A#Os*$0N0M+Rvu?&B|E)Nb$7Fvw51EuiJH5+t<`A+EMVY zaURp#<$;`u53hW5*NYDqH0hmqN1DmheB)1V9(E%GLrWtgqsiX9O$yO#aTRR&Q#IE@fbBibXjVbtXmz=z5I}jWNtKHZrrsP-koi5#vX4 zr?Ii6@#NKfcJU@AiAE+C1{P*UhL&aqhN&hdX$Hw@Nd~6LmgXiYM#*+uHUyO@#46a? baTS*&7L`;KrKWKin;IH$sj9mAyKw;kh4Gk2 delta 462 zcmcaEcS3GLKz(eVA>UyI9@lcekNN>w>JEu%uf+;meAXs(Sbh2R*Dbg0)TaHpw)-qM zJUq~3E>iwX_>r*Oj%(8wndRw3sV)&XmYOH>d&c6cJ$!{nSGUaI;w|b-oXR0;wfW73 zgj)*>gUn}}JghlvCp|6WdhG1^R_|SPKF7HoNSHM-!1~{TH}xxcHwg2juX;WGj-BQP z{lJN@rI}2OHghm~^ROG38<-j!nM{u2ZPGF_P%r=ig**i=FvGyW$kZHN%-GP}crqKG zTD`Fax|D&jF&5=m)R`EVqU$v_G{i8^*vQlbL!Ge!M2sKFoj`jnChy|2i#IhgHczs! zFiA>FOtUmkG*30OFgLd_Ofs}cG&MFhOta&%A*e(lR>97WtGFbwsHCDOHI2*I#L|>Y KRn^tsjSB!G;fksN diff --git a/elpha-ios/Base.lproj/Main.storyboard b/elpha-ios/Base.lproj/Main.storyboard index 8bae72d..98b3305 100644 --- a/elpha-ios/Base.lproj/Main.storyboard +++ b/elpha-ios/Base.lproj/Main.storyboard @@ -1348,19 +1348,19 @@ - + - - + + - + - + @@ -1422,10 +1422,10 @@ - + - + @@ -1444,14 +1444,14 @@ - + - + @@ -1508,6 +1508,7 @@ + @@ -1516,6 +1517,9 @@ + + + @@ -1577,7 +1581,6 @@ - @@ -1595,8 +1598,28 @@ + + + + + + + + + + + + - + - + @@ -1672,6 +1695,7 @@ + @@ -1691,11 +1715,6 @@ - - - - - @@ -1706,6 +1725,11 @@ + + + + + @@ -1773,7 +1797,7 @@ - + @@ -1895,6 +1919,7 @@ + diff --git a/elpha-ios/StatusTableViewController.swift b/elpha-ios/StatusTableViewController.swift index 7ab6497..4f4da92 100644 --- a/elpha-ios/StatusTableViewController.swift +++ b/elpha-ios/StatusTableViewController.swift @@ -27,9 +27,11 @@ class StatusTableViewController: AbstractStatusTableViewController, UIGestureRec override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - fetchStatuses { error in - if error != nil { - AlertManager.shared.show(message: error!.localizedDescription, category: .error) + if SettingsManager.automaticallyRefreshTimelines { + fetchStatuses { error in + if error != nil { + AlertManager.shared.show(message: error!.localizedDescription, category: .error) + } } } } @@ -118,6 +120,13 @@ class StatusTableViewController: AbstractStatusTableViewController, UIGestureRec self.replyTapped(status: status!) } + @IBAction func shareTapped(_ sender: Any) { + if let status = status { + let controller = UIActivityViewController(activityItems: [status.uri!], applicationActivities: nil) + present(controller, animated: true) + } + } + func fetchStatuses(completion: @escaping (Error?) -> Void) { if let status = status { loading = true @@ -296,12 +305,13 @@ extension StatusTableViewController: NSFetchedResultsControllerDelegate { case NSFetchedResultsChangeType.delete: tableView.deleteRows(at: [indexPath!], with: UITableView.RowAnimation.none) case NSFetchedResultsChangeType.update: - if let cell = tableView.cellForRow(at: indexPath!) as? StatusTableViewCell { - updateCell(cell, withStatusAt: indexPath!) - } - - if let cell = tableView.cellForRow(at: indexPath!) as? MainStatusTableViewCell { - updateMainCell(cell, withStatus: anObject as! StatusMO) + switch tableView.cellForRow(at: indexPath!) { + case let cell as StatusTableViewCell: + updateCell(cell, withStatusAt: indexPath!) + case let cell as MainStatusTableViewCell: + updateMainCell(cell, withStatus: anObject as! StatusMO) + default: + return } case NSFetchedResultsChangeType.move: tableView.deleteRows(at: [indexPath!], with: UITableView.RowAnimation.fade) diff --git a/elpha-ios/TimelineTableViewController.swift b/elpha-ios/TimelineTableViewController.swift index f043a87..30bd2d7 100644 --- a/elpha-ios/TimelineTableViewController.swift +++ b/elpha-ios/TimelineTableViewController.swift @@ -83,25 +83,23 @@ class TimelineTableViewController: AbstractStatusTableViewController { } override func loadMoreTapped(status: StatusMO, direction: PaginationDirection) { + func removeMarker(at: Int) { + status.markers?.remove(at: at) + CoreDataManager.shared.saveContext() + } + if let markers = status.markers { - var removeAt = -1 - for (index, marker) in markers.enumerated() { if marker.context == self.currentPaginationContext && marker.item.direction == direction { fetchTimeline(withPagination: marker.item) { error in if error == nil { - removeAt = index + removeMarker(at: index) } else { AlertManager.shared.show(message: error!.localizedDescription, category: .error) } } } } - - if removeAt > -1 { - status.markers?.remove(at: removeAt) - CoreDataManager.shared.saveContext() - } } }