Update create user dialog

This commit is contained in:
2024-05-28 06:24:45 +00:00
committed by GitHub
parent f06dc34c7e
commit bf2795be33
13 changed files with 242 additions and 18 deletions

View File

@@ -1,4 +1,4 @@
import 'package:eh_downloader_flutter/globals.dart';
import '../globals.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import '../api/file.dart';

View File

@@ -30,10 +30,12 @@ class UserCard extends StatelessWidget {
style: TextStyle(color: cs.secondary))
],
)),
IconButton(
onPressed: () {},
tooltip: i18n.edit,
icon: const Icon(Icons.edit)),
!user.isAdmin || (user.isAdmin && auth.isRoot == true)
? IconButton(
onPressed: () {},
tooltip: i18n.edit,
icon: const Icon(Icons.edit))
: Container(),
!user.isAdmin ||
(user.isAdmin && auth.isRoot == true && user.id != 0)
? IconButton(

View File

@@ -0,0 +1,78 @@
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../api/user.dart';
class UserPermissionsChips extends StatefulWidget {
const UserPermissionsChips({super.key, this.permissions, this.onChanged});
final UserPermissions? permissions;
final ValueChanged<UserPermissions>? onChanged;
@override
State<StatefulWidget> createState() => _UserPermissionsChips();
}
class _UserPermissionsChips extends State<UserPermissionsChips> {
late UserPermissions _permissions;
@override
void initState() {
_permissions = widget.permissions ?? UserPermissions(0);
super.initState();
}
void _onChanged() {
if (widget.onChanged != null) {
widget.onChanged!(_permissions);
}
}
Widget _buildChips(BuildContext context) {
final i18n = AppLocalizations.of(context)!;
var list = <FilterChip>[
FilterChip(
label: Text(i18n.allPermissions),
selected: _permissions.isAll,
onSelected: (bool value) {
setState(() {
if (value) {
_permissions.code = userPermissionAll;
} else {
_permissions.code = 0;
}
});
_onChanged();
},
)
];
for (var flag in UserPermission.values) {
list.add(FilterChip(
label: Text(flag.localText(context)),
selected: _permissions.has(flag),
onSelected: (bool value) {
setState(() {
if (value) {
_permissions.add(flag);
} else {
_permissions.remove(flag);
}
});
_onChanged();
},
));
}
return Wrap(spacing: 5.0, children: list);
}
@override
Widget build(BuildContext context) {
final i18n = AppLocalizations.of(context)!;
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Padding(
padding: const EdgeInsets.only(bottom: 8),
child: Row(mainAxisAlignment: MainAxisAlignment.start, children: [
const Icon(Icons.person),
Text(i18n.userPermissions, style: const TextStyle(fontSize: 20)),
])),
_buildChips(context),
]);
}
}