18
18
19
19
#import " FIRInstanceIDLogger.h"
20
20
21
- typedef enum : NSUInteger {
22
- FIRInstanceIDPlistDirectoryUnknown,
23
- FIRInstanceIDPlistDirectoryDocuments,
24
- FIRInstanceIDPlistDirectoryApplicationSupport,
25
- } FIRInstanceIDPlistDirectory;
26
-
27
21
@interface FIRInstanceIDBackupExcludedPlist ()
28
22
29
23
@property (nonatomic , readwrite , copy ) NSString *fileName;
30
24
@property (nonatomic , readwrite , copy ) NSString *subDirectoryName;
31
- @property (nonatomic , readwrite , assign ) BOOL fileInStandardDirectory;
32
-
33
25
@property (nonatomic , readwrite , strong ) NSDictionary *cachedPlistContents;
34
26
35
27
@end
@@ -41,19 +33,12 @@ - (instancetype)initWithFileName:(NSString *)fileName subDirectory:(NSString *)s
41
33
if (self) {
42
34
_fileName = [fileName copy ];
43
35
_subDirectoryName = [subDirectory copy ];
44
- #if TARGET_OS_IOS
45
- _fileInStandardDirectory = [self moveToApplicationSupportSubDirectory: subDirectory];
46
- #else
47
- // For tvOS and macOS, we never store the content in document folder, so
48
- // the migration is unnecessary.
49
- _fileInStandardDirectory = YES ;
50
- #endif
51
36
}
52
37
return self;
53
38
}
54
39
55
40
- (BOOL )writeDictionary : (NSDictionary *)dict error : (NSError **)error {
56
- NSString *path = [self plistPathInDirectory: [ self plistDirectory ] ];
41
+ NSString *path = [self plistPathInDirectory ];
57
42
if (![dict writeToFile: path atomically: YES ]) {
58
43
FIRInstanceIDLoggerError (kFIRInstanceIDMessageCodeBackupExcludedPlist000 ,
59
44
@" Failed to write to %@ .plist" , self.fileName );
@@ -85,7 +70,7 @@ - (BOOL)writeDictionary:(NSDictionary *)dict error:(NSError **)error {
85
70
86
71
- (BOOL )deleteFile : (NSError **)error {
87
72
BOOL success = YES ;
88
- NSString *path = [self plistPathInDirectory: [ self plistDirectory ] ];
73
+ NSString *path = [self plistPathInDirectory ];
89
74
if ([[NSFileManager defaultManager ] fileExistsAtPath: path]) {
90
75
success = [[NSFileManager defaultManager ] removeItemAtPath: path error: error];
91
76
}
@@ -96,101 +81,31 @@ - (BOOL)deleteFile:(NSError **)error {
96
81
97
82
- (NSDictionary *)contentAsDictionary {
98
83
if (!self.cachedPlistContents ) {
99
- NSString *path = [self plistPathInDirectory: [ self plistDirectory ] ];
84
+ NSString *path = [self plistPathInDirectory ];
100
85
if ([[NSFileManager defaultManager ] fileExistsAtPath: path]) {
101
86
self.cachedPlistContents = [[NSDictionary alloc ] initWithContentsOfFile: path];
102
87
}
103
88
}
104
89
return self.cachedPlistContents ;
105
90
}
106
91
107
- - (BOOL )moveToApplicationSupportSubDirectory : (NSString *)subDirectoryName {
108
- NSArray *directoryPaths =
109
- NSSearchPathForDirectoriesInDomains ([self supportedDirectory ], NSUserDomainMask, YES );
110
- // This only going to happen inside iOS so it is an applicationSupportDirectory.
111
- NSString *applicationSupportDirPath = directoryPaths.lastObject ;
112
- NSArray *components = @[ applicationSupportDirPath, subDirectoryName ];
113
- NSString *subDirectoryPath = [NSString pathWithComponents: components];
114
- BOOL hasSubDirectory;
115
- if (![[NSFileManager defaultManager ] fileExistsAtPath: subDirectoryPath
116
- isDirectory: &hasSubDirectory]) {
117
- // Cannot move to non-existent directory
118
- return NO ;
119
- }
120
-
121
- if ([self doesFileExistInDirectory: FIRInstanceIDPlistDirectoryDocuments]) {
122
- NSString *oldPlistPath = [self plistPathInDirectory: FIRInstanceIDPlistDirectoryDocuments];
123
- NSString *newPlistPath =
124
- [self plistPathInDirectory: FIRInstanceIDPlistDirectoryApplicationSupport];
125
- if ([self doesFileExistInDirectory: FIRInstanceIDPlistDirectoryApplicationSupport]) {
126
- // File exists in both Documents and ApplicationSupport
127
- return NO ;
128
- }
129
- NSError *moveError;
130
- if (![[NSFileManager defaultManager ] moveItemAtPath: oldPlistPath
131
- toPath: newPlistPath
132
- error: &moveError]) {
133
- FIRInstanceIDLoggerError (kFIRInstanceIDMessageCodeBackupExcludedPlist002 ,
134
- @" Failed to move file %@ from %@ to %@ . Error: %@ " , self.fileName ,
135
- oldPlistPath, newPlistPath, moveError);
136
- return NO ;
137
- }
138
- }
139
- // We moved the file if it existed, otherwise we didn't need to do anything
140
- return YES ;
141
- }
142
-
143
92
- (BOOL )doesFileExist {
144
- return [self doesFileExistInDirectory: [self plistDirectory ]];
93
+ NSString *path = [self plistPathInDirectory ];
94
+ return [[NSFileManager defaultManager ] fileExistsAtPath: path];
145
95
}
146
96
147
97
#pragma mark - Private
148
98
149
- - (FIRInstanceIDPlistDirectory)plistDirectory {
150
- if (_fileInStandardDirectory) {
151
- return FIRInstanceIDPlistDirectoryApplicationSupport;
152
- } else {
153
- return FIRInstanceIDPlistDirectoryDocuments;
154
- };
155
- }
156
-
157
- - (NSString *)plistPathInDirectory : (FIRInstanceIDPlistDirectory)directory {
158
- return [self pathWithName: self .fileName inDirectory: directory];
159
- }
160
-
161
- - (NSString *)pathWithName : (NSString *)plistName
162
- inDirectory : (FIRInstanceIDPlistDirectory)directory {
99
+ - (NSString *)plistPathInDirectory {
163
100
NSArray *directoryPaths;
164
- NSArray *components = @[];
165
- NSString *plistNameWithExtension = [NSString stringWithFormat: @" %@ .plist" , plistName];
166
- switch (directory) {
167
- case FIRInstanceIDPlistDirectoryDocuments:
168
- directoryPaths =
169
- NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES );
170
- components = @[ directoryPaths.lastObject, plistNameWithExtension ];
171
- break ;
172
-
173
- case FIRInstanceIDPlistDirectoryApplicationSupport:
174
- directoryPaths =
175
- NSSearchPathForDirectoriesInDomains ([self supportedDirectory ], NSUserDomainMask, YES );
176
- components = @[ directoryPaths.lastObject, _subDirectoryName, plistNameWithExtension ];
177
- break ;
178
-
179
- default :
180
- FIRInstanceIDLoggerError (kFIRInstanceIDMessageCodeBackupExcludedPlistInvalidPlistEnum ,
181
- @" Invalid plist directory type: %lu " , (unsigned long )directory);
182
- NSAssert (NO , @" Invalid plist directory type: %lu " , (unsigned long )directory);
183
- break ;
184
- }
101
+ NSString *plistNameWithExtension = [NSString stringWithFormat: @" %@ .plist" , self .fileName];
102
+ directoryPaths =
103
+ NSSearchPathForDirectoriesInDomains ([self supportedDirectory ], NSUserDomainMask, YES );
104
+ NSArray *components = @[ directoryPaths.lastObject, _subDirectoryName, plistNameWithExtension ];
185
105
186
106
return [NSString pathWithComponents: components];
187
107
}
188
108
189
- - (BOOL )doesFileExistInDirectory : (FIRInstanceIDPlistDirectory)directory {
190
- NSString *path = [self plistPathInDirectory: directory];
191
- return [[NSFileManager defaultManager ] fileExistsAtPath: path];
192
- }
193
-
194
109
- (NSSearchPathDirectory )supportedDirectory {
195
110
#if TARGET_OS_TV
196
111
return NSCachesDirectory;
0 commit comments