@@ -36,10 +36,18 @@ extension SentryClient {
36
36
public func savedEvents( ) -> [ SavedEvent ] {
37
37
do {
38
38
guard let path = directory ( ) else { return [ ] }
39
+ let now = NSDate ( ) . timeIntervalSince1970
39
40
40
41
#if swift(>=3.0)
41
42
return try FileManager . default
42
43
. contentsOfDirectory ( atPath: path)
44
+ . filter { fileName in
45
+ let splitName = fileName. characters. split { $0 == " - " } . map ( String . init)
46
+ guard let storedTime = Double ( splitName [ 0 ] ) else {
47
+ return true
48
+ }
49
+ return now > storedTime
50
+ }
43
51
. flatMap { fileName in
44
52
let absolutePath : String = ( path as NSString ) . appendingPathComponent ( fileName)
45
53
guard let data = NSData ( contentsOfFile: absolutePath) else { return nil }
@@ -56,10 +64,17 @@ extension SentryClient {
56
64
#else
57
65
return try NSFileManager . defaultManager ( )
58
66
. contentsOfDirectoryAtPath ( path)
67
+ . filter { fileName in
68
+ let splitName = fileName. characters. split { $0 == " - " } . map ( String . init)
69
+ guard let storedTime = Double ( splitName [ 0 ] ) else {
70
+ return true
71
+ }
72
+ return now > storedTime
73
+ }
59
74
. flatMap { fileName in
60
75
let absolutePath : String = ( path as NSString ) . stringByAppendingPathComponent ( fileName)
61
76
guard let data = NSData ( contentsOfFile: absolutePath) else { return nil }
62
-
77
+
63
78
return ( data, {
64
79
do {
65
80
try NSFileManager . defaultManager ( ) . removeItemAtPath ( absolutePath)
@@ -110,13 +125,14 @@ extension SentryClient {
110
125
*/
111
126
private func writePath( _ event: Event ) throws -> String ? {
112
127
guard let sentryDir = directory ( ) else { return nil }
128
+ let date = NSDate ( ) . timeIntervalSince1970 + 60 + Double( arc4random_uniform ( 10 ) + 1 )
113
129
114
130
#if swift(>=3.0)
115
131
try FileManager . default. createDirectory ( atPath: sentryDir, withIntermediateDirectories: true , attributes: nil )
116
- return ( sentryDir as NSString ) . appendingPathComponent ( event. eventID)
132
+ return ( sentryDir as NSString ) . appendingPathComponent ( " \( date ) - \( event. eventID) " )
117
133
#else
118
134
try NSFileManager . defaultManager ( ) . createDirectoryAtPath ( sentryDir, withIntermediateDirectories: true , attributes: nil )
119
- return ( sentryDir as NSString ) . stringByAppendingPathComponent ( event. eventID)
135
+ return ( sentryDir as NSString ) . stringByAppendingPathComponent ( " \( date ) - \( event. eventID) " )
120
136
#endif
121
137
}
122
138
@@ -127,14 +143,15 @@ extension SentryClient {
127
143
- Returns: Serialized string
128
144
*/
129
145
private func serializedString( _ event: Event ) throws -> String ? {
146
+ let serializedEvent = event. serialized
130
147
#if swift(>=3.0)
131
- if JSONSerialization . isValidJSONObject ( event . serialized ) {
132
- let data : NSData = try JSONSerialization . data ( withJSONObject: event . serialized , options: [ ] ) as NSData
148
+ if JSONSerialization . isValidJSONObject ( serializedEvent ) {
149
+ let data : NSData = try JSONSerialization . data ( withJSONObject: serializedEvent , options: [ ] ) as NSData
133
150
return String ( data: data as Data , encoding: String . Encoding. utf8)
134
151
}
135
152
#else
136
- if NSJSONSerialization . isValidJSONObject ( event . serialized ) {
137
- let data : NSData = try NSJSONSerialization . dataWithJSONObject ( event . serialized , options: [ ] )
153
+ if NSJSONSerialization . isValidJSONObject ( serializedEvent ) {
154
+ let data : NSData = try NSJSONSerialization . dataWithJSONObject ( serializedEvent , options: [ ] )
138
155
return String ( data: data, encoding: NSUTF8StringEncoding)
139
156
}
140
157
#endif
0 commit comments