Fix summary when topic title is changed after restoring from autosave

Previously, we would restore the title and the summary generated from
it, but we wouldn't restore `prevTitleText`, so we would lose track of
the fact that it was automatically generated, and stop updating it
because of that.

Instead of adding it to the stored data, let's instead stop storing
automatically generated summaries, and tweak the code to support
generating them when restoring.

Bug: T315730
Change-Id: I96420bc0a3e34373190d2c2c0db2e2175ad3156d
This commit is contained in:
Bartosz Dziewoński 2023-01-24 13:11:45 +01:00
parent 87d67d4a1c
commit 1fb67ef63d
3 changed files with 27 additions and 6 deletions

View file

@ -351,6 +351,12 @@ CommentController.prototype.setupReplyWidget = function ( replyWidget, data, sup
this.replyWidget = replyWidget; this.replyWidget = replyWidget;
}; };
CommentController.prototype.storeEditSummary = function () {
if ( this.replyWidget ) {
this.replyWidget.storage.set( this.replyWidget.storagePrefix + '/summary', this.replyWidget.getEditSummary() );
}
};
/** /**
* Focus the first input field inside the controller. * Focus the first input field inside the controller.
*/ */

View file

@ -126,6 +126,12 @@ NewTopicController.prototype.setupReplyWidget = function ( replyWidget ) {
// TODO This should happen immediately rather than waiting for the reply widget to load, // TODO This should happen immediately rather than waiting for the reply widget to load,
// then we wouldn't need this check, but the autosave code is in ReplyWidget. // then we wouldn't need this check, but the autosave code is in ReplyWidget.
this.sectionTitle.setValue( title ); this.sectionTitle.setValue( title );
this.prevTitleText = title;
if ( this.replyWidget.storage.get( this.replyWidget.storagePrefix + '/summary' ) === null ) {
var generatedSummary = this.generateSummary( title );
this.replyWidget.editSummaryInput.setValue( generatedSummary );
}
} }
if ( this.replyWidget.modeTabSelect ) { if ( this.replyWidget.modeTabSelect ) {
@ -223,6 +229,20 @@ NewTopicController.prototype.clearStorage = function () {
} }
}; };
NewTopicController.prototype.storeEditSummary = function () {
if ( this.replyWidget ) {
var currentSummary = this.replyWidget.editSummaryInput.getValue();
var generatedSummary = this.generateSummary( this.sectionTitle.getValue() );
if ( currentSummary === generatedSummary ) {
// Do not store generated summaries (T315730)
this.replyWidget.storage.remove( this.replyWidget.storagePrefix + '/summary' );
return;
}
}
NewTopicController.super.prototype.storeEditSummary.call( this );
};
/** /**
* @inheritdoc * @inheritdoc
*/ */

View file

@ -493,16 +493,11 @@ ReplyWidget.prototype.toggleAdvanced = function ( showAdvanced ) {
this.advanced.toggle( !!this.showAdvanced ); this.advanced.toggle( !!this.showAdvanced );
this.advancedToggle.setIndicator( this.showAdvanced ? 'up' : 'down' ); this.advancedToggle.setIndicator( this.showAdvanced ? 'up' : 'down' );
this.storeEditSummary();
this.storage.set( this.storagePrefix + '/showAdvanced', this.showAdvanced ? '1' : '' ); this.storage.set( this.storagePrefix + '/showAdvanced', this.showAdvanced ? '1' : '' );
}; };
ReplyWidget.prototype.onEditSummaryChange = function () { ReplyWidget.prototype.onEditSummaryChange = function () {
this.storeEditSummary(); this.commentController.storeEditSummary();
};
ReplyWidget.prototype.storeEditSummary = function () {
this.storage.set( this.storagePrefix + '/summary', this.getEditSummary() );
}; };
ReplyWidget.prototype.getEditSummary = function () { ReplyWidget.prototype.getEditSummary = function () {