mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-17 03:28:40 +00:00
disallow screenshots
This commit is contained in:
parent
8cdcc74683
commit
2a98b6647f
6 changed files with 24 additions and 7 deletions
11
README.md
11
README.md
|
|
@ -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
|
## TODOS bevor first beta
|
||||||
- Add no_screenshot plugin: https://pub.dev/packages/no_screenshot
|
|
||||||
- Bei mehreren neu Empfangen Nachrichten fixen
|
|
||||||
- Settings
|
- Settings
|
||||||
- Delete and Block active users
|
- Delete and Block active users
|
||||||
- Onboarding Slide, Text und Animationen
|
|
||||||
- MessageKind -> Ausbauen?
|
- MessageKind -> Ausbauen?
|
||||||
- Nachrichten nach 24h Stunden löschen
|
- Nachrichten nach 24h Stunden löschen
|
||||||
- Real deployment aufsetzen direkt auf Netcup?
|
- Real deployment aufsetzen, direkt auf Netcup?
|
||||||
- Pro Invitation codes
|
- 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
|
## Later todos
|
||||||
- Videos
|
- Videos
|
||||||
- Sealed Sender
|
- Sealed Sender
|
||||||
|
|
|
||||||
BIN
assets/images/logo.jpg
Normal file
BIN
assets/images/logo.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
|
|
@ -126,9 +126,9 @@ class DbMessages extends CvModelBase {
|
||||||
final List<Map<String, dynamic>> maps = await dbProvider.db!.rawQuery('''
|
final List<Map<String, dynamic>> maps = await dbProvider.db!.rawQuery('''
|
||||||
SELECT $columnSendAt, $columnMessageOtherId
|
SELECT $columnSendAt, $columnMessageOtherId
|
||||||
FROM $tableName
|
FROM $tableName
|
||||||
WHERE $columnOtherUserId = ?
|
WHERE $columnOtherUserId = ? AND ($columnMessageKind = ? OR $columnMessageKind = ?)
|
||||||
ORDER BY $columnSendAt DESC;
|
ORDER BY $columnSendAt DESC;
|
||||||
''', [otherUserId]);
|
''', [otherUserId, MessageKind.image.index, MessageKind.video.index]);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return List.generate(maps.length, (i) {
|
return List.generate(maps.length, (i) {
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,15 @@ import 'package:flutter/services.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:local_auth/local_auth.dart';
|
import 'package:local_auth/local_auth.dart';
|
||||||
import 'package:lottie/lottie.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/components/media_view_sizing.dart';
|
||||||
import 'package:twonly/src/model/contacts_model.dart';
|
import 'package:twonly/src/model/contacts_model.dart';
|
||||||
import 'package:twonly/src/model/json/message.dart';
|
import 'package:twonly/src/model/json/message.dart';
|
||||||
import 'package:twonly/src/model/messages_model.dart';
|
import 'package:twonly/src/model/messages_model.dart';
|
||||||
import 'package:twonly/src/providers/api/api.dart';
|
import 'package:twonly/src/providers/api/api.dart';
|
||||||
|
|
||||||
|
final _noScreenshot = NoScreenshot.instance;
|
||||||
|
|
||||||
class MediaViewerView extends StatefulWidget {
|
class MediaViewerView extends StatefulWidget {
|
||||||
final Contact otherUser;
|
final Contact otherUser;
|
||||||
final DbMessage message;
|
final DbMessage message;
|
||||||
|
|
@ -40,6 +43,8 @@ class _MediaViewerViewState extends State<MediaViewerView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future loadMedia({bool force = false}) async {
|
Future loadMedia({bool force = false}) async {
|
||||||
|
bool result = await _noScreenshot.screenshotOff();
|
||||||
|
debugPrint('Screenshot Off: $result');
|
||||||
final content = widget.message.messageContent;
|
final content = widget.message.messageContent;
|
||||||
if (content is MediaMessageContent) {
|
if (content is MediaMessageContent) {
|
||||||
if (content.isRealTwonly) {
|
if (content.isRealTwonly) {
|
||||||
|
|
@ -97,8 +102,8 @@ class _MediaViewerViewState extends State<MediaViewerView> {
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
|
||||||
_timer?.cancel();
|
_timer?.cancel();
|
||||||
|
_noScreenshot.screenshotOn();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
||||||
|
|
@ -802,6 +802,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.0"
|
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:
|
optional:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ dependencies:
|
||||||
local_auth: ^2.3.0
|
local_auth: ^2.3.0
|
||||||
logging: ^1.3.0
|
logging: ^1.3.0
|
||||||
lottie: ^3.3.1
|
lottie: ^3.3.1
|
||||||
|
no_screenshot: ^0.3.1
|
||||||
path: ^1.9.0
|
path: ^1.9.0
|
||||||
path_provider: ^2.1.5
|
path_provider: ^2.1.5
|
||||||
permission_handler: ^11.3.1
|
permission_handler: ^11.3.1
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue