♻️💄 front: Use UserBlock from grouped rows in the access rights modal (and a bit of dark mode borders) (#50)

This commit is contained in:
Eric Doughty-Papassideris
2024-04-21 22:10:35 +02:00
committed by ericlinagora
parent 035feada8d
commit 8d42c09b70
4 changed files with 42 additions and 72 deletions
@@ -1,17 +0,0 @@
import React, { Component } from 'react';
import './elements.scss';
import UserService from '@features/users/services/current-user-service';
export default class User extends React.Component {
render() {
return (
<div className={'user_bloc ' + (this.props.mini ? 'mini ' : '')}>
<div
className="userimage"
style={{ backgroundImage: "url('" + UserService.getThumbnail(this.props.data) + "')" }}
/>
{!this.props.mini && UserService.getFullName(this.props.data)}
</div>
);
}
}
@@ -1,7 +1,7 @@
import React, { useEffect, useRef, useState } from 'react';
import { useEffect, useRef, useState } from 'react';
import UserBlock from '@molecules/grouped-rows/user';
import { Input } from '@atoms/input/input-text';
import { useSearchUsers } from '@features/users/hooks/use-search-user-list';
import User from '@components/ui/user';
import { Button } from '@atoms/button/button';
import { UserType } from '@features/users/types/user';
import { InputDecorationIcon } from '@atoms/input/input-decoration-icon';
@@ -99,16 +99,13 @@ export default (props: {
)}
{shownResults.map((user, i) => {
return (
<div key={user.id} className={
"rounded m-1 p-3 new-direct-channel-proposed-user flex flex-row items-center justify-center align-baseline"
+ (i === selectedKeyIndex ? ' ring' : (i > 0 && i !== (selectedKeyIndex + 1) ? ' border-t' : ''))}>
<div className="grow">
<div className='font-bold'>
<User data={user} />
</div>
<div className='ml-3 text-sm text-slate-500'>{user.email}</div>
</div>
<div className='shrink-0 ml-2'>
<UserBlock
key={user.id}
user={user}
className={
"rounded m-1 p-3 new-direct-channel-proposed-user flex flex-row items-center justify-center align-baseline"
+ (i === selectedKeyIndex ? ' ring' : (i > 0 && i !== (selectedKeyIndex + 1) ? ' border-t' : ''))}
suffix={
<Button
onClick={() => {
setUsers([user]);
@@ -119,8 +116,8 @@ export default (props: {
>
{Languages.t('components.user_picker.modal.result_add.' + props.level)}
</Button>
</div>
</div>
}
/>
);
})}
{result.length > maxUserResultsShown &&
@@ -1,5 +1,6 @@
import Avatar from '@atoms/avatar';
import { Base, Info } from '@atoms/text';
import UserBlock from '@molecules/grouped-rows/user';
import { useDriveItem } from '@features/drive/hooks/use-drive-item';
import { DriveFileAccessLevel } from '@features/drive/types';
import { useCurrentUser } from '@features/users/hooks/use-current-user';
@@ -19,7 +20,7 @@ export const InternalAccessManager = ({ id, disabled }: { id: string; disabled:
return (
<>
<Base className="block mt-4 mb-1">{Languages.t('components.internal-access_specific_rules')}</Base>
<div className="rounded-md border mt-2">
<div className="rounded-md border mt-2 dark:border-zinc-700">
<UserAccessSelector id={id} disabled={disabled} />
{userEntities
@@ -84,48 +85,37 @@ const UserAccessLevel = ({
const { item, loading, update } = useDriveItem(id);
const user = useUser(userId);
const { user: currentUser } = useCurrentUser();
const level =
item?.access_info.entities.filter(a => a.type === 'user' && a.id === userId)?.[0]?.level ||
'none';
const level = item?.access_info.entities.filter(a => a.type === 'user' && a.id === userId)?.[0]?.level || 'none';
return (
<div className="p-4 border-t flex flex-row items-center justify-center">
<div className="shrink-0">
<Avatar
avatar={user?.thumbnail || ''}
title={!user ? '-' : currentUserService.getFullName(user)}
size="sm"
/>
</div>
<div className="grow ml-2">
<Base>{!!user && currentUserService.getFullName(user)}</Base>{' '}
{user?.id === currentUser?.id && <Info>{Languages.t('components.internal-access_specific_rules_you')}</Info>}
</div>
<div className="shrink-0 ml-2">
<UserBlock
className="p-4 border-t dark:border-zinc-700"
user={user}
isSelf={!!currentUser?.id && user?.id === currentUser?.id}
suffix={
<AccessLevel
disabled={loading || disabled || user?.id === currentUser?.id}
level={level}
canRemove
onChange={level => {
update({
access_info: {
entities:
level === 'remove'
? item?.access_info?.entities.filter(
e => e.type !== 'user' || e.id !== userId,
) || []
: item?.access_info?.entities.map(e => {
if (e.type === 'user' && e.id === userId) {
return { ...e, level };
}
return e;
}) || [],
public: item?.access_info.public,
},
});
}}
/>
</div>
</div>
canRemove={true}
onChange={
level =>
update({
access_info: {
entities:
level === 'remove'
? item?.access_info?.entities.filter(
e => e.type !== 'user' || e.id !== userId,
) || []
: item?.access_info?.entities.map(e => {
if (e.type === 'user' && e.id === userId)
return { ...e, level };
return e;
}) || [],
public: item?.access_info.public,
},
})
}
/>
}
/>
);
};
@@ -35,7 +35,7 @@ export const PublicLinkManager = ({ id, disabled }: { id: string; disabled?: boo
<Subtitle className="block mt-2 mb-1">
{Languages.t('components.public-link-acess.public_link_access')}
</Subtitle>
<div className="rounded-md border">
<div className="rounded-md border dark:border-zinc-700">
<div className="p-4 flex flex-row items-center justify-center">
<div className="grow relative">
<Input