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

70 lines
1.6 KiB
TypeScript
Raw Normal View History

2023-01-18 23:31:10 +00:00
// 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';
2023-03-20 20:42:00 +00:00
export const getUpdatesState = (state: Readonly<StateType>): UpdatesStateType =>
2023-01-18 23:31:10 +00:00
state.updates;
export const getUpdateDialogType = createSelector(
getUpdatesState,
({ dialogType }) => dialogType
);
export const getUpdateVersion = createSelector(
getUpdatesState,
({ version }) => version
);
export const getUpdateDownloadSize = createSelector(
getUpdatesState,
({ downloadSize }) => downloadSize
);
export const getUpdateDownloadedSize = createSelector(
getUpdatesState,
({ downloadedSize }) => downloadedSize
);
2023-01-18 23:31:10 +00:00
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,
2023-03-15 16:57:27 +00:00
({ dialogType }) =>
dialogType === DialogType.AutoUpdate ||
dialogType === DialogType.DownloadedUpdate
2023-01-18 23:31:10 +00:00
);
export const isOSUnsupported = createSelector(
getUpdatesState,
({ dialogType }) => dialogType === DialogType.UnsupportedOS
);
export const getHasPendingUpdate = createSelector(
getUpdatesState,
({ didSnooze }) => didSnooze === true
);