[ios] Option to actually stop track recording without saving

Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
This commit is contained in:
Yannik Bloscheck
2025-07-17 12:33:34 +02:00
committed by Yannik Bloscheck
parent 9adf012ae9
commit 6218552060
5 changed files with 22 additions and 0 deletions

View File

@@ -135,6 +135,16 @@ final class TrackRecordingManager: NSObject {
completion?(.failure(error))
}
}
func stop(completion: ((StopTrackRecordingResult) -> Void)? = nil) {
unsubscribeFromTrackRecordingProgressUpdates()
trackRecorder.stopTrackRecording()
trackRecordingInfo = .empty()
activityManager?.stop()
notifyObservers()
completion?(.trackIsEmpty)
}
func stopAndSave(withName name: String = "", completion: ((StopTrackRecordingResult) -> Void)? = nil) {
unsubscribeFromTrackRecordingProgressUpdates()

View File

@@ -103,6 +103,7 @@ final class ActionBarViewController: UIViewController {
}
buttons.append(.track)
case .trackRecording:
buttons.append(.notSaveTrackRecording)
buttons.append(.saveTrackRecording)
@unknown default:
fatalError()

View File

@@ -292,6 +292,10 @@ extension PlacePageInteractor: ActionBarViewControllerDelegate {
self?.presenter?.closeAnimated()
}
}
case .notSaveTrackRecording:
TrackRecordingManager.shared.stop() { [weak self] result in
self?.presenter?.closeAnimated()
}
@unknown default:
fatalError()
}

View File

@@ -4,6 +4,7 @@ typedef NS_ENUM(NSInteger, MWMActionBarButtonType) {
MWMActionBarButtonTypeBookmark,
MWMActionBarButtonTypeTrack,
MWMActionBarButtonTypeSaveTrackRecording,
MWMActionBarButtonTypeNotSaveTrackRecording,
MWMActionBarButtonTypeCall,
MWMActionBarButtonTypeDownload,
MWMActionBarButtonTypeMore,

View File

@@ -21,6 +21,8 @@ NSString *titleForButton(MWMActionBarButtonType type, BOOL isSelected) {
return L(isSelected ? @"delete" : @"save");
case MWMActionBarButtonTypeSaveTrackRecording:
return L(@"save");
case MWMActionBarButtonTypeNotSaveTrackRecording:
return L(@"delete");
case MWMActionBarButtonTypeRouteFrom:
return L(@"p2p_from_here");
case MWMActionBarButtonTypeRouteTo:
@@ -114,6 +116,10 @@ NSString *titleForButton(MWMActionBarButtonType type, BOOL isSelected) {
case MWMActionBarButtonTypeSaveTrackRecording:
[self.button setImage:[UIImage imageNamed:@"ic_placepage_save_track_recording"] forState:UIControlStateNormal];
break;
case MWMActionBarButtonTypeNotSaveTrackRecording:
[self.button setImage:[UIImage systemImageNamed:@"trash.fill" withConfiguration:[UIImageSymbolConfiguration configurationWithPointSize:22 weight:UIImageSymbolWeightSemibold]] forState:UIControlStateNormal];
self.button.coloring = MWMButtonColoringRed;
break;
case MWMActionBarButtonTypeRouteFrom:
[self.button setImage:[UIImage imageNamed:@"ic_route_from"] forState:UIControlStateNormal];
break;