// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_PUSH_NOTIFICATION_MODEL_CONSTANTS_H_
#define IOS_CHROME_BROWSER_PUSH_NOTIFICATION_MODEL_CONSTANTS_H_
#import <Foundation/Foundation.h>
#import <string>
// Enum for the NAU implementation for Content notifications. Change
// NotificationActionType enum when this one changes.
typedef NS_ENUM(NSInteger, NAUActionType) {
// When a content notification is displayed on the device.
NAUActionTypeDisplayed = 0,
// When a content notification is opened.
NAUActionTypeOpened = 1,
// When a content notification is dismissed.
NAUActionTypeDismissed = 2,
// When the feedback secondary action is triggered.
NAUActionTypeFeedbackClicked = 3,
};
// Enum for the NAU implementation for Content notifications used for metrics.
enum class NotificationActionType {
// When a content notification is displayed on the device.
kNotificationActionTypeDisplayed = NAUActionTypeDisplayed,
// When a content notification is opened.
kNotificationActionTypeOpened = NAUActionTypeOpened,
// When a content notification is dismissed.
kNotificationActionTypeDismissed = NAUActionTypeDismissed,
// When the feedback secondary action is triggered.
kNotificationActionTypeFeedbackClicked = NAUActionTypeFeedbackClicked,
// Max value.
kMaxValue = kNotificationActionTypeFeedbackClicked,
};
// Enum for the NAU implementation for Content notifications.
typedef NS_ENUM(NSInteger, SettingsToggleType) {
// None of the toggles has changed.
SettingsToggleTypeNone = 0,
// The settings toggle identifier for Content for NAU.
SettingsToggleTypeContent = 1,
// The settings toggle identifier for sports for NAU.
SettingsToggleTypeSports = 2,
};
// Key of commerce notification used in pref
// `kFeaturePushNotificationPermissions`.
extern const char kCommerceNotificationKey[];
// Key of content notification used in pref
// `kFeaturePushNotificationPermissions`.
extern const char kContentNotificationKey[];
// Key of sports notification used in pref
// `kFeaturePushNotificationPermissions`.
extern const char kSportsNotificationKey[];
// Key of tips notification used in pref `kFeaturePushNotificationPermissions`.
extern const char kTipsNotificationKey[];
// Key of Safety Check notification used in pref
// `kFeaturePushNotificationPermissions`.
extern const char kSafetyCheckNotificationKey[];
// Action identifier for the Content Notifications Feedback action.
extern NSString* const kContentNotificationFeedbackActionIdentifier;
// Category identifier for the Content Notifications category that contains a
// Feedback action.
extern NSString* const kContentNotificationFeedbackCategoryIdentifier;
// The body parameter of the notification for a Content Notification delivered
// NAU.
extern NSString* const kContentNotificationNAUBodyParameter;
// The NSUserDefaults key for the delivered content notifications that need to
// be reported.
extern NSString* const kContentNotificationContentArrayKey;
// The histogram name for the NAU success metric.
extern const char kNAUHistogramName[];
// The histogram name to record a Content Notification action.
extern const char kContentNotificationActionHistogramName[];
// The max amount of NAU sends per session.
extern const int kDeliveredNAUMaxSendsPerSession;
#endif // IOS_CHROME_BROWSER_PUSH_NOTIFICATION_MODEL_CONSTANTS_H_