Merge pull request #891 from ente-io/album-header-change

Album header change
This commit is contained in:
Abhinav Kumar 2023-01-25 13:51:12 +05:30 committed by GitHub
commit cbee1c442b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 88 additions and 66 deletions

View file

@ -0,0 +1,26 @@
import { OverflowMenuOption } from 'components/OverflowMenu/option';
import React from 'react';
import FileDownloadOutlinedIcon from '@mui/icons-material/FileDownloadOutlined';
import constants from 'utils/strings/constants';
import { CollectionActions } from '.';
interface Iprops {
handleCollectionAction: (
action: CollectionActions,
loader?: boolean
) => (...args: any[]) => Promise<void>;
}
export function FavoritiesCollectionOption({ handleCollectionAction }: Iprops) {
return (
<OverflowMenuOption
startIcon={<FileDownloadOutlinedIcon />}
onClick={handleCollectionAction(
CollectionActions.CONFIRM_DOWNLOAD,
false
)}>
{constants.DOWNLOAD_COLLECTION}
</OverflowMenuOption>
);
}

View file

@ -24,16 +24,17 @@ export function QuickOptions({
<FlexWrapper sx={{ gap: '16px' }}> <FlexWrapper sx={{ gap: '16px' }}>
{!( {!(
collectionSummaryType === CollectionSummaryType.trash || collectionSummaryType === CollectionSummaryType.trash ||
collectionSummaryType === CollectionSummaryType.favorites collectionSummaryType === CollectionSummaryType.favorites ||
collectionSummaryType === CollectionSummaryType.incomingShare
) && ( ) && (
<Tooltip <Tooltip
title={ title={
/*: collectionSummaryType ===
CollectionSummaryType.incomingShare
? constants.SHARING_DETAILS*/
collectionSummaryType === collectionSummaryType ===
CollectionSummaryType.outgoingShare CollectionSummaryType.outgoingShare
? constants.MODIFY_SHARING ? constants.MODIFY_SHARING
: collectionSummaryType ===
CollectionSummaryType.incomingShare
? constants.SHARING_DETAILS
: constants.SHARE_COLLECTION : constants.SHARE_COLLECTION
}> }>
<IconButton> <IconButton>
@ -69,7 +70,7 @@ export function QuickOptions({
<IconButton> <IconButton>
<DeleteOutlinedIcon <DeleteOutlinedIcon
onClick={handleCollectionAction( onClick={handleCollectionAction(
CollectionActions.CONFIRM_DELETE, CollectionActions.CONFIRM_EMPTY_TRASH,
false false
)} )}
/> />

View file

@ -18,6 +18,7 @@ import OverflowMenu from 'components/OverflowMenu/menu';
import { CollectionSummaryType } from 'constants/collection'; import { CollectionSummaryType } from 'constants/collection';
import { TrashCollectionOption } from './TrashCollectionOption'; import { TrashCollectionOption } from './TrashCollectionOption';
import { SharedCollectionOption } from './SharedCollectionOption'; import { SharedCollectionOption } from './SharedCollectionOption';
import { FavoritiesCollectionOption } from './FavoritiesCollectionOption';
import { QuickOptions } from './QuickOptions'; import { QuickOptions } from './QuickOptions';
import MoreHoriz from '@mui/icons-material/MoreHoriz'; import MoreHoriz from '@mui/icons-material/MoreHoriz';
import { HorizontalFlex } from 'components/Container'; import { HorizontalFlex } from 'components/Container';
@ -239,32 +240,36 @@ const CollectionOptions = (props: CollectionOptionsProps) => {
handleCollectionAction={handleCollectionAction} handleCollectionAction={handleCollectionAction}
collectionSummaryType={collectionSummaryType} collectionSummaryType={collectionSummaryType}
/> />
{!(collectionSummaryType === CollectionSummaryType.favorites) && (
<OverflowMenu <OverflowMenu
ariaControls={'collection-options'} ariaControls={'collection-options'}
triggerButtonIcon={<MoreHoriz />} triggerButtonIcon={<MoreHoriz />}
triggerButtonProps={{ triggerButtonProps={{
sx: { sx: {
background: (theme) => theme.palette.fill.dark, background: (theme) => theme.palette.fill.dark,
}, },
}}> }}>
{collectionSummaryType === CollectionSummaryType.trash ? ( {collectionSummaryType === CollectionSummaryType.trash ? (
<TrashCollectionOption <TrashCollectionOption
handleCollectionAction={handleCollectionAction} handleCollectionAction={handleCollectionAction}
/> />
) : collectionSummaryType === ) : collectionSummaryType ===
CollectionSummaryType.incomingShare ? ( CollectionSummaryType.favorites ? (
<SharedCollectionOption <FavoritiesCollectionOption
handleCollectionAction={handleCollectionAction} handleCollectionAction={handleCollectionAction}
/> />
) : ( ) : collectionSummaryType ===
<AlbumCollectionOption CollectionSummaryType.incomingShare ? (
IsArchived={IsArchived(activeCollection)} <SharedCollectionOption
handleCollectionAction={handleCollectionAction} handleCollectionAction={handleCollectionAction}
/> />
)} ) : (
</OverflowMenu> <AlbumCollectionOption
)} IsArchived={IsArchived(activeCollection)}
handleCollectionAction={handleCollectionAction}
/>
)}
</OverflowMenu>
</HorizontalFlex> </HorizontalFlex>
); );
}; };

View file

@ -20,6 +20,7 @@ const StyledMenu = styled(Menu)`
& .MuiList-root { & .MuiList-root {
padding: 0; padding: 0;
border: none; border: none;
width: 220px;
} }
`; `;

View file

@ -50,8 +50,8 @@ import { User } from 'types/user';
import { import {
getNonHiddenCollections, getNonHiddenCollections,
isQuickLinkCollection, isQuickLinkCollection,
isSharedByMe, isOutgoingShare,
isSharedWithMe, isIncomingShare,
isSharedOnlyViaLink, isSharedOnlyViaLink,
} from 'utils/collection'; } from 'utils/collection';
import ComlinkCryptoWorker from 'utils/comlink/ComlinkCryptoWorker'; import ComlinkCryptoWorker from 'utils/comlink/ComlinkCryptoWorker';
@ -827,9 +827,9 @@ export function getCollectionSummaries(
latestFile: collectionLatestFiles.get(collection.id), latestFile: collectionLatestFiles.get(collection.id),
fileCount: collectionFilesCount.get(collection.id), fileCount: collectionFilesCount.get(collection.id),
updationTime: collection.updationTime, updationTime: collection.updationTime,
type: isSharedWithMe(collection, user) type: isIncomingShare(collection, user)
? CollectionSummaryType.incomingShare ? CollectionSummaryType.incomingShare
: isSharedByMe(collection) : isOutgoingShare(collection)
? CollectionSummaryType.outgoingShare ? CollectionSummaryType.outgoingShare
: isSharedOnlyViaLink(collection) : isSharedOnlyViaLink(collection)
? CollectionSummaryType.sharedOnlyViaLink ? CollectionSummaryType.sharedOnlyViaLink

View file

@ -232,20 +232,7 @@ const darkThemeOptions = createTheme({
MuiSvgIcon: { MuiSvgIcon: {
styleOverrides: { styleOverrides: {
root: ({ ownerState }) => { root: ({ ownerState }) => {
switch (ownerState.color) { return { ...setColor(ownerState) };
case 'primary':
return {
color: '#ffffff',
};
case 'secondary':
return {
color: 'rgba(255,255,255,0.24)',
};
case 'disabled':
return {
color: 'rgba(255, 255, 255, 0.16)',
};
}
}, },
}, },
}, },
@ -253,21 +240,7 @@ const darkThemeOptions = createTheme({
MuiIconButton: { MuiIconButton: {
styleOverrides: { styleOverrides: {
root: ({ ownerState }) => { root: ({ ownerState }) => {
switch (ownerState.color) { return { ...setColor(ownerState), padding: '12px' };
case 'primary':
return {
color: '#ffffff',
};
case 'secondary':
return {
color: 'rgba(255,255,255,0.24)',
};
}
if (ownerState.disabled) {
return {
color: 'rgba(255, 255, 255, 0.16)',
};
}
}, },
}, },
}, },
@ -403,3 +376,19 @@ const darkThemeOptions = createTheme({
}); });
export default darkThemeOptions; export default darkThemeOptions;
function setColor(ownerState) {
switch (ownerState.color) {
case 'primary':
return {
color: '#ffffff',
};
case 'secondary':
return {
color: 'rgba(255,255,255,0.24)',
};
case 'disabled':
return {
color: 'rgba(255, 255, 255, 0.16)',
};
}
}

View file

@ -242,10 +242,10 @@ export const isCollectionHidden = (collection: Collection) =>
export const isQuickLinkCollection = (collection: Collection) => export const isQuickLinkCollection = (collection: Collection) =>
collection.magicMetadata?.data.subType === SUB_TYPE.QUICK_LINK_COLLECTION; collection.magicMetadata?.data.subType === SUB_TYPE.QUICK_LINK_COLLECTION;
export function isSharedByMe(collection: Collection): boolean { export function isOutgoingShare(collection: Collection): boolean {
return collection.sharees?.length > 0; return collection.sharees?.length > 0;
} }
export function isSharedWithMe(collection: Collection, user: User) { export function isIncomingShare(collection: Collection, user: User) {
return collection.owner.id !== user.id; return collection.owner.id !== user.id;
} }
export function isSharedOnlyViaLink(collection: Collection) { export function isSharedOnlyViaLink(collection: Collection) {