mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-21 13:53:37 +00:00
[ios] Support multiple phone numbers
Multiple phone numbers should be [separated with `;`][parsing] in OSM `phone` values. This commit adds support for parsing and displaying such phone numbers individually. Example POI with three phone numbers: https://www.openstreetmap.org/way/233417266. Before this change, the phone was displayed as one value and trying to call it would fail because all the digits were concatenated together, resulting in an invalid number. For the POI above, the program tried to call `tel://+150332563111503325879018008756807`. This change fixes the parsing of `FMD_PHONE_NUMBER` into an array of phone numbers. That required updates in a few areas: - the POI details view (`PlacePageInfoViewController`) now displays every phone number as a separate row, each with a clickable link for that number; long-click to copy also works. - the share info preparation (`MWMShareActivityItem`) displays phone numbers separated with `; `, which provides a better phone detection for iOS. - the Call button (`PlacePageInteractor`) now has to ask the user which number to call if there are more than one. I tested this on an iPhone 15 Pro, iOS 17.2 simulator (temporarily commenting the "can make phone call" checks). Note: the Editing screen wasn't updated in order to keep this PR smaller. Fixes https://git.omaps.dev/organicmaps/organicmaps/issues/2458. The corresponding fix for Android was in https://github.com/organicmaps/organicmaps/pull/845. [parsing]: https://wiki.openstreetmap.org/wiki/Key:phone#Parsing_phone_numbers Signed-off-by: Eugene Nikolsky <omaps@egeek.me>
This commit is contained in:
committed by
Konstantin Pastbin
parent
a3ba5c53b6
commit
50e6376afd
@@ -66,7 +66,8 @@ final class ActionBarViewController: UIViewController {
|
||||
if isRoutePlanning {
|
||||
buttons.append(.routeFrom)
|
||||
}
|
||||
if placePageData.infoData?.phone != nil, AppInfo.shared().canMakeCalls {
|
||||
let hasAnyPhones = !(placePageData.infoData?.phones ?? []).isEmpty
|
||||
if hasAnyPhones, AppInfo.shared().canMakeCalls {
|
||||
buttons.append(.call)
|
||||
}
|
||||
if !isRoutePlanning {
|
||||
|
||||
Reference in New Issue
Block a user