bool CanMessageBeSent(out string error) { error = null; if (Mail.IsSending) { return(false); } if (MessageTextBox.TextLength < MinimalAmountOfCharacters) { error = TooLittleCharactersError; return(false); } bool lastMailInfoGotten = ProgramDataDir.TryGetInfo(ProgramDataDir.Line.LastMailTime, out string lastMailTime); if (lastMailInfoGotten) { long currTime = DateTimeOffset.Now.ToUnixTimeSeconds(); long mailTime = long.Parse(lastMailTime); TimeSpan difference = TimeSpan.FromSeconds(currTime - mailTime); if (difference < DelayBetweenMails) { error = NotEnoughTimePassedError; return(false); } } return(true); }
private async void SendButton_ClickAsync(object sender, EventArgs e) { if (!CanMessageBeSent(out string error)) { if (error != null) { InfoLabel.Text = error; } return; } InfoLabel.Text = SendingInProcessText; Mail.SubjectType subject = SubjectRadioButtons.Single(butt => butt.Checked).Text.ToEnum <Mail.SubjectType>(); (bool success, Exception ex)result = await Task.Run(() => (Mail.TrySendMail(MessageTextBox.Text, subject, out Exception ex), ex)); if (result.success) { InfoLabel.Text = SuccesfullySentText; ProgramDataDir.WriteInfo(ProgramDataDir.Line.LastMailTime, DateTimeOffset.Now.ToUnixTimeSeconds().ToString()); } else { InfoLabel.Text = GeneralSendingError; } }