1+ #import < dlfcn.h>
12#import " TWAdBlockSettingsViewController.h"
23
3- extern " C " NSBundle *tweakBundle;
4- extern " C " NSUserDefaults *tweakDefaults;
4+ extern NSBundle *tweakBundle;
5+ extern NSUserDefaults *tweakDefaults;
56
67#define LOC (x, d ) [tweakBundle localizedStringForKey: x value: d table: nil ]
78
89%hook _TtC6Twitch27SettingsSwitchTableViewCell
910%new
1011- (id )delegate {
11- return MSHookIvar< id > (self, " delegate" );
12+ return object_getIvar (self, class_getInstanceVariable ( object_getClass (self), " delegate" ) );
1213}
1314%new
1415- (void )setDelegate:(id )delegate {
15- MSHookIvar< id > (self, " delegate" ) = delegate;
16+ object_setIvar (self, class_getInstanceVariable ( object_getClass (self), " delegate" ), delegate) ;
1617}
1718%new
1819- (BOOL )isOn {
19- return MSHookIvar<UISwitch *>(self, " $__lazy_storage_$_switchView" ).isOn ;
20+ return [object_getIvar (
21+ self , class_getInstanceVariable (object_getClass (self ), " $__lazy_storage_$_switchView" )) isOn ];
2022}
2123%new
2224- (void )configureWithTitle:(NSString *)title
@@ -26,16 +28,16 @@ extern "C" NSUserDefaults *tweakDefaults;
2628 accessibilityIdentifier:(NSString *)accessibilityIdentifier {
2729 self.textLabel .text = title;
2830 self.detailTextLabel .text = subtitle;
29- UISwitch *switchView = MSHookIvar<UISwitch *>(self, " $__lazy_storage_$_switchView" );
31+ UISwitch *switchView = object_getIvar (
32+ self, class_getInstanceVariable (object_getClass (self), " $__lazy_storage_$_switchView" ));
3033 switchView.enabled = isEnabled;
3134 switchView.on = isOn;
3235 self.accessibilityIdentifier = accessibilityIdentifier;
3336}
3437- (void )settingsSwitchToggled {
35- id <SettingsSwitchTableViewCellDelegate> delegate =
36- MSHookIvar<id <SettingsSwitchTableViewCellDelegate>>(self, " delegate" );
37- if (![delegate respondsToSelector: @selector (settingsCellSwitchToggled: )]) return %orig ;
38- [delegate settingsCellSwitchToggled: self ];
38+ if (![self .delegate respondsToSelector: @selector (settingsCellSwitchToggled: )])
39+ return %orig ;
40+ [self .delegate settingsCellSwitchToggled: self ];
3941}
4042%end
4143
@@ -57,14 +59,14 @@ extern "C" NSUserDefaults *tweakDefaults;
5759}
5860%new
5961- (NSInteger )numberOfSectionsInTableView:(UITableView *)tableView {
60- return self.adblockEnabled ? 2 : 1 ;
62+ return self.adblockEnabled ? 3 : 2 ;
6163}
6264- (NSInteger )tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger )section {
6365 switch (section) {
6466 case 0 :
6567 return 1 ;
6668 case 1 :
67- return self.proxyEnabled ? self.customProxyEnabled ? 3 : 2 : 1 ;
69+ return self.adblockEnabled ? self. proxyEnabled ? self.customProxyEnabled ? 3 : 2 : 1 : 0 ;
6870 default :
6971 return 0 ;
7072 }
@@ -117,7 +119,7 @@ extern "C" NSUserDefaults *tweakDefaults;
117119 reuseIdentifier: @" TWAdBlockProxy" ];
118120 TWAdBlockSettingsTextField *textField =
119121 ((TWAdBlockSettingsTextFieldTableViewCell *)cell).textField ;
120- textField.textField .placeholder = PROXY_URL ;
122+ textField.textField .placeholder = PROXY_ADDR ;
121123 textField.textField .text = [tweakDefaults stringForKey: @" TWAdBlockProxy" ];
122124 textField.delegate = self;
123125 return cell;
@@ -127,16 +129,32 @@ extern "C" NSUserDefaults *tweakDefaults;
127129 }
128130}
129131%new
130- - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger )section {
132+ - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
133+ NSString *title;
131134 switch (section) {
132135 case 0 :
133- return LOC (@" settings.adblock.footer" , @" Choose whether or not you want to block ads" );
136+ title = LOC (@" settings.adblock.footer" , @" Choose whether or not you want to block ads" );
137+ break ;
134138 case 1 :
135- return LOC (@" settings.proxy.footer" ,
136- @" Proxy specific requests through a proxy server based in an ad-free country" );
139+ title = LOC (@" settings.proxy.footer" ,
140+ @" Proxy specific requests through a proxy server based in an ad-free country" );
141+ if (self.adblockEnabled ) break ;
142+ case 2 : {
143+ _TtC6Twitch12VersionLabel *versionLabel =
144+ [[objc_getClass (" _TtC6Twitch12VersionLabel" ) alloc ] initWithFrame: CGRectZero];
145+ versionLabel.text = @" TwitchAdBlock v" PACKAGE_VERSION;
146+ UIStackView *footerStackView =
147+ [[UIStackView alloc ] initWithArrangedSubviews: @[ versionLabel ]];
148+ return footerStackView;
149+ }
137150 default :
138151 return nil ;
139152 }
153+ UITableViewHeaderFooterView *footerView =
154+ [[UITableViewHeaderFooterView alloc ] initWithReuseIdentifier: nil ];
155+ footerView.textLabel .text = title;
156+ footerView.textLabel .numberOfLines = 0 ;
157+ return footerView;
140158}
141159%new
142160- (void )settingsCellSwitchToggled:(UISwitch *)sender {
@@ -176,16 +194,9 @@ extern "C" NSUserDefaults *tweakDefaults;
176194 }
177195
178196 [tweakDefaults synchronize ];
179- notify_post (" com.level3tjg.twitchadblock/updatePrefs" );
180197}
181198%new
182199- (void )textFieldDidEndEditing:(UITextField *)textField {
183200 [tweakDefaults setValue: textField.text forKey: @" TWAdBlockProxy" ];
184- [tweakDefaults synchronize ];
185- notify_post (" com.level3tjg.twitchadblock/updatePrefs" );
186201}
187202%end
188-
189- %ctor {
190- if (![NSProcessInfo .processInfo.processName isEqualToString: @" mediaserverd" ]) %init ;
191- }
0 commit comments