public void Update()
        {
            Logger.Info("Checking for update");
            LastUpdateCheck = DateTimeOffset.Now;

            var hasUpdated = gameRepository.HasUpdated(game) || Filesystem.GetSaveFileLastWrite(game, Settings.Default.HotSeatFolder) < gameRepository.GetSaveGameLastModifiedTime(game);

            if (hasUpdated)
            {
                var remoteSavefileLastModified = gameRepository.GetSaveGameLastModifiedTime(game);
                var remoteFileIsNewer          = SaveGameTime < remoteSavefileLastModified;

                if (remoteFileIsNewer)
                {
                    Logger.Info($"Detected newer remote save file for {game}");
                    saveFileWatcher.EnableRaisingEvents = false;

                    var fullSavefileName = Filesystem.GetHotSeatSaveFileFullName(Settings.Default.HotSeatFolder, Filesystem.GetSaveFileName(game));
                    game = gameRepository.UpdateGameAndSaveFile(game, fullSavefileName);

                    FirePropertiesChanged(nameof(SaveGameTime), nameof(CurrentPlayer), nameof(Players), nameof(Name), nameof(IsMyTurn), nameof(LastUpdateCheck));
                    saveFileWatcher.EnableRaisingEvents = true;
                }
            }
        }
        public void UploadSaveFile(Game game, string directory)
        {
            var fullSaveName = Filesystem.GetHotSeatSaveFileFullName(directory, game.SavefileName);

            if (!File.Exists(fullSaveName))
            {
                throw new FileNotFoundException(null, fullSaveName);
            }

            var blobClient = CreateBlobClientForGame(game);

            blobClient.DeleteIfExistsAsync().GetAwaiter().GetResult();
            blobClient.UploadAsync(fullSaveName).GetAwaiter().GetResult();
        }
        private void SetupSavefileWatcher()
        {
            if (saveFileWatcher != null)
            {
                saveFileWatcher.Dispose();
                saveFileWatcher = null;
            }

            var filePath = Filesystem.GetHotSeatSaveFileFullName(Settings.Default.HotSeatFolder, game.SavefileName);

            if (!File.Exists(filePath))
            {
                return;
            }

            saveFileWatcher = new FileSystemWatcher(Path.GetDirectoryName(filePath), "*.Civ6Save");
            saveFileWatcher.EnableRaisingEvents = true;
            saveFileWatcher.NotifyFilter        = NotifyFilters.LastWrite;
            saveFileWatcher.Changed            += SaveFileWatcher_Changed;
        }
 private bool ValidateSaveFile(string fileName = null)
 {
     fileName = fileName ?? Filesystem.GetHotSeatSaveFileFullName(Settings.Default.HotSeatFolder, Filesystem.GetSaveFileName(game));
     return(File.Exists(fileName));
 }