File tree Expand file tree Collapse file tree 3 files changed +24
-0
lines changed
Examples/Movie Timecode/Movie Timecode/Model Expand file tree Collapse file tree 3 files changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -11,19 +11,34 @@ import TimecodeKit
1111extension Model {
1212 struct Movie : Equatable , Hashable , Sendable {
1313 let avMovie : AVMovie
14+ let url : URL ?
1415
1516 // cached metadata
1617 let frameRate : TimecodeFrameRate ?
1718 let timecodeStart : Timecode ?
1819 let containsTimecodeTrack : Bool
1920
21+ init (
22+ url: URL ,
23+ frameRate: TimecodeFrameRate ? ,
24+ timecodeStart: Timecode ? ,
25+ containsTimecodeTrack: Bool
26+ ) {
27+ avMovie = AVMovie ( url: url)
28+ self . url = url
29+ self . frameRate = frameRate
30+ self . timecodeStart = timecodeStart
31+ self . containsTimecodeTrack = containsTimecodeTrack
32+ }
33+
2034 init (
2135 avMovie: AVMovie ,
2236 frameRate: TimecodeFrameRate ? ,
2337 timecodeStart: Timecode ? ,
2438 containsTimecodeTrack: Bool
2539 ) {
2640 self . avMovie = avMovie
41+ url = avMovie. url
2742 self . frameRate = frameRate
2843 self . timecodeStart = timecodeStart
2944 self . containsTimecodeTrack = containsTimecodeTrack
Original file line number Diff line number Diff line change @@ -20,7 +20,13 @@ extension Model {
2020 switch result {
2121 case let . success( url) :
2222 Task {
23+ movie? . url? . stopAccessingSecurityScopedResource ( )
2324 movie = nil // forces views to update
25+
26+ guard url. startAccessingSecurityScopedResource ( ) else {
27+ error = . permissionError
28+ return
29+ }
2430 await updateMetadata ( newMovie: AVMovie ( url: url) )
2531 error = nil
2632 }
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ enum ModelError: LocalizedError {
1313 case exportError( _ details: Error ? )
1414 case pathDoesNotExist
1515 case pathIsNotFolder
16+ case permissionError
1617}
1718
1819extension ModelError {
@@ -34,6 +35,8 @@ extension ModelError {
3435 " Path does not exist "
3536 case . pathIsNotFolder:
3637 " Path is not a folder "
38+ case . permissionError:
39+ " Disk permission error "
3740 }
3841 }
3942}
You can’t perform that action at this time.
0 commit comments