From 1c02da8806973e9b1aff8a38bc39fb18a82143c6 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Wed, 14 Feb 2024 15:50:09 -0600 Subject: [PATCH] Adds social media follow buttons to Settings --- .../GitHub.imageset/Contents.json | 15 +++ .../GitHub.imageset/github.png | Bin 0 -> 1575 bytes .../Threads.imageset/Contents.json | 15 +++ .../Threads.imageset/threads_icon.png | Bin 0 -> 10738 bytes .../mastodon.imageset/Contents.json | 15 +++ .../mastodon.imageset/mastodon.png | Bin 0 -> 1802 bytes .../twitter.imageset/Contents.json | 15 +++ .../twitter.imageset/twitter.png | Bin 0 -> 1215 bytes AltStore/Settings/Settings.storyboard | 97 ++++++++++++++++-- .../Settings/SettingsViewController.swift | 76 +++++++++++++- 10 files changed, 220 insertions(+), 13 deletions(-) create mode 100644 AltStore/Resources/Assets.xcassets/GitHub.imageset/Contents.json create mode 100644 AltStore/Resources/Assets.xcassets/GitHub.imageset/github.png create mode 100644 AltStore/Resources/Assets.xcassets/Threads.imageset/Contents.json create mode 100644 AltStore/Resources/Assets.xcassets/Threads.imageset/threads_icon.png create mode 100644 AltStore/Resources/Assets.xcassets/mastodon.imageset/Contents.json create mode 100644 AltStore/Resources/Assets.xcassets/mastodon.imageset/mastodon.png create mode 100644 AltStore/Resources/Assets.xcassets/twitter.imageset/Contents.json create mode 100644 AltStore/Resources/Assets.xcassets/twitter.imageset/twitter.png diff --git a/AltStore/Resources/Assets.xcassets/GitHub.imageset/Contents.json b/AltStore/Resources/Assets.xcassets/GitHub.imageset/Contents.json new file mode 100644 index 00000000..1cdaf5ac --- /dev/null +++ b/AltStore/Resources/Assets.xcassets/GitHub.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "github.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/AltStore/Resources/Assets.xcassets/GitHub.imageset/github.png b/AltStore/Resources/Assets.xcassets/GitHub.imageset/github.png new file mode 100644 index 0000000000000000000000000000000000000000..1d32044b680462e5742c5de6de2a1b168ca799f4 GIT binary patch literal 1575 zcmV+?2H5$DP)H48`n8{{Md~ zo9wX(+nt9hmf9Jm1P}DOO~KB~LuMN$_hS@*f2LqHt*CF39@;R`u%7{Nfp)*Ic#-Yt9NbSpfKp&=TIjj@ z1;?^17F9781SsXr{JQ=L#cYOx08o$sysy8ZNFYWzCMY#k0oXxIV-x{O`B)2J0}=fI z5TKON4FFaU+H_-pq=FUz1cDUNg#nbC8&$9?Vs?EPOos|~MVJm1sL+joCJ2oV0ZPR# zBkUOT5}PmpA?OD{Aeu11Km;p>dWqu@G+_W0Mj}8Aq0SVb%vc17!PH;?HC+%Ktf*$q z+e>hTz@Tvx256BMwdH00^Z}3+Su0CGg=c7zlc}DBHQ})fdU+1$Ngck>@-jb~Z zy>$5_v!$$a0n3#dsb_A&oF#0f-rglt&gj|mudgQLOd(npZj7;w`R2*TOPB+rHNDJz zp9k2CpV^jWMmHyg%(*8!gXcab_8bthkNaX*(Cuj{7nqVW06VtR4!m-uX@QO5&aX5i z#iu1aeYZOv#CawA+UL-&%qSXIoEMn0z1tfF2!eJ!10jrnFcs4lKRP>$5QM}4Y#RF& z1eP)Y3nBg|5KI>Y+Y4X-1Q-CJyf*PnL}WRCDTG*jRQh>rCADK zDfIINj)vF@mS_6_NQ{&Zc3?es0AVOsE)1?|vn*a>O^&U6dPzK6Pf5DBbH(DFr1+a{}*=J>I~7E|5bV*i*Ig8-7t$n=!8EQZ%Wp4TGdt*%g4l5^KF?l&+U@ zECg6fbX+s?7hHMo@=UK#vc+~KQG*}|cS*TY8P1kC-#X~aH~xb4)2#syAj<}Uqx{>C zbkk9Qg2vF@iJ;P#WM}sm=U@VL5v@8|mYBMxa-D3z+#o%S`tljvY)dY5zvPb1;13(z zs~W(i{wEedNveZ2HSAGH@RNzD|4RT+P^`mA4HN~S{K>6W2h}=q z^MtL@EpwAtlJ8;LwO%y(4cu~OiWBy*#er}AX9b)bj(nmQ^4({c2s@E7Tdfk*DJa(6 z-t)HT(?WtTc~#uYrnZ|Yq@BF0p^yN1d8U{ZGk)?VAlw?7m3q}ti81&gTo)L6hI7b>1wp+)_Xeo zT29SFbr4qG(I`Mny!`V#f49`ve+vp8J;+rM(3A0)8{3Jk%OT)<{k_;~J*ZnCV6U6& zN1#X%*p*)k0gIUdDj=cOwxc>KgMc;&BbxG8!6KD94Rsj=8izILC;%G>(!_gSph`lI z2B6kXLn;=tr*7)Zn#lx%5vVjJxM1Uy8KYdZRDl2L|4za1fh{25Wq+>&KKbO6Pd-sa Z@(=TC$WI(ZpY8wv002ovPDHLkV1i<-yd?kt literal 0 HcmV?d00001 diff --git a/AltStore/Resources/Assets.xcassets/Threads.imageset/Contents.json b/AltStore/Resources/Assets.xcassets/Threads.imageset/Contents.json new file mode 100644 index 00000000..221a14ea --- /dev/null +++ b/AltStore/Resources/Assets.xcassets/Threads.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "threads_icon.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/AltStore/Resources/Assets.xcassets/Threads.imageset/threads_icon.png b/AltStore/Resources/Assets.xcassets/Threads.imageset/threads_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..af1e915acca5047c5588203be6a7c6cea1c05a61 GIT binary patch literal 10738 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 literal 0 HcmV?d00001 diff --git a/AltStore/Resources/Assets.xcassets/mastodon.imageset/Contents.json b/AltStore/Resources/Assets.xcassets/mastodon.imageset/Contents.json new file mode 100644 index 00000000..92dee4b0 --- /dev/null +++ b/AltStore/Resources/Assets.xcassets/mastodon.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "mastodon.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/AltStore/Resources/Assets.xcassets/mastodon.imageset/mastodon.png b/AltStore/Resources/Assets.xcassets/mastodon.imageset/mastodon.png new file mode 100644 index 0000000000000000000000000000000000000000..6930125465682c42cbac6ee84ef9345233ad0bef GIT binary patch literal 1802 zcmV+l2le=gP)-$^;m}b2;-`{qIWW|^#lIkS_0PEYo+j`7F6nX*Z z?+yg8axML=`2fQ?CkdjL0QHOQ2NW9n7!a&*@3y~FIAMDj5EkYJ0C)(;mNo;zOj!pd z=G@$3z@Y>^3^-s+N|1Z zV!)aZ=z-9)ohaE^i|xDXnL;rn2pnuhx{m23EP#tVRnN#Ki8EX~yUn`tR&eC7mp4o2q0 zlrzAQ!*VeAQ(Es=Y;pHy$5dQAG%)g`sI zxI6uU{DOBmKdr%f_kIO(}#|3vbm<=^{;&oPw4ra&rF9t(XH4TY$h zjMd|xvpjyg0W9PQ^-|JVC#980vRXKcpc`Fvnpn)KRAVI1Md~P47b?sm(1hT{N)j=g z-ZOfE{2J6mVBxeq_tmMllPaQ-lvg}G2v}`G9oxJbWlIK+g@B7{{~?W5mM#Gq6IYTs=a_<#v{l`0X{;&|5*g{AA;+W0{;Ia%>N;{E-CQA z9TD1&`d^CRA|qb^2|{3&;U6JH-jx0Wgv6mUgAsCzb!3*|Z3Mr;M|*tt5TJ!10)RY1 zknSJ^?}&F1rX%rt2>1xWt()RUIu~yu1iOBi^Q=2e;9BZIsE%jXXN4CcI(iZ2FQouk zgsLOrUPs6kw||Vl61UlA>llm>`mC7S5gU&XYF|!=q~9ZihXFjd12G;U-dM!~!oCb~ zeggrk#ZMdDVt^DH#lx*ED6OTxRcM-~>j>52>E15pO}l6rx&+WJo*qqMe%Ehg>O7!h zwRNbYl}ho`c@`Fqk4C2C+zoqT7v4^@{b~V9DQ1Cx2LNbHW@<0G5&arndViwCWCn9*gQr61U%otxQ6g} zQ9~a}d;ebN8|y0P>phU05brGQ2r!GAt|WWO$U+XBAg)rZ*wyTd|2 s?^tX90}%e@m7-sMpdWs?>PH{xAM@nRfv@*)fB*mh07*qoM6N<$f>#|w#{d8T literal 0 HcmV?d00001 diff --git a/AltStore/Resources/Assets.xcassets/twitter.imageset/Contents.json b/AltStore/Resources/Assets.xcassets/twitter.imageset/Contents.json new file mode 100644 index 00000000..6a56a80a --- /dev/null +++ b/AltStore/Resources/Assets.xcassets/twitter.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "twitter.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/AltStore/Resources/Assets.xcassets/twitter.imageset/twitter.png b/AltStore/Resources/Assets.xcassets/twitter.imageset/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..ef647d08ee27447272bbe8fe94c0ddefef1c6008 GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^O(4v{3?%p7eQ+K~sRa0hxcX!k0-5+heMM9%Pz85M zkY6yvZx%(zgx6PQY_Fb_Yvc$N<}C1tEC$L7fiUBxyLEpU7+ADCT^vIy=Ddx%Ic_;gH}|gYY!=bO$|3>^TC>X4TmM+Tkmvi- zbaCm8o7^t-t&Mz|wP*i3JKel$^T|(FR#D-G%Cm+A)18@Sx_BAdFHJrnU+u(D@I_qa zm;(2q?ANlk3qy+TZsfI1OO=_$^Xb&;woB2MFSC63=_$xwlFK&Jd8=?=OYFll&nHA~ zm&{p_Vw=ss_Nrg21rN{k#vsj*%O*Eu{ZsjD980z*iaKsJ6`uZ?Rq2S8+)BfCW=X^8 z2a_1LC|>5+QyY46ZQa_|19#h1quv(@WZqQG3-w-l^b704%Fok#SG?P_)#Og5xwE33 z^>HP~&&#)^AK2SCQU9{6(3{$b=~uUv|B0L8rFE~UCy4Ds^!`wh$lU{7r%7X*SHw8q=;?^RXqGd-c0+N>1&Al+%#%%+JtO@EI>eP&?INmnra z9of|1wrU$Q_bz?b7rjxDOO}W|Kh*i^PN4gOElYQA+L|HMpkW}X5Pf#3%?yzSuK7P! zn@BUd>TTnn|Cj&Bzqk(0C9UoURiB@HvPOqvv&NU#D|!Na&;9xsl%cZr{?QQMPi?^; zWM&_ERG=Rr)6TRx>e}Ju(|)I$*RY52RaNx6?KbccJJNF&stY7W71n^#-}=uJytw%;CswA z>A~-%>o5OJoxI^bi*fqx##5%Uce79ZIH(|Y#$qqCTXv73S=IMh0*5+|-WOteQc<}y zM|uTk-jw{L=?3SQ@;2V8-+zIaNCk+ofudAHCYlZlBMz2>z!F)g8J(Odw zo_v@$d&L2vP4_wdML9g4^N5E!1v!-dQaY8o`9}C@uXZ-Cdkgfeo;jWs@~As?OyEv5 z&x7Yr?t0vLn!pzD#c1zIhGM6+_mUe5Zmldj)lh!@%slxMI;u($)hujh`PHn|J2`&T zvcJ8#v4rvFrB-D@#@KEAGiEj1ddAKFu+`wT+6SJh+V)#VwsL!@Fuhv5Ya^%Hjt8|I zJHyxWX(~@xKP}&}o=c)IBxo;p**=9!OPvdTxi5Bid%@OR!LHRpuVU~ zficFrimm%o2bcTyU)wupTynm3q5Iclu8%vmKh$GBp_8>~N#BI}NTlLH=g!!uLG4qp00i_>zopr02+A>5C8xG literal 0 HcmV?d00001 diff --git a/AltStore/Settings/Settings.storyboard b/AltStore/Settings/Settings.storyboard index a093cb9e..40974b28 100644 --- a/AltStore/Settings/Settings.storyboard +++ b/AltStore/Settings/Settings.storyboard @@ -15,18 +15,90 @@ - + - + + + + + + + + + + + + + + @@ -918,6 +990,7 @@ + @@ -927,7 +1000,11 @@ - + + + + + @@ -1283,7 +1360,7 @@ Settings by i cons from the Noun Project - + @@ -1403,6 +1480,8 @@ Settings by i cons from the Noun Project + + diff --git a/AltStore/Settings/SettingsViewController.swift b/AltStore/Settings/SettingsViewController.swift index e85fa870..31f7a3a8 100644 --- a/AltStore/Settings/SettingsViewController.swift +++ b/AltStore/Settings/SettingsViewController.swift @@ -99,6 +99,11 @@ final class SettingsViewController: UITableViewController @IBOutlet private var enforceThreeAppLimitSwitch: UISwitch! @IBOutlet private var disableResponseCachingSwitch: UISwitch! + @IBOutlet private var mastodonButton: UIButton! + @IBOutlet private var threadsButton: UIButton! + @IBOutlet private var twitterButton: UIButton! + @IBOutlet private var githubButton: UIButton! + @IBOutlet private var versionLabel: UILabel! override var preferredStatusBarStyle: UIStatusBarStyle { @@ -142,7 +147,7 @@ final class SettingsViewController: UITableViewController let localizedVersion = installedApp.version #endif - self.versionLabel.text = NSLocalizedString(String(format: "AltStore %@", localizedVersion), comment: "AltStore Version") + self.versionLabel.text = NSLocalizedString(String(format: "Version %@", localizedVersion), comment: "AltStore Version") } else if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String { @@ -159,9 +164,11 @@ final class SettingsViewController: UITableViewController versionString += " - \(!pair_test)" } } + self.versionLabel.text = NSLocalizedString(String(format: "Version %@", version), comment: "AltStore Version") } else { + self.versionLabel.text = nil versionString += "SideStore\t" } versionString += "\n\(Bundle.Info.appbundleIdentifier)" @@ -176,10 +183,26 @@ final class SettingsViewController: UITableViewController self.update() - if #available(iOS 15, *), let appearance = self.tabBarController?.tabBar.standardAppearance + if #available(iOS 15, *) { - appearance.stackedLayoutAppearance.normal.badgeBackgroundColor = .altPrimary - self.navigationController?.tabBarItem.scrollEdgeAppearance = appearance + if let appearance = self.tabBarController?.tabBar.standardAppearance + { + appearance.stackedLayoutAppearance.normal.badgeBackgroundColor = .altPrimary + self.navigationController?.tabBarItem.scrollEdgeAppearance = appearance + } + + // We can only configure the contentMode for a button's background image from Interface Builder. + // This works, but it means buttons don't visually highlight because there's no foreground image. + // As a workaround, we manually set the foreground image + contentMode here. + for button in [self.mastodonButton!, self.threadsButton!, self.twitterButton!, self.githubButton!] + { + // Get the assigned image from Interface Builder. + let image = button.configuration?.background.image + + button.configuration = nil + button.setImage(image, for: .normal) + button.imageView?.contentMode = .scaleAspectFit + } } } @@ -497,6 +520,51 @@ private extension SettingsViewController } } } + + func openMastodon(username: String) + { + // Rely on universal links to open app. + + let components = username.split(separator: "@") + guard components.count == 2 else { return } + + let server = String(components[1]) + let username = "@" + String(components[0]) + + guard let serverURL = URL(string: "https://" + server) else { return } + + let mastodonURL = serverURL.appendingPathComponent(username) + UIApplication.shared.open(mastodonURL, options: [:]) + } + + func openThreads(username: String) + { + // Rely on universal links to open app. + + let safariURL = URL(string: "https://www.threads.net/@" + username)! + UIApplication.shared.open(safariURL, options: [:]) + } + + @IBAction func followAltStoreMastodon() + { + self.openMastodon(username: "@altstore@fosstodon.org") + } + + @IBAction func followAltStoreThreads() + { + self.openThreads(username: "altstoreio") + } + + @IBAction func followAltStoreTwitter() + { + self.openTwitter(username: "altstoreio") + } + + @IBAction func followAltStoreGitHub() + { + let safariURL = URL(string: "https://github.com/altstoreio")! + UIApplication.shared.open(safariURL, options: [:]) + } } private extension SettingsViewController