import { UnavailabilityError, Platform } from 'expo-modules-core'; import BadgeModule from './BadgeModule'; import { WebSetBadgeCountOptions } from './BadgeModule.types'; export interface SetBadgeCountOptions { /** * A configuration object described [in the `badgin` documentation](https://github.com/jaulz/badgin#options). */ web?: WebSetBadgeCountOptions; } /** * Sets the badge of the app's icon to the specified number. Setting it to `0` clears the badge. On iOS, this method requires that you have requested * the user's permission for `allowBadge` via [`requestPermissionsAsync`](#notificationsrequestpermissionsasyncpermissions), * otherwise it will automatically return `false`. * > **Note:** Not all Android launchers support application badges. If the launcher does not support icon badges, the method will resolve to `false`. * @param badgeCount The count which should appear on the badge. A value of `0` will clear the badge. * @param options An object of options configuring behavior applied in Web environment. * @return It returns a Promise resolving to a boolean representing whether the setting of the badge succeeded. * @header badge */ export default async function setBadgeCountAsync( badgeCount: number, options?: SetBadgeCountOptions ): Promise { if (!BadgeModule.setBadgeCountAsync) { throw new UnavailabilityError('ExpoNotifications', 'setBadgeCountAsync'); } return await BadgeModule.setBadgeCountAsync(badgeCount, options?.[Platform.OS]); }