/
TweakBDD.xm
44 lines (35 loc) · 1.69 KB
/
TweakBDD.xm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// MARK: - Settings
static BOOL enabled = YES;
#define kPrefsAppID CFSTR("dev.ayden.ios.tweak.wintermode")
static void loadSettings() {
NSDictionary *settings = nil;
CFPreferencesAppSynchronize(kPrefsAppID);
CFArrayRef keyList = CFPreferencesCopyKeyList(kPrefsAppID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
if (keyList) {
settings = (NSDictionary *)CFBridgingRelease(CFPreferencesCopyMultiple(keyList, kPrefsAppID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost));
CFRelease(keyList);
}
if (settings && settings[@"Enabled"]) enabled = [settings[@"Enabled"] boolValue];
}
static void settingsChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
loadSettings();
}
// MARK: - Hooks
%hook BLTBulletinDistributor
- (void)_handleDidPlayLightsAndSirens:(BOOL)didPlayLightsAndSirens forBulletin:(id)bulletin inPhoneSection:(id)phoneSecton transmissionDate:(id)transmissionDate receptionDate:(id)receptionDate fromGizmo:(BOOL)fromGizmo finalReply:(BOOL)finalReply replyToken:(id)replyToken {
if (enabled) didPlayLightsAndSirens = NO;
%orig;
}
%end
// MARK: - Initialization
%ctor {
@autoreleasepool {
// listen for notifications from settings
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
NULL,
(CFNotificationCallback)settingsChanged,
CFSTR("dev.ayden.ios.tweak.wintermode.changed"),
NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
}
}