mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-06-06 05:49:03 +08:00
Hide markAsNsfw and markAsAd if user do not have permissions
This commit is contained in:
@@ -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);
|
||||
@@ -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("|");
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -297,22 +297,26 @@ 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
|
||||
@@ -320,14 +324,19 @@ class _Thumbnail extends State<Thumbnail> {
|
||||
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(
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user