Skip to content

Commit

Permalink
Hide markAsNsfw and markAsAd if user do not have permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
lifegpc committed Feb 8, 2024
1 parent 04e73ab commit 91144bf
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 26 deletions.
6 changes: 4 additions & 2 deletions lib/api/user.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ part 'user.g.dart';
enum UserPermission with EnumFlag {
readGallery,
editGallery,
deleteGallery,
manageTasks,
}

const userPermissionAll = 3;
const userPermissionAll = 15;

class UserPermissions {
const UserPermissions(this.code);
Expand All @@ -25,7 +27,7 @@ class UserPermissions {

@override
String toString() {
if (code & userPermissionAll != 0) return "all";
if (code & userPermissionAll == userPermissionAll) return "all";
final set = code.getFlags(UserPermission.values).toSet();
if (set.isEmpty) return "none";
return set.map((e) => e.name).join("|");
Expand Down
9 changes: 9 additions & 0 deletions lib/auth.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,19 @@ class AuthInfo {
bool get isChecking => _isChecking;
bool? get isAdmin => _user?.isAdmin;
bool? get isDocker => _status?.isDocker;
bool? get canReadGallery =>
_user?.permissions.has(UserPermission.readGallery);
bool? get canEditGallery =>
_user?.permissions.has(UserPermission.editGallery);
bool? get canDeleteGallery =>
_user?.permissions.has(UserPermission.deleteGallery);
bool? get canManageTasks =>
_user?.permissions.has(UserPermission.manageTasks);

void clear() {
_user = null;
_status = null;
_token = null;
_checked = false;
}

Expand Down
55 changes: 32 additions & 23 deletions lib/components/thumbnail.dart
Original file line number Diff line number Diff line change
Expand Up @@ -297,37 +297,46 @@ class _Thumbnail extends State<Thumbnail> {
PopupMenuItem(
value: _ThumbnailMenu.saveAs,
child: Text(AppLocalizations.of(context)!.saveAs)),
const PopupMenuDivider(),
PopupMenuItem(
value: isNsfw
? _ThumbnailMenu.markAsSfw
: _ThumbnailMenu.markAsNsfw,
child: Text(isNsfw
? AppLocalizations.of(context)!.markAsSfw
: AppLocalizations.of(context)!.markAsNsfw)),
PopupMenuItem(
value: isAd
? _ThumbnailMenu.markAsNonAd
: _ThumbnailMenu.markAsAd,
child: Text(isAd
? AppLocalizations.of(context)!.markAsNonAd
: AppLocalizations.of(context)!.markAsAd)),
];
if (auth.canEditGallery == true) {
list += [
const PopupMenuDivider(),
PopupMenuItem(
value: isNsfw
? _ThumbnailMenu.markAsSfw
: _ThumbnailMenu.markAsNsfw,
child: Text(isNsfw
? AppLocalizations.of(context)!.markAsSfw
: AppLocalizations.of(context)!.markAsNsfw)),
PopupMenuItem(
value: isAd
? _ThumbnailMenu.markAsNonAd
: _ThumbnailMenu.markAsAd,
child: Text(isAd
? AppLocalizations.of(context)!.markAsNonAd
: AppLocalizations.of(context)!.markAsAd)),
];
}
return list;
}));
final timg = _data != null
? ImageWithContextMenu(_data!,
uri: _uri,
fileName: _fileName,
dir: _dir,
isNsfw: () => widget._pMeta.isNsfw,
changeNsfw: (isNsfw) {
_markAsNsfw(isNsfw);
},
isAd: () => widget._pMeta.isAd,
changeAd: (isAd) {
_markAsAd(isAd);
})
isNsfw:
auth.canEditGallery == true ? () => widget._pMeta.isNsfw : null,
changeNsfw: auth.canEditGallery == true
? (isNsfw) {
_markAsNsfw(isNsfw);
}
: null,
isAd: auth.canEditGallery == true ? () => widget._pMeta.isAd : null,
changeAd: auth.canEditGallery == true
? (isAd) {
_markAsAd(isAd);
}
: null)
: null;
final img = widget.gid != null && widget.index != null && _data != null
? GestureDetector(
Expand Down
2 changes: 1 addition & 1 deletion lib/globals.dart
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ List<PopupMenuEntry<MoreVertSettings>> buildMoreVertSettings(
title: Text(AppLocalizations.of(context)!.displayAd),
),
)));
if (path == "/gallery/:gid") {
if (path == "/gallery/:gid" && auth.canEditGallery == true) {
list.add(const PopupMenuDivider());
final isAllNsfw = GalleryPage.of(context).isAllNsfw;
if (isAllNsfw != null) {
Expand Down
11 changes: 11 additions & 0 deletions lib/platform/display.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:logging/logging.dart';
import 'package:window_manager/window_manager.dart';
import '../utils.dart';

final _log = Logger("platformDisplay");

Expand Down Expand Up @@ -30,6 +32,15 @@ class Display {
}

Future<bool> setFullscreenMode(bool fullscreenMode) async {
if (isDesktop) {
try {
await WindowManager.instance.setFullScreen(fullscreenMode);
return true;
} catch (e) {
_log.warning("Failed to set screen mode", e);
return false;
}
}
try {
await platform.invokeMethod<void>("setScreenMode", fullscreenMode);
return true;
Expand Down

0 comments on commit 91144bf

Please sign in to comment.