From 44b7c96d739d1bc62a908a233220bbf23faba557 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Sun, 11 Jul 2021 12:52:13 +0200 Subject: [PATCH] fix: preserve homeserver port when creating thumbnail URIs --- lib/src/utils/uri_extension.dart | 1 + test/mxc_uri_extension_test.dart | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/src/utils/uri_extension.dart b/lib/src/utils/uri_extension.dart index c4032b22..93a4f0c3 100644 --- a/lib/src/utils/uri_extension.dart +++ b/lib/src/utils/uri_extension.dart @@ -46,6 +46,7 @@ extension MxcUriExtension on Uri { scheme: matrix.homeserver.scheme, host: matrix.homeserver.host, path: '/_matrix/media/r0/thumbnail/$host$path', + port: matrix.homeserver.port, queryParameters: { if (width != null) 'width': width.round().toString(), if (height != null) 'height': height.round().toString(), diff --git a/test/mxc_uri_extension_test.dart b/test/mxc_uri_extension_test.dart index 253cc59c..b4d505e7 100644 --- a/test/mxc_uri_extension_test.dart +++ b/test/mxc_uri_extension_test.dart @@ -50,5 +50,28 @@ void main() { .toString(), '${client.homeserver.toString()}/_matrix/media/r0/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=scale&animated=true'); }); + test('other port', () async { + final client = Client('testclient', httpClient: FakeMatrixApi()); + await client.checkHomeserver('https://fakeserver.notexisting', + checkWellKnown: false); + client.homeserver = Uri.parse('https://fakeserver.notexisting:1337'); + final mxc = 'mxc://exampleserver.abc/abcdefghijklmn'; + final content = Uri.parse(mxc); + expect(content.isScheme('mxc'), true); + + expect(content.getDownloadLink(client).toString(), + '${client.homeserver.toString()}/_matrix/media/r0/download/exampleserver.abc/abcdefghijklmn'); + expect(content.getThumbnail(client, width: 50, height: 50).toString(), + '${client.homeserver.toString()}/_matrix/media/r0/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=crop&animated=false'); + expect( + content + .getThumbnail(client, + width: 50, + height: 50, + method: ThumbnailMethod.scale, + animated: true) + .toString(), + 'https://fakeserver.notexisting:1337/_matrix/media/r0/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=scale&animated=true'); + }); }); }