/// <summary> /// Called when [login]. /// </summary> /// <param name="loginEventMessage">The login event message.</param> private void OnLogin(LoginEventMessage loginEventMessage) { this.RabbitChatService.Initialize(loginEventMessage.Contact); this.RabbitChatService.ChatCreated += this.RabbitChatServiceOnChatCreated; this.LoadContacts(); }
/// <summary> /// The check log file size. /// </summary> /// <param name="m"> /// The login event message /// </param> private void CheckLogFileSize(LoginEventMessage m) { try { if (m.IsLogedIn && this.storageProvider.FileExists(this.FileName)) { Task.Run( async() => { try { var currentFileSize = await this.storageProvider.GetFileSize(this.FileName); if (currentFileSize > MaxFileSizeBytes) { var logData = await this.GetLogDataAsync(); var allLines = logData .Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) .ToList(); var lineSize = (long)currentFileSize / allLines.Count; var maxNumberOfLines = (int)MaxFileSizeBytes * RetainPercentageOfMaxSize / lineSize; var linesToSkip = allLines.Count - maxNumberOfLines; var logLines = allLines.Skip(linesToSkip > 0 ? (int)linesToSkip : 0); logData = string.Join(Environment.NewLine, logLines); var logBytes = Encoding.UTF8.GetBytes(logData); await this.storageProvider.CreateFile(this.FileName, logBytes, true); this.messenger?.Send(new ToastrMessage { MessageText = string.Format(LocalizedString.TextErrorLogPurge), DetailedMessage = string.Format( LocalizedString.TextErrorLogPurgeDetail, MaxFileSizeBytes / (1024 * 1024)) }); } } catch (Exception ex) { this.LogError(ex); } }).GetAwaiter().GetResult(); } } catch (Exception ex) { this.LogError(ex); } }