From 02062c8b9c589c8d10351f260e8c19b883d601f7 Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Mon, 22 Oct 2018 22:43:23 +0200 Subject: [PATCH] v1.30 UWP --- AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj | 3 + AideDeJeu/AideDeJeu.UWP/NativeAPI.cs | 63 ++++++++++++++++---- AideDeJeu/AideDeJeu.UWP/Package.appxmanifest | 2 +- 3 files changed, 56 insertions(+), 12 deletions(-) diff --git a/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj b/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj index 9f1d1da3..eb6d4a47 100644 --- a/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj +++ b/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj @@ -112,6 +112,9 @@ library.db + + library.ver + diff --git a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs index da78d701..604c40e9 100644 --- a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs +++ b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs @@ -25,21 +25,62 @@ namespace AideDeJeu.UWP public async Task GetDatabasePathAsync(string databaseName) { - var documentsDirectoryPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path; - var path = Path.Combine(documentsDirectoryPath, $"{databaseName}.db"); - - if (!File.Exists(path)) + if (await CheckDatabaseVersionAsync(databaseName)) { - var assembly = typeof(Version_UWP).GetTypeInfo().Assembly; - using (var inStream = assembly.GetManifestResourceStream($"AideDeJeu.UWP.{databaseName}.db")) + await CopyOldToNewFileAsync(databaseName, "db"); + await CopyOldToNewFileAsync(databaseName, "ver"); + } + return GetNewFilePath(databaseName, "db"); + } + + public Stream GetOldFileStream(string fileName, string extension) + { + var assembly = typeof(Version_UWP).GetTypeInfo().Assembly; + return assembly.GetManifestResourceStream($"AideDeJeu.UWP.{fileName}.{extension}"); + } + public string GetNewFilePath(string fileName, string extension) + { + var documentsDirectoryPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path; + return Path.Combine(documentsDirectoryPath, $"{fileName}.{extension}"); + } + public async Task CopyOldToNewFileAsync(string fileName, string extension) + { + using (var inStream = GetOldFileStream(fileName, extension)) + { + using (var outStream = new FileStream(GetNewFilePath(fileName, extension), FileMode.Create)) { - using (var outStream = new FileStream(path, FileMode.Create)) - { - await inStream.CopyToAsync(outStream); - } + await inStream.CopyToAsync(outStream); } } - return path; } + + public async Task CheckDatabaseVersionAsync(string databaseName) + { + var path = GetNewFilePath(databaseName, "ver"); + if (!File.Exists(path)) + { + return true; + } + int newVersion = 0; + int oldVersion = -1; + using (var newStream = GetOldFileStream(databaseName, "ver")) + { + using (var sr = new StreamReader(newStream)) + { + var str = await sr.ReadToEndAsync(); + int.TryParse(str, out newVersion); + } + } + using (var oldStream = new FileStream(path, FileMode.Open)) + { + using (var sr = new StreamReader(oldStream)) + { + var str = await sr.ReadToEndAsync(); + int.TryParse(str, out oldVersion); + } + } + return newVersion > oldVersion; + } + } } \ No newline at end of file diff --git a/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest b/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest index 6eb44114..25dcb5f2 100644 --- a/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest +++ b/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest @@ -1,6 +1,6 @@  - + Haches & Dés