@@ -371,7 +371,11 @@ class CameraViewController: UIViewController, UIDocumentPickerDelegate, UINaviga
371371 let fileExtension = formatString == " mov " ? " mov " : " mp4 "
372372 let fileType : AVFileType = formatString == " mov " ? . mov : . mp4
373373
374- let videoName = " recording_ \( Date ( ) . timeIntervalSince1970) . \( fileExtension) "
374+ // Get device name for filename
375+ let deviceName = UserDefaults . standard. string ( forKey: " deviceName " ) ?? UIDevice . current. name
376+ let deviceNameForFilename = formatDeviceNameForFilename ( deviceName)
377+ let timestamp = Date ( ) . timeIntervalSince1970
378+ let videoName = " recording_ \( deviceNameForFilename) _ \( timestamp) . \( fileExtension) "
375379 videoURL = documentsPath. appendingPathComponent ( videoName)
376380
377381 guard let videoURL = videoURL else { return }
@@ -707,16 +711,42 @@ class CameraViewController: UIViewController, UIDocumentPickerDelegate, UINaviga
707711 }
708712 }
709713
714+ // MARK: - Helper Methods
715+
716+ private func formatDeviceNameForFilename( _ name: String ) -> String {
717+ // Remove non-ASCII characters
718+ let ascii = name. filter { $0. isASCII }
719+
720+ // Split on non-alphanumeric characters and filter empty components
721+ let components = ascii. components ( separatedBy: CharacterSet . alphanumerics. inverted)
722+ . filter { !$0. isEmpty }
723+
724+ // Build title-case: capitalize first letter of each word
725+ guard !components. isEmpty else { return " Device " }
726+
727+ let result = components. map { word in
728+ word. prefix ( 1 ) . uppercased ( ) + word. dropFirst ( ) . lowercased ( )
729+ } . joined ( )
730+
731+ return result. isEmpty ? " Device " : result
732+ }
733+
710734 // MARK: - WebSocket Methods
711735
712736 private func getClientDisplayName( ) -> String {
713737 let deviceName = UIDevice . current. name
738+ let customDeviceName = UserDefaults . standard. string ( forKey: " deviceName " ) ?? deviceName
714739 let customName = UserDefaults . standard. string ( forKey: " clientDisplayName " )
715740
741+ print ( " UIDevice.current.name: \( UIDevice . current. name) " )
742+ print ( " Device name: \( deviceName) " )
743+ print ( " Custom device name from settings: \( customDeviceName) " )
744+
716745 if let customName = customName, !customName. isEmpty {
717- return " \( customName) ( \( deviceName) ) "
746+ print ( " Custom name: \( customName) " )
747+ return " \( customName) ( \( customDeviceName) ) "
718748 } else {
719- return deviceName
749+ return customDeviceName
720750 }
721751 }
722752
0 commit comments