mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-05-25 07:02:12 +00:00
Merge pull request #412 from twonlyapp/dev
Some checks are pending
Publish on Github / build_and_publish (push) Waiting to run
Some checks are pending
Publish on Github / build_and_publish (push) Waiting to run
- Fix: Issue with opening directly in chats - Fix: Multiple smaller issues
This commit is contained in:
commit
dec79f3463
7 changed files with 50 additions and 20 deletions
|
|
@ -1,5 +1,10 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.2.14
|
||||||
|
|
||||||
|
- Fix: Issue with opening directly in chats
|
||||||
|
- Fix: Multipe smaller issues
|
||||||
|
|
||||||
## 0.2.13
|
## 0.2.13
|
||||||
|
|
||||||
- New: Tutorial on how to use zoom.
|
- New: Tutorial on how to use zoom.
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,14 @@ class MediaFileService {
|
||||||
|
|
||||||
Future<void> createThumbnail() async {
|
Future<void> createThumbnail() async {
|
||||||
if (!storedPath.existsSync()) {
|
if (!storedPath.existsSync()) {
|
||||||
Log.error('Could not create Thumbnail as stored media does not exists.');
|
if (mediaFile.stored &&
|
||||||
|
mediaFile.createdAt.isBefore(
|
||||||
|
clock.now().subtract(const Duration(days: 30)),
|
||||||
|
)) {
|
||||||
|
// media files does not exists any more so also delete the database entry
|
||||||
|
await twonlyDB.mediaFilesDao.deleteMediaFile(mediaFile.mediaId);
|
||||||
|
fullMediaRemoval();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var success = false;
|
var success = false;
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,12 @@ Future<void> runMigrations() async {
|
||||||
for (final messageId in messageIds.first.split(',')) {
|
for (final messageId in messageIds.first.split(',')) {
|
||||||
await (twonlyDB.update(
|
await (twonlyDB.update(
|
||||||
twonlyDB.messages,
|
twonlyDB.messages,
|
||||||
)..where((tbl) => tbl.messageId.equals(messageId))).write(
|
)..where(
|
||||||
|
(tbl) =>
|
||||||
|
tbl.messageId.equals(messageId) &
|
||||||
|
(tbl.openedByAll.isNull() | tbl.openedAt.isNull()),
|
||||||
|
))
|
||||||
|
.write(
|
||||||
MessagesCompanion(
|
MessagesCompanion(
|
||||||
openedAt: Value(now),
|
openedAt: Value(now),
|
||||||
openedByAll: Value(now),
|
openedByAll: Value(now),
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ Future<void> setupNotificationWithUsers({
|
||||||
|
|
||||||
// HotFIX: Search for user with id 0 if not there remove all
|
// HotFIX: Search for user with id 0 if not there remove all
|
||||||
// and create new push keys with all users.
|
// and create new push keys with all users.
|
||||||
final pushUser = pushUsers.firstWhereOrNull((x) => x.userId == 0);
|
final pushUser = pushUsers.firstWhereOrNull((x) => x.userId.toInt() == 0);
|
||||||
if (pushUser == null) {
|
if (pushUser == null) {
|
||||||
Log.info('Clearing push keys');
|
Log.info('Clearing push keys');
|
||||||
await setPushKeys(SecureStorageKeys.receivingPushKeys, []);
|
await setPushKeys(SecureStorageKeys.receivingPushKeys, []);
|
||||||
|
|
@ -51,7 +51,7 @@ Future<void> setupNotificationWithUsers({
|
||||||
final contacts = await twonlyDB.contactsDao.getAllContacts();
|
final contacts = await twonlyDB.contactsDao.getAllContacts();
|
||||||
for (final contact in contacts) {
|
for (final contact in contacts) {
|
||||||
final pushUser = pushUsers.firstWhereOrNull(
|
final pushUser = pushUsers.firstWhereOrNull(
|
||||||
(x) => x.userId == contact.userId,
|
(x) => x.userId.toInt() == contact.userId,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (pushUser != null && pushUser.pushKeys.isNotEmpty) {
|
if (pushUser != null && pushUser.pushKeys.isNotEmpty) {
|
||||||
|
|
@ -124,7 +124,9 @@ Future<void> sendNewPushKey(int userId, PushKey pushKey) async {
|
||||||
Future<void> updatePushUser(Contact contact) async {
|
Future<void> updatePushUser(Contact contact) async {
|
||||||
final pushKeys = await getPushKeys(SecureStorageKeys.receivingPushKeys);
|
final pushKeys = await getPushKeys(SecureStorageKeys.receivingPushKeys);
|
||||||
|
|
||||||
final pushUser = pushKeys.firstWhereOrNull((x) => x.userId == contact.userId);
|
final pushUser = pushKeys.firstWhereOrNull(
|
||||||
|
(x) => x.userId.toInt() == contact.userId,
|
||||||
|
);
|
||||||
|
|
||||||
if (pushUser == null) {
|
if (pushUser == null) {
|
||||||
pushKeys.add(
|
pushKeys.add(
|
||||||
|
|
@ -148,7 +150,9 @@ Future<void> updatePushUser(Contact contact) async {
|
||||||
Future<void> handleNewPushKey(int fromUserId, int keyId, List<int> key) async {
|
Future<void> handleNewPushKey(int fromUserId, int keyId, List<int> key) async {
|
||||||
final pushKeys = await getPushKeys(SecureStorageKeys.sendingPushKeys);
|
final pushKeys = await getPushKeys(SecureStorageKeys.sendingPushKeys);
|
||||||
|
|
||||||
var pushUser = pushKeys.firstWhereOrNull((x) => x.userId == fromUserId);
|
var pushUser = pushKeys.firstWhereOrNull(
|
||||||
|
(x) => x.userId.toInt() == fromUserId,
|
||||||
|
);
|
||||||
|
|
||||||
if (pushUser == null) {
|
if (pushUser == null) {
|
||||||
final contact = await twonlyDB.contactsDao
|
final contact = await twonlyDB.contactsDao
|
||||||
|
|
@ -164,7 +168,7 @@ Future<void> handleNewPushKey(int fromUserId, int keyId, List<int> key) async {
|
||||||
lastMessageId: uuid.v7(),
|
lastMessageId: uuid.v7(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
pushUser = pushKeys.firstWhereOrNull((x) => x.userId == fromUserId);
|
pushUser = pushKeys.firstWhereOrNull((x) => x.userId.toInt() == fromUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pushUser == null) {
|
if (pushUser == null) {
|
||||||
|
|
@ -187,7 +191,9 @@ Future<void> handleNewPushKey(int fromUserId, int keyId, List<int> key) async {
|
||||||
Future<void> updateLastMessageId(int fromUserId, String messageId) async {
|
Future<void> updateLastMessageId(int fromUserId, String messageId) async {
|
||||||
final pushUsers = await getPushKeys(SecureStorageKeys.receivingPushKeys);
|
final pushUsers = await getPushKeys(SecureStorageKeys.receivingPushKeys);
|
||||||
|
|
||||||
final pushUser = pushUsers.firstWhereOrNull((x) => x.userId == fromUserId);
|
final pushUser = pushUsers.firstWhereOrNull(
|
||||||
|
(x) => x.userId.toInt() == fromUserId,
|
||||||
|
);
|
||||||
if (pushUser == null) {
|
if (pushUser == null) {
|
||||||
unawaited(setupNotificationWithUsers());
|
unawaited(setupNotificationWithUsers());
|
||||||
return;
|
return;
|
||||||
|
|
@ -285,7 +291,7 @@ Future<PushNotification?> getPushNotificationFromEncryptedContent(
|
||||||
|
|
||||||
if (content.hasMediaUpdate()) {
|
if (content.hasMediaUpdate()) {
|
||||||
final msg = await twonlyDB.messagesDao
|
final msg = await twonlyDB.messagesDao
|
||||||
.getMessageById(content.reaction.targetMessageId)
|
.getMessageById(content.mediaUpdate.targetMessageId)
|
||||||
.getSingleOrNull();
|
.getSingleOrNull();
|
||||||
// These notifications should only be send to the original sender.
|
// These notifications should only be send to the original sender.
|
||||||
if (msg == null || msg.senderId != toUserId) {
|
if (msg == null || msg.senderId != toUserId) {
|
||||||
|
|
@ -304,7 +310,9 @@ Future<PushNotification?> getPushNotificationFromEncryptedContent(
|
||||||
if (content.hasGroupCreate()) {
|
if (content.hasGroupCreate()) {
|
||||||
kind = PushKind.ADDED_TO_GROUP;
|
kind = PushKind.ADDED_TO_GROUP;
|
||||||
final group = await twonlyDB.groupsDao.getGroup(content.groupId);
|
final group = await twonlyDB.groupsDao.getGroup(content.groupId);
|
||||||
additionalContent = group!.groupName;
|
if (group != null) {
|
||||||
|
additionalContent = group.groupName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind == null) return null;
|
if (kind == null) return null;
|
||||||
|
|
@ -339,7 +347,9 @@ Future<Uint8List?> encryptPushNotification(
|
||||||
var key = 'InsecureOnlyUsedForAddingContact'.codeUnits;
|
var key = 'InsecureOnlyUsedForAddingContact'.codeUnits;
|
||||||
var keyId = 0;
|
var keyId = 0;
|
||||||
|
|
||||||
final pushUser = pushKeys.firstWhereOrNull((x) => x.userId == toUserId);
|
final pushUser = pushKeys.firstWhereOrNull(
|
||||||
|
(x) => x.userId.toInt() == toUserId,
|
||||||
|
);
|
||||||
|
|
||||||
if (pushUser == null) {
|
if (pushUser == null) {
|
||||||
// user does not have send any push keys
|
// user does not have send any push keys
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ class MainCameraController {
|
||||||
CameraController? cameraController;
|
CameraController? cameraController;
|
||||||
ScreenshotController screenshotController = ScreenshotController();
|
ScreenshotController screenshotController = ScreenshotController();
|
||||||
SelectedCameraDetails selectedCameraDetails = SelectedCameraDetails();
|
SelectedCameraDetails selectedCameraDetails = SelectedCameraDetails();
|
||||||
bool initCameraStarted = true;
|
bool initCameraStarted = false;
|
||||||
Map<int, ScannedVerifiedContact> contactsVerified = {};
|
Map<int, ScannedVerifiedContact> contactsVerified = {};
|
||||||
Map<int, ScannedNewProfile> scannedNewProfiles = {};
|
Map<int, ScannedNewProfile> scannedNewProfiles = {};
|
||||||
final Set<String> _handledProfileLinks = {};
|
final Set<String> _handledProfileLinks = {};
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,9 @@ class HomeViewState extends State<HomeView> {
|
||||||
streamHomeViewPageIndex.add(0);
|
streamHomeViewPageIndex.add(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (initialPage == 1) {
|
||||||
unawaited(_mainCameraController.selectCamera(0, true));
|
unawaited(_mainCameraController.selectCamera(0, true));
|
||||||
|
}
|
||||||
unawaited(_initAsync());
|
unawaited(_initAsync());
|
||||||
|
|
||||||
// Subscribe to all events (initial link and further)
|
// Subscribe to all events (initial link and further)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ description: "twonly, a privacy-friendly way to connect with friends through sec
|
||||||
|
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
|
|
||||||
version: 0.2.13+122
|
version: 0.2.14+123
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.11.0
|
sdk: ^3.11.0
|
||||||
|
|
@ -185,6 +185,7 @@ dev_dependencies:
|
||||||
in_app_purchase_platform_interface: ^1.4.0
|
in_app_purchase_platform_interface: ^1.4.0
|
||||||
integration_test:
|
integration_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
workmanager_platform_interface: any
|
||||||
|
|
||||||
flutter_launcher_icons:
|
flutter_launcher_icons:
|
||||||
android: true
|
android: true
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue