mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-24 22:35:41 +00:00
MWWikitextDataTransferHandlerFactory: skip getWikitextFragment if possible
This lets us avoid a fraction of a second lag when someone pastes a plain URL into source mode. Bug: T163237 Change-Id: I0e673856dec5f273fb92731b27494762299d2d6c
This commit is contained in:
parent
d4c9638508
commit
41ca528705
|
@ -47,6 +47,7 @@ ve.ui.MWWikitextDataTransferHandlerFactory.prototype.create = function () {
|
|||
}
|
||||
|
||||
handler.resolve = function ( dataOrDoc ) {
|
||||
var annotations, text;
|
||||
if ( typeof dataOrDoc === 'string' || ( Array.isArray( dataOrDoc ) && dataOrDoc.every( isPlain ) ) ) {
|
||||
resolve( dataOrDoc );
|
||||
} else {
|
||||
|
@ -55,6 +56,18 @@ ve.ui.MWWikitextDataTransferHandlerFactory.prototype.create = function () {
|
|||
// The handler may have also written items to the store
|
||||
new ve.dm.Document( new ve.dm.ElementLinearData( handler.surface.getModel().getDocument().getStore(), dataOrDoc ) );
|
||||
|
||||
// Optimization: we can skip a server hit if this is a plain link,
|
||||
// with no title, whose href is equal to the contained text. This
|
||||
// avoids a stutter in the common case of pasting a link into the
|
||||
// document.
|
||||
annotations = doc.data.getAnnotationsFromRange( new ve.Range( 0, doc.data.getLength() ) );
|
||||
if ( annotations.getLength() === 1 ) {
|
||||
text = doc.getData().reduce( function ( acc, val ) { return ( Array.isArray( acc ) ? acc[ 0 ] : acc ) + val[ 0 ]; } );
|
||||
if ( annotations.get( 0 ).getAttribute( 'href' ) === text ) {
|
||||
return resolve( text );
|
||||
}
|
||||
}
|
||||
|
||||
ve.init.target.getWikitextFragment( doc, false )
|
||||
.done( resolve )
|
||||
.fail( function () {
|
||||
|
|
Loading…
Reference in a new issue