Right now FluffyChat can share a location, but only the one the GPS reports, and only on mobile: the menu entry sits behind PlatformInfos.isMobile in chat_input_row.dart. There is no way to pick a place on a map, and the event that gets sent carries only geo_uri, without the MSC3488 fields that Element uses to tell somebody's own position apart from a place they picked.
Receiving has two rough edges. message_content.dart reads content['geo_uri']!, so an event that carries only the MSC3488 location — which is what a live share sends — crashes the bubble. And live shares themselves (MSC3672 beacon_info and beacon) are not handled at all, so a live location sent from Element shows up as nothing.
There is a smaller Android one too: geo:lat,lon is handed to the system as is, and Google Maps ignores coordinates in the path, so tapping a shared location opens the map app at your own position instead of the shared place.
I would like to work on this, in separate PRs:
- Pick a place on a map when sharing, and add the MSC3488 fields so Element and FluffyChat agree on what was shared. Also allow sharing on desktop and web.
- Fix the Android
geo: handling. Small and independent of the rest.
- Open a shared location on a full screen map inside the app, with a button to hand it over to the map app.
- Show live locations received from other clients.
Sending a live location, which is what #3279 asks for, would come after that, and I would ask again before starting it, since it needs changes to the Android manifest and Info.plist.
Does this sound like the right direction to you? I have already built most of it locally while working out what was involved, so I can show you actual code rather than plans, if that is more useful. And if you would rather go another way, just say so — I am happy to rework it.
Right now FluffyChat can share a location, but only the one the GPS reports, and only on mobile: the menu entry sits behind
PlatformInfos.isMobileinchat_input_row.dart. There is no way to pick a place on a map, and the event that gets sent carries onlygeo_uri, without the MSC3488 fields that Element uses to tell somebody's own position apart from a place they picked.Receiving has two rough edges.
message_content.dartreadscontent['geo_uri']!, so an event that carries only the MSC3488 location — which is what a live share sends — crashes the bubble. And live shares themselves (MSC3672beacon_infoandbeacon) are not handled at all, so a live location sent from Element shows up as nothing.There is a smaller Android one too:
geo:lat,lonis handed to the system as is, and Google Maps ignores coordinates in the path, so tapping a shared location opens the map app at your own position instead of the shared place.I would like to work on this, in separate PRs:
geo:handling. Small and independent of the rest.Sending a live location, which is what #3279 asks for, would come after that, and I would ask again before starting it, since it needs changes to the Android manifest and
Info.plist.Does this sound like the right direction to you? I have already built most of it locally while working out what was involved, so I can show you actual code rather than plans, if that is more useful. And if you would rather go another way, just say so — I am happy to rework it.