Grouped Notifications UI (#30440)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com> Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
		
					parent
					
						
							
								7d090b2ab6
							
						
					
				
			
			
				commit
				
					
						f587ff643f
					
				
			
		
					 65 changed files with 3329 additions and 131 deletions
				
			
		
							
								
								
									
										40
									
								
								app/javascript/mastodon/selectors/settings.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								app/javascript/mastodon/selectors/settings.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| import type { RootState } from 'mastodon/store'; | ||||
| 
 | ||||
| /* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */ | ||||
| // state.settings is not yet typed, so we disable some ESLint checks for those selectors
 | ||||
| export const selectSettingsNotificationsShows = (state: RootState) => | ||||
|   state.settings.getIn(['notifications', 'shows']).toJS() as Record< | ||||
|     string, | ||||
|     boolean | ||||
|   >; | ||||
| 
 | ||||
| export const selectSettingsNotificationsExcludedTypes = (state: RootState) => | ||||
|   Object.entries(selectSettingsNotificationsShows(state)) | ||||
|     .filter(([_type, enabled]) => !enabled) | ||||
|     .map(([type, _enabled]) => type); | ||||
| 
 | ||||
| export const selectSettingsNotificationsQuickFilterShow = (state: RootState) => | ||||
|   state.settings.getIn(['notifications', 'quickFilter', 'show']) as boolean; | ||||
| 
 | ||||
| export const selectSettingsNotificationsQuickFilterActive = ( | ||||
|   state: RootState, | ||||
| ) => state.settings.getIn(['notifications', 'quickFilter', 'active']) as string; | ||||
| 
 | ||||
| export const selectSettingsNotificationsQuickFilterAdvanced = ( | ||||
|   state: RootState, | ||||
| ) => | ||||
|   state.settings.getIn(['notifications', 'quickFilter', 'advanced']) as boolean; | ||||
| 
 | ||||
| export const selectSettingsNotificationsShowUnread = (state: RootState) => | ||||
|   state.settings.getIn(['notifications', 'showUnread']) as boolean; | ||||
| 
 | ||||
| export const selectNeedsNotificationPermission = (state: RootState) => | ||||
|   (state.settings.getIn(['notifications', 'alerts']).includes(true) && | ||||
|     state.notifications.get('browserSupport') && | ||||
|     state.notifications.get('browserPermission') === 'default' && | ||||
|     !state.settings.getIn([ | ||||
|       'notifications', | ||||
|       'dismissPermissionBanner', | ||||
|     ])) as boolean; | ||||
| 
 | ||||
| /* eslint-enable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */ | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue