1// Copyright 2018-present 650 Industries. All rights reserved.
2
3#import <EXNotifications/EXBadgeModule.h>
4#import <ExpoModulesCore/EXUtilities.h>
5#import <UserNotifications/UserNotifications.h>
6
7@implementation EXBadgeModule
8
9EX_EXPORT_MODULE(ExpoBadgeModule)
10
11EX_EXPORT_METHOD_AS(getBadgeCountAsync,
12                    getBadgeCountAsync:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject)
13{
14  dispatch_async(dispatch_get_main_queue(), ^{
15    resolve(@([EXSharedApplication() applicationIconBadgeNumber]));
16  });
17}
18
19EX_EXPORT_METHOD_AS(setBadgeCountAsync,
20                    setBadgeCountAsync:(NSNumber *)badgeCount
21                    resolve:(EXPromiseResolveBlock)resolve
22                    reject:(EXPromiseRejectBlock)reject)
23{
24  [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
25    dispatch_async(dispatch_get_main_queue(), ^{
26      if (settings.badgeSetting == UNNotificationSettingEnabled) {
27        [EXSharedApplication() setApplicationIconBadgeNumber:badgeCount.integerValue];
28        resolve(@(YES));
29      } else {
30        resolve(@(NO));
31      }
32    });
33  }];
34}
35
36@end
37