[Libreoffice-commits] online.git: ios/Mobile

Tor Lillqvist (via logerrit) logerrit at kemper.freedesktop.org
Thu Jul 23 21:30:20 UTC 2020


 ios/Mobile/AppDelegate.mm |   31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

New commits:
commit 377e9266c9cd18de3e39032f79f9d2d544b72e7b
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Thu Jul 23 19:11:29 2020 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Thu Jul 23 19:18:55 2020 +0300

    tdf#134832: Clear the cache directory if it is for another version of the app
    
    We don't want to use cached scaled icons (and other stuff that might
    be in the cache?) if from a potentially incompatible version of the
    app. Store the core and online hashes in files in the cache to be able
    to compare.
    
    Change-Id: I593ece5dae71f91f204d4c040bd9f744b3bc498f

diff --git a/ios/Mobile/AppDelegate.mm b/ios/Mobile/AppDelegate.mm
index d6962b840..207d59393 100644
--- a/ios/Mobile/AppDelegate.mm
+++ b/ios/Mobile/AppDelegate.mm
@@ -191,6 +191,37 @@ static void updateTemplates(NSData *data, NSURLResponse *response)
     Log::initialize("Mobile", trace, false, false, {});
     Util::setThreadName("main");
 
+    // Clear the cache directory if it is for another build of the app
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+    NSString *userDirectory = [paths objectAtIndex:0];
+    NSString *cacheDirectory = [userDirectory stringByAppendingPathComponent:@"cache"];
+
+    NSString *coreVersionHashFile = [cacheDirectory stringByAppendingPathComponent:@"core_version_hash"];
+    NSString *loolwsdVersionHashFile = [cacheDirectory stringByAppendingPathComponent:@"loolwsd_version_hash"];
+
+    NSData *oldCoreVersionHash = [NSData dataWithContentsOfFile:coreVersionHashFile];
+    NSData *oldLoolwsdVersionHash = [NSData dataWithContentsOfFile:loolwsdVersionHashFile];
+
+    NSData *coreVersionHash = [NSData dataWithBytes:CORE_VERSION_HASH length:strlen(CORE_VERSION_HASH)];
+    NSData *loolwsdVersionHash = [NSData dataWithBytes:LOOLWSD_VERSION_HASH length:strlen(LOOLWSD_VERSION_HASH)];
+
+    if (oldCoreVersionHash == nil
+        || ![oldCoreVersionHash isEqualToData:coreVersionHash]
+        || oldLoolwsdVersionHash == nil
+        || ![oldLoolwsdVersionHash isEqualToData:loolwsdVersionHash]) {
+
+        [[NSFileManager defaultManager] removeItemAtPath:cacheDirectory error:nil];
+
+        if (![[NSFileManager defaultManager] createDirectoryAtPath:cacheDirectory withIntermediateDirectories:NO attributes:nil error:nil])
+            NSLog(@"Could not create %@", cacheDirectory);
+
+        if (![[NSFileManager defaultManager] createFileAtPath:coreVersionHashFile contents:coreVersionHash attributes:nil])
+            NSLog(@"Could not create %@", coreVersionHashFile);
+
+        if (![[NSFileManager defaultManager] createFileAtPath:loolwsdVersionHashFile contents:loolwsdVersionHash attributes:nil])
+            NSLog(@"Could not create %@", loolwsdVersionHashFile);
+    }
+
     // Having LANG in the environment is expected to happen only when debugging from Xcode. When
     // testing some language one doesn't know it might be risky to simply set one's iPad to that
     // language, as it might be hard to find the way to set it back to a known language.


More information about the Libreoffice-commits mailing list