diff --git a/ChatRPG/ChatRPG/Data/FileUtility.cs b/ChatRPG/ChatRPG/Data/FileUtility.cs index bd01a76..5ee6b10 100644 --- a/ChatRPG/ChatRPG/Data/FileUtility.cs +++ b/ChatRPG/ChatRPG/Data/FileUtility.cs @@ -6,16 +6,17 @@ public record MessagePair(string PlayerMessage, string AssistantMessage); public class FileUtility { + private readonly string _currentUser; private readonly string _path; private readonly string _saveDir; - private readonly string _filenamePrefix = "conversation"; // Define "special" keywords for determining the author of a message. private readonly string _playerKeyword = "#: "; private readonly string _gameKeyword = "#: "; - public FileUtility(string saveDir = "Saves/") + public FileUtility(string currentUser, string saveDir = "Saves/") { + _currentUser = currentUser; _saveDir = Path.Join(AppDomain.CurrentDomain.BaseDirectory, saveDir); _path = SetPath(DateTime.Now); } @@ -38,7 +39,7 @@ public async Task UpdateSaveFileAsync(MessagePair messages) public async Task> GetMostRecentConversationAsync(string playerTag, string assistantTag) { - string filePath = GetMostRecentFile(Directory.GetFiles(_saveDir, $"{_filenamePrefix}*")); + string filePath = GetMostRecentFile(Directory.GetFiles(_saveDir, $"{_currentUser}*")); return await GetConversationsStringFromSaveFileAsync(filePath, playerTag, assistantTag); } @@ -132,7 +133,7 @@ private List ConvertConversationStringToList(string conversation, string private string SetPath(DateTime timestamp) { // Add save directory and file name to path - string fileName = $"{_filenamePrefix} {timestamp:dd-MM-yyyy_HH-mm-ss}.txt"; + string fileName = $"{_currentUser} {timestamp:dd-MM-yyyy_HH-mm-ss}.txt"; return Path.Join(_saveDir, fileName); } } diff --git a/ChatRPG/ChatRPG/Pages/Campaign.razor b/ChatRPG/ChatRPG/Pages/Campaign.razor index 7787f64..9b4c65c 100644 --- a/ChatRPG/ChatRPG/Pages/Campaign.razor +++ b/ChatRPG/ChatRPG/Pages/Campaign.razor @@ -4,6 +4,7 @@ @inject IConfiguration Configuration @inject IOpenAiLlmClient OpenAiLlmClient; @inject IJSRuntime JsRuntime +@inject AuthenticationStateProvider AuthenticationStateProvider Campaign @@ -38,14 +39,18 @@ @code { + private string? _loggedInUsername; private bool _shouldSave; private IJSObjectReference? _scrollJsScript; - private readonly FileUtility _fileUtil = new FileUtility(); + private FileUtility? _fileUtil; readonly List _conversation = new List(); private string _userInput = ""; protected override async Task OnInitializedAsync() { + AuthenticationState authenticationState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); + _loggedInUsername = authenticationState.User.Identity?.Name; + if (_loggedInUsername != null) _fileUtil = new FileUtility(_loggedInUsername); _shouldSave = Configuration.GetValue("SaveConversationsToFile"); _scrollJsScript = await JsRuntime.InvokeAsync("import", "./js/scroll.js"); } @@ -66,7 +71,7 @@ _conversation.Add($"Player: {_userInput}"); string response = await ProcessUserInput(_userInput); _conversation.Add($"Assistant: {response}"); - if (_shouldSave) + if (_shouldSave && _fileUtil != null) { await _fileUtil.UpdateSaveFileAsync(new MessagePair(_userInput, response)); }