mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-07-08 01:30:28 +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 {
|
enum UserPermission with EnumFlag {
|
||||||
readGallery,
|
readGallery,
|
||||||
editGallery,
|
editGallery,
|
||||||
|
deleteGallery,
|
||||||
|
manageTasks,
|
||||||
}
|
}
|
||||||
|
|
||||||
const userPermissionAll = 3;
|
const userPermissionAll = 15;
|
||||||
|
|
||||||
class UserPermissions {
|
class UserPermissions {
|
||||||
const UserPermissions(this.code);
|
const UserPermissions(this.code);
|
||||||
@@ -25,7 +27,7 @@ class UserPermissions {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
if (code & userPermissionAll != 0) return "all";
|
if (code & userPermissionAll == userPermissionAll) return "all";
|
||||||
final set = code.getFlags(UserPermission.values).toSet();
|
final set = code.getFlags(UserPermission.values).toSet();
|
||||||
if (set.isEmpty) return "none";
|
if (set.isEmpty) return "none";
|
||||||
return set.map((e) => e.name).join("|");
|
return set.map((e) => e.name).join("|");
|
||||||
|
|||||||
@@ -22,10 +22,19 @@ class AuthInfo {
|
|||||||
bool get isChecking => _isChecking;
|
bool get isChecking => _isChecking;
|
||||||
bool? get isAdmin => _user?.isAdmin;
|
bool? get isAdmin => _user?.isAdmin;
|
||||||
bool? get isDocker => _status?.isDocker;
|
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() {
|
void clear() {
|
||||||
_user = null;
|
_user = null;
|
||||||
_status = null;
|
_status = null;
|
||||||
|
_token = null;
|
||||||
_checked = false;
|
_checked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -297,22 +297,26 @@ class _Thumbnail extends State<Thumbnail> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
value: _ThumbnailMenu.saveAs,
|
value: _ThumbnailMenu.saveAs,
|
||||||
child: Text(AppLocalizations.of(context)!.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;
|
return list;
|
||||||
}));
|
}));
|
||||||
final timg = _data != null
|
final timg = _data != null
|
||||||
@@ -320,14 +324,19 @@ class _Thumbnail extends State<Thumbnail> {
|
|||||||
uri: _uri,
|
uri: _uri,
|
||||||
fileName: _fileName,
|
fileName: _fileName,
|
||||||
dir: _dir,
|
dir: _dir,
|
||||||
isNsfw: () => widget._pMeta.isNsfw,
|
isNsfw:
|
||||||
changeNsfw: (isNsfw) {
|
auth.canEditGallery == true ? () => widget._pMeta.isNsfw : null,
|
||||||
_markAsNsfw(isNsfw);
|
changeNsfw: auth.canEditGallery == true
|
||||||
},
|
? (isNsfw) {
|
||||||
isAd: () => widget._pMeta.isAd,
|
_markAsNsfw(isNsfw);
|
||||||
changeAd: (isAd) {
|
}
|
||||||
_markAsAd(isAd);
|
: null,
|
||||||
})
|
isAd: auth.canEditGallery == true ? () => widget._pMeta.isAd : null,
|
||||||
|
changeAd: auth.canEditGallery == true
|
||||||
|
? (isAd) {
|
||||||
|
_markAsAd(isAd);
|
||||||
|
}
|
||||||
|
: null)
|
||||||
: null;
|
: null;
|
||||||
final img = widget.gid != null && widget.index != null && _data != null
|
final img = widget.gid != null && widget.index != null && _data != null
|
||||||
? GestureDetector(
|
? GestureDetector(
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ List<PopupMenuEntry<MoreVertSettings>> buildMoreVertSettings(
|
|||||||
title: Text(AppLocalizations.of(context)!.displayAd),
|
title: Text(AppLocalizations.of(context)!.displayAd),
|
||||||
),
|
),
|
||||||
)));
|
)));
|
||||||
if (path == "/gallery/:gid") {
|
if (path == "/gallery/:gid" && auth.canEditGallery == true) {
|
||||||
list.add(const PopupMenuDivider());
|
list.add(const PopupMenuDivider());
|
||||||
final isAllNsfw = GalleryPage.of(context).isAllNsfw;
|
final isAllNsfw = GalleryPage.of(context).isAllNsfw;
|
||||||
if (isAllNsfw != null) {
|
if (isAllNsfw != null) {
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
|
import 'package:window_manager/window_manager.dart';
|
||||||
|
import '../utils.dart';
|
||||||
|
|
||||||
final _log = Logger("platformDisplay");
|
final _log = Logger("platformDisplay");
|
||||||
|
|
||||||
@@ -30,6 +32,15 @@ class Display {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> setFullscreenMode(bool fullscreenMode) async {
|
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 {
|
try {
|
||||||
await platform.invokeMethod<void>("setScreenMode", fullscreenMode);
|
await platform.invokeMethod<void>("setScreenMode", fullscreenMode);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user