@@ -49,6 +49,7 @@ - (instancetype)initAsFrom {
4949 _hasPrompted = [standardUserDefaults getSavedBoolForKey: OSUD_WAS_PROMPTED_FOR_NOTIFICATIONS_FROM defaultValue: false ];
5050 _answeredPrompt = [standardUserDefaults getSavedBoolForKey: OSUD_WAS_NOTIFICATION_PROMPT_ANSWERED_FROM defaultValue: false ];
5151 _accepted = [standardUserDefaults getSavedBoolForKey: OSUD_PERMISSION_ACCEPTED_FROM defaultValue: false ];
52+ _ephemeral = [standardUserDefaults getSavedBoolForKey: OSUD_PERMISSION_EPHEMERAL_FROM defaultValue: false ];
5253 _provisional = [standardUserDefaults getSavedBoolForKey: OSUD_PROVISIONAL_PUSH_AUTHORIZATION_FROM defaultValue: false ];
5354 _providesAppNotificationSettings = [standardUserDefaults getSavedBoolForKey: OSUD_APP_PROVIDES_NOTIFICATION_SETTINGS defaultValue: false ];
5455
@@ -60,6 +61,7 @@ - (void)persistAsFrom {
6061 [standardUserDefaults saveBoolForKey: OSUD_WAS_PROMPTED_FOR_NOTIFICATIONS_FROM withValue: _hasPrompted];
6162 [standardUserDefaults saveBoolForKey: OSUD_WAS_NOTIFICATION_PROMPT_ANSWERED_FROM withValue: _answeredPrompt];
6263 [standardUserDefaults saveBoolForKey: OSUD_PERMISSION_ACCEPTED_FROM withValue: _accepted];
64+ [standardUserDefaults saveBoolForKey: OSUD_PERMISSION_EPHEMERAL_FROM withValue: _ephemeral];
6365 [standardUserDefaults saveBoolForKey: OSUD_PROVISIONAL_PUSH_AUTHORIZATION_FROM withValue: _provisional];
6466 [standardUserDefaults saveBoolForKey: OSUD_APP_PROVIDES_NOTIFICATION_SETTINGS withValue: _providesAppNotificationSettings];
6567}
@@ -72,6 +74,7 @@ - (instancetype)copyWithZone:(NSZone*)zone {
7274 copy->_hasPrompted = _hasPrompted;
7375 copy->_answeredPrompt = _answeredPrompt;
7476 copy->_accepted = _accepted;
77+ copy->_ephemeral = _ephemeral;
7578 copy->_provisional = _provisional;
7679 copy->_providesAppNotificationSettings = _providesAppNotificationSettings;
7780 }
@@ -94,7 +97,7 @@ - (BOOL)hasPrompted {
9497}
9598
9699- (BOOL )reachable {
97- return self.provisional || self.accepted ;
100+ return self.provisional || self.accepted || self. ephemeral ;
98101}
99102
100103- (void )setProvisional : (BOOL )provisional {
@@ -130,6 +133,13 @@ - (void)setAccepted:(BOOL)accepted {
130133 [self .observable notifyChange: self ];
131134}
132135
136+ - (void )setEphemeral : (BOOL )ephemeral {
137+ BOOL changed = _ephemeral != ephemeral;
138+ _ephemeral = ephemeral;
139+ if (changed)
140+ [self .observable notifyChange: self ];
141+ }
142+
133143- (void )setProvidesAppNotificationSettings : (BOOL )providesAppNotificationSettings {
134144 _providesAppNotificationSettings = providesAppNotificationSettings;
135145}
@@ -141,6 +151,9 @@ - (OSNotificationPermission)status {
141151 if (self.answeredPrompt )
142152 return OSNotificationPermissionDenied;
143153
154+ if (self.ephemeral )
155+ return OSNotificationPermissionEphemeral;
156+
144157 if (self.provisional )
145158 return OSNotificationPermissionProvisional;
146159
@@ -157,12 +170,15 @@ - (NSString*)statusAsString {
157170 return @" Denied" ;
158171 case OSNotificationPermissionProvisional:
159172 return @" Provisional" ;
173+ case OSNotificationPermissionEphemeral:
174+ return @" Ephemeral" ;
160175 }
161176 return @" NotDetermined" ;
162177}
163178
164179- (BOOL )compare : (OSPermissionState*)from {
165180 return self.accepted != from.accepted ||
181+ self.ephemeral != from.ephemeral ||
166182 self.answeredPrompt != from.answeredPrompt ||
167183 self.hasPrompted != from.hasPrompted ;
168184}
0 commit comments