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;
|
|
|
|
|
2024-03-13 20:44:13 +00:00
|
|
|
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
|
|
|
|
);
|
2023-08-14 23:28:47 +00:00
|
|
|
|
|
|
|
export const getHasPendingUpdate = createSelector(
|
|
|
|
getUpdatesState,
|
|
|
|
({ didSnooze }) => didSnooze === true
|
|
|
|
);
|