From 9b780e0e6073a16d642094ccf0fd86aa6d31bd4e Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 6 Dec 2021 10:11:06 +0000 Subject: [PATCH] Simple static location sharing (#19754) Adds static location share a la [MSC3488](https://github.com/matrix-org/matrix-doc/pull/3488) behind a labs flag, supporting legacy `m.location` `msgtype` too. Powered by https://github.com/matrix-org/matrix-react-sdk/pull/7135. Adds maplibre as a dependency. To make this work, you have to add a valid `map_style_url` to your config.json. --- docs/config.md | 2 ++ docs/labs.md | 13 +++++++++++++ src/vector/index.html | 2 +- test/jest-mocks.js | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/config.md b/docs/config.md index 3c27ea2a09..3b7aee0a22 100644 --- a/docs/config.md +++ b/docs/config.md @@ -152,6 +152,8 @@ For a good example, see https://develop.element.io/config.json. 1. `sentry`: [Sentry](https://sentry.io/) configuration for rageshake data being sent to sentry. 1. `dsn`: the Sentry [DSN](https://docs.sentry.io/product/sentry-basics/dsn-explainer/) 2. `environment`: (optional) The [Environment](https://docs.sentry.io/product/sentry-basics/environments/) to pass to sentry +1. `map_style_url`: Maptile server URL for location sharing. e.g. + 'https://api.maptiler.com/maps/basic/style.json?key=YOUR_KEY_GOES_HERE' 1. `analyticsOwner`: The entity that analytics data is being sent to. Used in copy when explaining to the user where data is being sent. If not set, defaults to `brand`. diff --git a/docs/labs.md b/docs/labs.md index 35d12179a0..4920776b2e 100644 --- a/docs/labs.md +++ b/docs/labs.md @@ -151,6 +151,19 @@ entirely incomplete and may not work at all - it is not recommended for general Metaspaces are automatically populated spaces you can enable in your Space panel. By default, you'll have Home or All rooms, but you can opt in to a People, Favourites, and Other Rooms metaspace too. +## Location sharing (`feature_location_share`) [In Development] + +Allows users to send and display location data using [maplibre](https://maplibre.org). + +The current implementation is a quick in-progress development spike to +demonstrate viability and prove [MSC3488](https://github.com/matrix-org/matrix-doc/pull/3488) +and [MSC3489](https://github.com/matrix-org/matrix-doc/pull/3489) - **the UI has not yet +been designed, and it will not exit labs until it has**. + +For this to work, you must specify a valid maptiler.com API key in +`"map_style_url": "https://api.maptiler.com/maps/basic/style.json?key=YOUR_KEY_GOES_HERE"` +in your config.json, or find an alternative map tile server. + ## Breadcrumbs v2 (`feature_breadcrumbs_v2`) Instead of showing the horizontal list of breadcrumbs under the filter field, the new UX is an interactive context menu diff --git a/src/vector/index.html b/src/vector/index.html index b0a2425338..fba86dbdce 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -32,7 +32,7 @@ font-src 'self' data:; media-src * blob: data:; child-src * blob: data:; - worker-src 'self'; + worker-src 'self' blob:; frame-src * blob: data:; form-action 'self'; manifest-src 'self'; diff --git a/test/jest-mocks.js b/test/jest-mocks.js index e924768b9b..6e1ea8a605 100644 --- a/test/jest-mocks.js +++ b/test/jest-mocks.js @@ -12,3 +12,6 @@ Object.defineProperty(window, 'matchMedia', { dispatchEvent: jest.fn(), })), }); + +// maplibre requires a createObjectURL mock +global.URL.createObjectURL = jest.fn();