| 
									
										
										
										
											2023-01-03 11:55:46 -08:00
										 |  |  | // Copyright 2019 Signal Messenger, LLC
 | 
					
						
							| 
									
										
										
										
											2020-10-30 15:34:04 -05:00
										 |  |  | // SPDX-License-Identifier: AGPL-3.0-only
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | import { createSelector } from 'reselect'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 14:15:33 -05:00
										 |  |  | import type { LocalizerType, ThemeType } from '../../types/Util'; | 
					
						
							| 
									
										
										
										
											2021-10-26 15:59:08 -07:00
										 |  |  | import type { UUIDStringType } from '../../types/UUID'; | 
					
						
							| 
									
										
										
										
											2022-06-08 15:00:32 -07:00
										 |  |  | import type { LocaleMessagesType } from '../../types/I18N'; | 
					
						
							|  |  |  | import type { MenuOptionsType } from '../../types/menu'; | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 14:15:33 -05:00
										 |  |  | import type { StateType } from '../reducer'; | 
					
						
							|  |  |  | import type { UserStateType } from '../ducks/user'; | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-26 17:05:26 -06:00
										 |  |  | import { isAlpha, isBeta } from '../../util/version'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | export const getUser = (state: StateType): UserStateType => state.user; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const getUserNumber = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							| 
									
										
										
										
											2022-02-23 10:48:40 -08:00
										 |  |  |   (state: UserStateType): string | undefined => state.ourNumber | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-17 10:15:10 -07:00
										 |  |  | export const getUserDeviceId = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							| 
									
										
										
										
											2022-02-23 10:48:40 -08:00
										 |  |  |   (state: UserStateType): number | undefined => state.ourDeviceId | 
					
						
							| 
									
										
										
										
											2021-06-17 10:15:10 -07:00
										 |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | export const getRegionCode = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							| 
									
										
										
										
											2022-02-23 10:48:40 -08:00
										 |  |  |   (state: UserStateType): string | undefined => state.regionCode | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-05 13:14:58 -08:00
										 |  |  | export const getUserConversationId = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							| 
									
										
										
										
											2022-02-23 10:48:40 -08:00
										 |  |  |   (state: UserStateType): string | undefined => state.ourConversationId | 
					
						
							| 
									
										
										
										
											2020-03-05 13:14:58 -08:00
										 |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-08 13:46:25 -07:00
										 |  |  | export const getUserACI = createSelector( | 
					
						
							| 
									
										
										
										
											2020-03-05 13:14:58 -08:00
										 |  |  |   getUser, | 
					
						
							| 
									
										
										
										
											2022-07-08 13:46:25 -07:00
										 |  |  |   (state: UserStateType): UUIDStringType | undefined => state.ourACI | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const getUserPNI = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): UUIDStringType | undefined => state.ourPNI | 
					
						
							| 
									
										
										
										
											2020-03-05 13:14:58 -08:00
										 |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-14 13:49:58 -08:00
										 |  |  | export const getIntl = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): LocalizerType => state.i18n | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2019-05-16 15:32:11 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-08 15:00:32 -07:00
										 |  |  | export const getLocaleMessages = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): LocaleMessagesType => state.localeMessages | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-21 11:16:06 -08:00
										 |  |  | export const getInteractionMode = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType) => state.interactionMode | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-16 15:32:11 -07:00
										 |  |  | export const getAttachmentsPath = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): string => state.attachmentsPath | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const getStickersPath = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): string => state.stickersPath | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2019-05-23 18:27:42 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-07 13:36:16 -08:00
										 |  |  | export const getPlatform = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): string => state.platform | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-23 18:27:42 -07:00
										 |  |  | export const getTempPath = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): string => state.tempPath | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2021-02-11 20:50:11 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | export const getTheme = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): ThemeType => state.theme | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2022-01-26 17:05:26 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | const getVersion = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType) => state.version | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const getIsAlpha = createSelector(getVersion, isAlpha); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const getIsBeta = createSelector(getVersion, isBeta); | 
					
						
							| 
									
										
										
										
											2022-06-08 15:00:32 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | export const getIsMainWindowMaximized = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): boolean => state.isMainWindowMaximized | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const getIsMainWindowFullScreen = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): boolean => state.isMainWindowFullScreen | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const getMenuOptions = createSelector( | 
					
						
							|  |  |  |   getUser, | 
					
						
							|  |  |  |   (state: UserStateType): MenuOptionsType => state.menuOptions | 
					
						
							|  |  |  | ); |