diff --git a/commet/lib/client/matrix/components/url_preview/matrix_url_preview_component.dart b/commet/lib/client/matrix/components/url_preview/matrix_url_preview_component.dart index 82f5ad148..5991ffab1 100644 --- a/commet/lib/client/matrix/components/url_preview/matrix_url_preview_component.dart +++ b/commet/lib/client/matrix/components/url_preview/matrix_url_preview_component.dart @@ -1,5 +1,4 @@ import 'package:commet/client/components/url_preview/url_preview_component.dart'; -import 'package:commet/client/matrix/extensions/matrix_client_extensions.dart'; import 'package:commet/client/matrix/matrix_client.dart'; import 'package:commet/client/matrix/matrix_mxc_image_provider.dart'; import 'package:commet/client/matrix/matrix_room.dart'; @@ -11,7 +10,6 @@ import 'package:commet/main.dart'; import 'package:commet/utils/mime.dart'; import 'package:flutter/widgets.dart'; import 'package:matrix/matrix.dart' as matrix; -import 'package:encrypted_url_preview/encrypted_url_preview.dart'; import 'package:matrix/matrix_api_lite.dart'; class MatrixUrlPreviewComponent implements UrlPreviewComponent { @@ -22,24 +20,8 @@ class MatrixUrlPreviewComponent implements UrlPreviewComponent { Map cache = {}; - EncryptedUrlPreview? privatePreviewGetter; - bool? serverSupportsUrlPreview; - void createPrivatePreviewGetter() { - privatePreviewGetter = EncryptedUrlPreview( - proxyServerUrl: Uri.https("telescope.commet.chat"), - publicKeyPem: """-----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+sAi8PsT4QwjV/+xXK0 -vwavZJEjkwJyFODGWkoo7qB87Y2yU6/C4csul6kQpxBFu9ID7mCavAlr93/c70Qm -sgX791W7oOSpvyeffJe5iluzaglZ/KWYo6Bc0QajKT8rLdI5vUljVMyx/nR9rIhY -PvSJhSFLC2ZyUhhTb/ZeLm0arEtGeyfo1V3nLGsJZJx12UK8E0FpKP14S7Wke9zM -e05PDCU/llEQpUgQOJI9Vnji71Fgocii76aSULhXalGjQIzBGKib5MIYlb0Zgf8k -wKkRg6IrNt5kjad4PoRKocxj3ylvuxEtMN582ni3lO4gi1uzzVvFtJBzrhNMjTPC -pQIDAQAB ------END PUBLIC KEY-----"""); - } - @override Future getPreview( Timeline timeline, TimelineEvent event) async { @@ -66,11 +48,7 @@ pQIDAQAB UrlPreviewData? data; try { - if (room.isE2EE) { - data = await getEncryptedPreviewData(mxClient, uri); - } else { - data = await fetchPreviewData(mxClient, uri); - } + data = await fetchPreviewData(mxClient, uri); } catch (_) { return null; } @@ -130,59 +108,6 @@ pQIDAQAB } } - Future getEncryptedPreviewData( - matrix.Client client, Uri url) async { - if (privatePreviewGetter == null) { - createPrivatePreviewGetter(); - } - - var key = privatePreviewGetter!.getNextKey(); - var proxyUrl = privatePreviewGetter!.getProxyUrl(url, key); - - var response = await client.request( - matrix.RequestType.GET, await getRequestPath(), - query: {"url": proxyUrl.toString()}); - - var title = response['og:title'] as String?; - var siteName = response['og:site_name'] as String?; - var imageUrl = response['og:image'] as String?; - var description = response['og:description'] as String?; - - ImageProvider? image; - - if (imageUrl != null) { - var mxcUri = Uri.parse(imageUrl); - if (mxcUri.scheme == "mxc") { - try { - var response = await client.getContentFromUri(mxcUri); - var bytes = response.data; - var decrypted = privatePreviewGetter!.decryptContent(bytes, key); - - image = Image.memory(decrypted).image; - } catch (e, t) { - Log.onError(e, t, - content: "Failed to get encrypted url preview image data"); - } - } - } - - if (title != null) - title = privatePreviewGetter!.decryptContentString(title, key); - if (siteName != null) - siteName = privatePreviewGetter!.decryptContentString(siteName, key); - - if (description != null) - description = privatePreviewGetter! - .decryptContentString(description, key) - .replaceAll("\n", " "); - - return UrlPreviewData(url, - siteName: siteName, - title: title, - description: description, - image: image); - } - Future fetchPreviewData( matrix.Client client, Uri url) async { late Map response; diff --git a/commet/lib/config/preferences.dart b/commet/lib/config/preferences.dart index 7b6e7c2c5..4eac093dd 100644 --- a/commet/lib/config/preferences.dart +++ b/commet/lib/config/preferences.dart @@ -32,7 +32,7 @@ class Preferences { static const String _pushGateway = "push_gateway"; static const String _lastDownloadLocation = "last_download_location"; static const String _stickerCompatibilityMode = "sticker_compatibility_mode"; - static const String _urlPreviewInE2EEChat = "use_url_preview_in_e2ee_chat"; + static const String _urlPreviewInE2EEChat = "enable_url_preview_in_e2ee_chat"; static const String _messageEffectsEnabled = "message_effects_enabled"; static const String _lastForegroundServiceSucceeded = "did_last_foreground_service_run_succeed"; diff --git a/commet/lib/ui/pages/settings/categories/app/general_settings_page.dart b/commet/lib/ui/pages/settings/categories/app/general_settings_page.dart index e7eb977db..b736b2ab8 100644 --- a/commet/lib/ui/pages/settings/categories/app/general_settings_page.dart +++ b/commet/lib/ui/pages/settings/categories/app/general_settings_page.dart @@ -31,17 +31,17 @@ class GeneralSettingsPageState extends State { args: [proxyUrl], name: "labelGifSearchDescription"); - String get labelEncryptedPreview => Intl.message( - "URL Preview in Encrypted Chats (Experimental)", + String get labelUrlPreviewInEncryptedChatTitle => Intl.message( + "URL Preview in Encrypted Chats", desc: - "Label for the toggle for enabling and disabling encrypted url preview", - name: "labelEncryptedPreview"); + "Label for the toggle for enabling and disabling use of url previews in encrypted chats", + name: "labelUrlPreviewInEncryptedChatTitle"); - String labelEncryptedPreviewDescription(proxyUrl) => Intl.message( - "Enable use of a proxy server ($proxyUrl) to get url preview in an encrypted chat. The content of these requests will be hidden from your homeserver using Commet's 'encrypted url preview'\nLearn more: https://github.com/commetchat/encrypted_url_preview", - desc: "Explains briefly how encrypted url preview works", - args: [proxyUrl], - name: "labelEncryptedPreviewDescription"); + String get labelUrlPreviewInEncryptedChatDescription => Intl.message( + "This will expose any URLs sent in your encrypted chats to your homeserver in order to fetch the preview", + desc: + "description for the toggle for enabling and disabling use of url previews in encrypted chats", + name: "labelUrlPreviewInEncryptedChatDescription"); String get labelMessageEffectsTitle => Intl.message("Message Effects", desc: @@ -87,9 +87,8 @@ class GeneralSettingsPageState extends State { ), settingToggle( enableEncryptedPreview, - title: labelEncryptedPreview, - description: - labelEncryptedPreviewDescription("telescope.commet.chat"), + title: labelUrlPreviewInEncryptedChatTitle, + description: labelUrlPreviewInEncryptedChatDescription, onChanged: (value) async { setState(() { enableEncryptedPreview = value; diff --git a/commet/pubspec.lock b/commet/pubspec.lock index 708335df8..022770e9e 100644 --- a/commet/pubspec.lock +++ b/commet/pubspec.lock @@ -70,14 +70,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" - basic_utils: - dependency: transitive - description: - name: basic_utils - sha256: "2064b21d3c41ed7654bc82cc476fd65542e04d60059b74d5eed490a4da08fc6c" - url: "https://pub.dev" - source: hosted - version: "5.7.0" blurhash_dart: dependency: transitive description: @@ -375,15 +367,6 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.3" - encrypted_url_preview: - dependency: "direct main" - description: - path: "." - ref: HEAD - resolved-ref: "38ae4d905739237277decea9c564d7b7ebf2d52e" - url: "https://github.com/commetchat/encrypted_url_preview.git" - source: git - version: "1.0.0" enhanced_enum: dependency: transitive description: diff --git a/commet/pubspec.yaml b/commet/pubspec.yaml index 6fea80dcd..56e2400d2 100644 --- a/commet/pubspec.yaml +++ b/commet/pubspec.yaml @@ -75,8 +75,7 @@ dependencies: ref: main matrix_dart_sdk_drift_db: git: https://github.com/commetchat/matrix-dart-sdk-drift-db.git - encrypted_url_preview: - git: https://github.com/commetchat/encrypted_url_preview.git + signal_sticker_api: git: https://github.com/commetchat/signal-sticker-api.git starfield: