Live location sharing - basic maximised beacon map (#8310)

* open a dialog with map centered around first beacon

Signed-off-by: Kerry Archibald <kerrya@element.io>

* add room member markers

Signed-off-by: Kerry Archibald <kerrya@element.io>

* fix unmount issue in smart marker

Signed-off-by: Kerry Archibald <kerrya@element.io>

* dont throw on no more live locations

Signed-off-by: Kerry Archibald <kerrya@element.io>

* cursor on beacon maps

Signed-off-by: Kerry Archibald <kerrya@element.io>

* fussy import ordering

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test dialog opening from beacon body

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test beaconmarker

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test BeaconViewDialog

Signed-off-by: Kerry Archibald <kerrya@element.io>

* comment

Signed-off-by: Kerry Archibald <kerrya@element.io>

* use unstable prefix for wk tile_Server

Signed-off-by: Kerry Archibald <kerrya@element.io>

* unstable prefix for new m.tile_server use in test

Signed-off-by: Kerry Archibald <kerrya@element.io>
This commit is contained in:
Kerry 2022-04-14 15:14:05 +02:00 committed by GitHub
parent 1c215e2b71
commit f95106d2c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 894 additions and 56 deletions

View file

@ -0,0 +1,229 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<BeaconMarker /> renders marker when beacon has location 1`] = `
<BeaconMarker
beacon={
Beacon {
"_beaconInfo": Object {
"assetType": "m.self",
"description": undefined,
"live": true,
"timeout": 3600000,
"timestamp": 1647270879403,
},
"_events": Object {
"Beacon.Destroy": Array [
[Function],
[Function],
],
"Beacon.LivenessChange": Array [
[Function],
[Function],
],
"Beacon.LocationUpdate": [Function],
"Beacon.new": [Function],
"Beacon.update": [Function],
},
"_eventsCount": 5,
"_isLive": true,
"_latestLocationState": Object {
"description": undefined,
"timestamp": 1647270879404,
"uri": "geo:51,41",
},
"_maxListeners": undefined,
"clearLatestLocation": [Function],
"livenessWatchInterval": undefined,
"roomId": "!room:server",
"rootEvent": Object {
"content": Object {
"description": undefined,
"live": true,
"org.matrix.msc3488.asset": Object {
"type": "m.self",
},
"org.matrix.msc3488.ts": 1647270879403,
"timeout": 3600000,
},
"event_id": "$alice-room1-1",
"origin_server_ts": 1647270879403,
"room_id": "!room:server",
"sender": "@alice:server",
"state_key": "@alice:server",
"type": "org.matrix.msc3672.beacon_info",
},
Symbol(kCapture): false,
}
}
map={
MockMap {
"_events": Object {},
"_eventsCount": 0,
"_maxListeners": undefined,
"addControl": [MockFunction],
"removeControl": [MockFunction],
"setCenter": [MockFunction],
"setStyle": [MockFunction],
"zoomIn": [MockFunction],
"zoomOut": [MockFunction],
Symbol(kCapture): false,
}
}
>
<SmartMarker
geoUri="geo:51,41"
id="!room:server_@alice:server"
map={
MockMap {
"_events": Object {},
"_eventsCount": 0,
"_maxListeners": undefined,
"addControl": [MockFunction],
"removeControl": [MockFunction],
"setCenter": [MockFunction],
"setStyle": [MockFunction],
"zoomIn": [MockFunction],
"zoomOut": [MockFunction],
Symbol(kCapture): false,
}
}
roomMember={
RoomMember {
"_events": Object {},
"_eventsCount": 0,
"_isOutOfBand": false,
"_maxListeners": undefined,
"_modified": 1647270879403,
"_requestedProfileInfo": undefined,
"disambiguate": false,
"events": Object {
"member": null,
},
"membership": null,
"name": "@alice:server",
"powerLevel": 0,
"powerLevelNorm": 0,
"rawDisplayName": "@alice:server",
"roomId": "!room:server",
"typing": false,
"user": null,
"userId": "@alice:server",
Symbol(kCapture): false,
}
}
>
<span>
<ForwardRef
id="!room:server_@alice:server"
roomMember={
RoomMember {
"_events": Object {},
"_eventsCount": 0,
"_isOutOfBand": false,
"_maxListeners": undefined,
"_modified": 1647270879403,
"_requestedProfileInfo": undefined,
"disambiguate": false,
"events": Object {
"member": null,
},
"membership": null,
"name": "@alice:server",
"powerLevel": 0,
"powerLevelNorm": 0,
"rawDisplayName": "@alice:server",
"roomId": "!room:server",
"typing": false,
"user": null,
"userId": "@alice:server",
Symbol(kCapture): false,
}
}
>
<div
className="mx_Marker mx_Marker_defaultColor"
id="!room:server_@alice:server"
>
<div
className="mx_Marker_border"
>
<MemberAvatar
height={36}
member={
RoomMember {
"_events": Object {},
"_eventsCount": 0,
"_isOutOfBand": false,
"_maxListeners": undefined,
"_modified": 1647270879403,
"_requestedProfileInfo": undefined,
"disambiguate": false,
"events": Object {
"member": null,
},
"membership": null,
"name": "@alice:server",
"powerLevel": 0,
"powerLevelNorm": 0,
"rawDisplayName": "@alice:server",
"roomId": "!room:server",
"typing": false,
"user": null,
"userId": "@alice:server",
Symbol(kCapture): false,
}
}
resizeMethod="crop"
viewUserOnClick={false}
width={36}
>
<BaseAvatar
height={36}
idName="@alice:server"
name="@alice:server"
resizeMethod="crop"
title="@alice:server"
url={null}
width={36}
>
<span
className="mx_BaseAvatar"
role="presentation"
>
<span
aria-hidden="true"
className="mx_BaseAvatar_initial"
style={
Object {
"fontSize": "23.400000000000002px",
"lineHeight": "36px",
"width": "36px",
}
}
>
A
</span>
<img
alt=""
aria-hidden="true"
className="mx_BaseAvatar_image"
onError={[Function]}
src="data:image/png;base64,00"
style={
Object {
"height": "36px",
"width": "36px",
}
}
title="@alice:server"
/>
</span>
</BaseAvatar>
</MemberAvatar>
</div>
</div>
</ForwardRef>
</span>
</SmartMarker>
</BeaconMarker>
`;