disallow screenshots

This commit is contained in:
otsmr 2025-02-07 19:38:23 +01:00
parent 8cdcc74683
commit 2a98b6647f
6 changed files with 24 additions and 7 deletions

View file

@ -4,16 +4,19 @@ Don't be lonely, get twonly! Send pictures to a friend in real time and be sure
## TODOS bevor first beta
- Add no_screenshot plugin: https://pub.dev/packages/no_screenshot
- Bei mehreren neu Empfangen Nachrichten fixen
- Settings
- Delete and Block active users
- Onboarding Slide, Text und Animationen
- MessageKind -> Ausbauen?
- Nachrichten nach 24h Stunden löschen
- Real deployment aufsetzen direkt auf Netcup?
- Real deployment aufsetzen, direkt auf Netcup?
- Pro Invitation codes
- FIX: Problem Bild falsch, wenn handy schräg...
- MediaView:
- Bei weiteren geladenen Bildern -> Direkt anzeigen ohne zu popen
## TODOS bevor first release
- Webpage
- Instagam
## Later todos
- Videos
- Sealed Sender

BIN
assets/images/logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -126,9 +126,9 @@ class DbMessages extends CvModelBase {
final List<Map<String, dynamic>> maps = await dbProvider.db!.rawQuery('''
SELECT $columnSendAt, $columnMessageOtherId
FROM $tableName
WHERE $columnOtherUserId = ?
WHERE $columnOtherUserId = ? AND ($columnMessageKind = ? OR $columnMessageKind = ?)
ORDER BY $columnSendAt DESC;
''', [otherUserId]);
''', [otherUserId, MessageKind.image.index, MessageKind.video.index]);
try {
return List.generate(maps.length, (i) {

View file

@ -4,12 +4,15 @@ import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:local_auth/local_auth.dart';
import 'package:lottie/lottie.dart';
import 'package:no_screenshot/no_screenshot.dart';
import 'package:twonly/src/components/media_view_sizing.dart';
import 'package:twonly/src/model/contacts_model.dart';
import 'package:twonly/src/model/json/message.dart';
import 'package:twonly/src/model/messages_model.dart';
import 'package:twonly/src/providers/api/api.dart';
final _noScreenshot = NoScreenshot.instance;
class MediaViewerView extends StatefulWidget {
final Contact otherUser;
final DbMessage message;
@ -40,6 +43,8 @@ class _MediaViewerViewState extends State<MediaViewerView> {
}
Future loadMedia({bool force = false}) async {
bool result = await _noScreenshot.screenshotOff();
debugPrint('Screenshot Off: $result');
final content = widget.message.messageContent;
if (content is MediaMessageContent) {
if (content.isRealTwonly) {
@ -97,8 +102,8 @@ class _MediaViewerViewState extends State<MediaViewerView> {
@override
void dispose() {
super.dispose();
_timer?.cancel();
_noScreenshot.screenshotOn();
}
@override

View file

@ -802,6 +802,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.5.0"
no_screenshot:
dependency: "direct main"
description:
name: no_screenshot
sha256: ec3d86d7ee89a09c3a3939c1003012536ba4b3fcb4f8cbd23d87ada595c99258
url: "https://pub.dev"
source: hosted
version: "0.3.1"
optional:
dependency: transitive
description:

View file

@ -36,6 +36,7 @@ dependencies:
local_auth: ^2.3.0
logging: ^1.3.0
lottie: ^3.3.1
no_screenshot: ^0.3.1
path: ^1.9.0
path_provider: ^2.1.5
permission_handler: ^11.3.1