Skip to content

Commit

Permalink
fix: 修复用户在等待翻译结果时修改内容存数据库出错的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
ZGGSONG committed Jan 7, 2025
1 parent 1f1fd9e commit 0a11c14
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 6 deletions.
1 change: 0 additions & 1 deletion src/STranslate.Style/Converters/DictConverters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ public class DictConverter : IValueConverter
{
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
Debug.WriteLine(value);
if (value is not string str || string.IsNullOrEmpty(str) ||
!int.TryParse(parameter?.ToString(), out var index)) return value;
var array = str.Split(Environment.NewLine).Where(x => !string.IsNullOrEmpty(x)).Select(x => x.Trim()).ToArray();
Expand Down
8 changes: 5 additions & 3 deletions src/STranslate/ViewModels/InputViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ private async void AutoTranslate(object? _)
private async Task TranslateAsync(object? obj, CancellationToken token)
{
CanTranslate = false;
// 避免用户在等待翻译结果时修改内容存数据库出错
var currentContent = InputContent;

try
{
Expand All @@ -171,7 +173,7 @@ private async Task TranslateAsync(object? obj, CancellationToken token)
var history = await DoTranslateAsync(obj, size, token);

// 正常进行则记录历史记录,如果出现异常(eg. 取消任务)则不记录
await PostTranslateAsync(history, sourceLang, targetLang, size);
await PostTranslateAsync(history, currentContent, sourceLang, targetLang, size);
}
catch (OperationCanceledException)
{
Expand Down Expand Up @@ -539,7 +541,7 @@ await service.TranslateAsync(

#region 翻译后操作

private async Task PostTranslateAsync(HistoryModel? history, LangEnum source, LangEnum dbTarget,
private async Task PostTranslateAsync(HistoryModel? history, string content, LangEnum source, LangEnum dbTarget,
long size)
{
if (history is null && size > 0)
Expand All @@ -553,7 +555,7 @@ private async Task PostTranslateAsync(HistoryModel? history, LangEnum source, La
Time = DateTime.Now,
SourceLang = source.GetDescription(),
TargetLang = dbTarget.GetDescription(),
SourceText = InputContent,
SourceText = content,
Data = JsonConvert.SerializeObject(enableServices, jsonSerializerSettings)
};
//翻译结果插入数据库
Expand Down
4 changes: 2 additions & 2 deletions src/STranslate/ViewModels/OutputViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,8 @@ private async Task HotkeyTtsAsync(string param)

public void Clear()
{
foreach (var service in Translators)
TranslationResult.CopyFrom(TranslationResult.Reset, service.Data);
Parallel.ForEach(Translators, (service) =>
TranslationResult.CopyFrom(TranslationResult.Reset, service.Data));
}

[RelayCommand]
Expand Down

0 comments on commit 0a11c14

Please sign in to comment.