Fixed: Free space and missing for selected root folder value

This commit is contained in:
Bogdan 2025-04-15 19:46:59 +03:00
parent c52f9c5ec4
commit cfd25e974f
5 changed files with 82 additions and 82 deletions

View file

@ -21,6 +21,7 @@ const ADD_NEW_KEY = 'addNew';
export interface RootFolderSelectInputValue export interface RootFolderSelectInputValue
extends EnhancedSelectInputValue<string> { extends EnhancedSelectInputValue<string> {
freeSpace?: number;
isMissing?: boolean; isMissing?: boolean;
} }
@ -42,10 +43,7 @@ function createRootFolderOptionsSelector(
includeNoChange: boolean, includeNoChange: boolean,
includeNoChangeDisabled: boolean includeNoChangeDisabled: boolean
) { ) {
return createSelector( return createSelector(createRootFoldersSelector(), (rootFolders) => {
createRootFoldersSelector(),
(rootFolders) => {
const values: RootFolderSelectInputValue[] = rootFolders.items.map( const values: RootFolderSelectInputValue[] = rootFolders.items.map(
(rootFolder) => { (rootFolder) => {
return { return {
@ -77,11 +75,7 @@ function createRootFolderOptionsSelector(
}); });
} }
if ( if (includeMissingValue && value && !values.find((v) => v.key === value)) {
includeMissingValue &&
value &&
!values.find((v) => v.key === value)
) {
values.push({ values.push({
key: value, key: value,
value, value,
@ -100,8 +94,7 @@ function createRootFolderOptionsSelector(
isSaving: rootFolders.isSaving, isSaving: rootFolders.isSaving,
saveError: rootFolders.saveError, saveError: rootFolders.saveError,
}; };
} });
);
} }
function RootFolderSelectInput({ function RootFolderSelectInput({

View file

@ -18,8 +18,7 @@ interface RootFolderSelectInputOptionProps
isWindows?: boolean; isWindows?: boolean;
} }
function RootFolderSelectInputOption(props: RootFolderSelectInputOptionProps) { function RootFolderSelectInputOption({
const {
id, id,
value, value,
freeSpace, freeSpace,
@ -28,8 +27,7 @@ function RootFolderSelectInputOption(props: RootFolderSelectInputOptionProps) {
isMobile, isMobile,
isWindows, isWindows,
...otherProps ...otherProps
} = props; }: RootFolderSelectInputOptionProps) {
const slashCharacter = isWindows ? '\\' : '/'; const slashCharacter = isWindows ? '\\' : '/';
return ( return (

View file

@ -30,3 +30,11 @@
text-align: right; text-align: right;
font-size: $smallFontSize; font-size: $smallFontSize;
} }
.isMissing {
flex: 0 0 auto;
margin-left: 15px;
color: var(--dangerColor);
text-align: right;
font-size: $smallFontSize;
}

View file

@ -2,6 +2,7 @@
// Please do not change this file! // Please do not change this file!
interface CssExports { interface CssExports {
'freeSpace': string; 'freeSpace': string;
'isMissing': string;
'movieFolder': string; 'movieFolder': string;
'path': string; 'path': string;
'pathContainer': string; 'pathContainer': string;

View file

@ -8,27 +8,23 @@ import styles from './RootFolderSelectInputSelectedValue.css';
interface RootFolderSelectInputSelectedValueProps { interface RootFolderSelectInputSelectedValueProps {
selectedValue: string; selectedValue: string;
values: RootFolderSelectInputValue[]; values: RootFolderSelectInputValue[];
freeSpace?: number;
movieFolder?: string; movieFolder?: string;
isWindows?: boolean; isWindows?: boolean;
includeFreeSpace?: boolean; includeFreeSpace?: boolean;
} }
function RootFolderSelectInputSelectedValue( function RootFolderSelectInputSelectedValue({
props: RootFolderSelectInputSelectedValueProps
) {
const {
selectedValue, selectedValue,
values, values,
freeSpace,
movieFolder, movieFolder,
includeFreeSpace = true, includeFreeSpace = true,
isWindows, isWindows,
...otherProps ...otherProps
} = props; }: RootFolderSelectInputSelectedValueProps) {
const slashCharacter = isWindows ? '\\' : '/'; const slashCharacter = isWindows ? '\\' : '/';
const value = values.find((v) => v.key === selectedValue)?.value; const { value, freeSpace, isMissing } = values.find(
(v) => v.key === selectedValue
) as RootFolderSelectInputValue;
return ( return (
<EnhancedSelectInputSelectedValue <EnhancedSelectInputSelectedValue
@ -53,6 +49,10 @@ function RootFolderSelectInputSelectedValue(
})} })}
</div> </div>
) : null} ) : null}
{isMissing ? (
<div className={styles.isMissing}>{translate('Missing')}</div>
) : null}
</EnhancedSelectInputSelectedValue> </EnhancedSelectInputSelectedValue>
); );
} }