Skip to content

Commit 8ef2bb0

Browse files
authored
Merge pull request #453 from iceljc/bugfix/fix-truncate-breakpoint
fix truncate breakpoint
2 parents d129548 + 8c2b77b commit 8ef2bb0

File tree

4 files changed

+7
-9
lines changed

4 files changed

+7
-9
lines changed

src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationStateService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ IConversationStateService SetState<T>(string name, T value, bool isNeedVersion =
1717
int activeRounds = -1, string valueType = StateDataType.String, string source = StateSource.User, bool readOnly = false);
1818
void SaveStateByArgs(JsonDocument args);
1919
bool RemoveState(string name);
20-
void CleanStates(params string[] keepStates);
20+
void CleanStates(params string[] excludedStates);
2121
void Save();
2222
}

src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationStateService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public bool RemoveState(string name)
270270
return true;
271271
}
272272

273-
public void CleanStates(params string[] keepStates)
273+
public void CleanStates(params string[] excludedStates)
274274
{
275275
var routingCtx = _services.GetRequiredService<IRoutingContext>();
276276
var curMsgId = routingCtx.MessageId;
@@ -279,7 +279,7 @@ public void CleanStates(params string[] keepStates)
279279
foreach (var key in _curStates.Keys)
280280
{
281281
// skip state
282-
if (keepStates.Contains(key))
282+
if (excludedStates.Contains(key))
283283
{
284284
continue;
285285
}

src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Conversation.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ public IEnumerable<string> TruncateConversation(string conversationId, string me
481481
// Handle truncated breakpoints
482482
var breakpointDir = Path.Combine(convDir, BREAKPOINT_FILE);
483483
var breakpoints = CollectConversationBreakpoints(breakpointDir);
484-
isSaved = HandleTruncatedBreakpoints(breakpointDir, breakpoints, messageId);
484+
isSaved = HandleTruncatedBreakpoints(breakpointDir, breakpoints, refTime);
485485

486486
// Remove logs
487487
if (cleanLog)
@@ -585,10 +585,9 @@ private bool HandleTruncatedStates(string stateDir, List<StateKeyValue> states,
585585
return isSaved;
586586
}
587587

588-
private bool HandleTruncatedBreakpoints(string breakpointDir, List<ConversationBreakpoint> breakpoints, string refMessageId)
588+
private bool HandleTruncatedBreakpoints(string breakpointDir, List<ConversationBreakpoint> breakpoints, DateTime refTime)
589589
{
590-
var targetIdx = breakpoints.FindIndex(x => x.MessageId == refMessageId);
591-
var truncatedBreakpoints = breakpoints?.Where((x, idx) => idx < targetIdx)?
590+
var truncatedBreakpoints = breakpoints?.Where(x => x.CreatedTime < refTime)?
592591
.ToList() ?? new List<ConversationBreakpoint>();
593592

594593
var isSaved = SaveTruncatedBreakpoints(breakpointDir, truncatedBreakpoints);

src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Conversation.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -452,8 +452,7 @@ public IEnumerable<string> TruncateConversation(string conversationId, string me
452452
if (!foundStates.Breakpoints.IsNullOrEmpty())
453453
{
454454
var breakpoints = foundStates.Breakpoints ?? new List<BreakpointMongoElement>();
455-
var targetIdx = breakpoints.FindIndex(x => x.MessageId == messageId);
456-
var truncatedBreakpoints = breakpoints.Where((x, idx) => idx < targetIdx).ToList();
455+
var truncatedBreakpoints = breakpoints.Where(x => x.CreatedTime < refTime).ToList();
457456
foundStates.Breakpoints = truncatedBreakpoints;
458457
}
459458

0 commit comments

Comments
 (0)