signal-desktop/ts/state/selectors/updates.ts

49 lines
1.2 KiB
TypeScript

// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { createSelector } from 'reselect';
import { DialogType } from '../../types/Dialogs';
import type { StateType } from '../reducer';
import type { UpdatesStateType } from '../ducks/updates';
export const getUpdatesState = (state: Readonly<StateType>): UpdatesStateType =>
state.updates;
export const isUpdateDialogVisible = createSelector(
getUpdatesState,
({ dialogType, didSnooze }) => {
if (dialogType === DialogType.None) {
return false;
}
// Displayed as UnsupportedOSDialog in LeftPane
if (dialogType === DialogType.UnsupportedOS) {
return false;
}
if (didSnooze) {
return false;
}
return true;
}
);
export const isUpdateDownloaded = createSelector(
getUpdatesState,
({ dialogType }) =>
dialogType === DialogType.AutoUpdate ||
dialogType === DialogType.DownloadedUpdate
);
export const isOSUnsupported = createSelector(
getUpdatesState,
({ dialogType }) => dialogType === DialogType.UnsupportedOS
);
export const getHasPendingUpdate = createSelector(
getUpdatesState,
({ didSnooze }) => didSnooze === true
);