Fix: Adding mention through paste user name from clipboard is not successfull
Input buffer wasn't getting updated with the user input when user did a paste from clipboard, it caused search for the available contacts to not trigger closes #6510
This commit is contained in:
parent
91127ce95f
commit
ab21e6b134
2 changed files with 16 additions and 4 deletions
|
|
@ -3,6 +3,7 @@
|
||||||
## Refactor
|
## Refactor
|
||||||
|
|
||||||
## Bug fixes
|
## Bug fixes
|
||||||
|
* Fix mention autocomplete when pasting the username [#6510](https://github.com/diaspora/diaspora/pull/6510)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,18 +7,20 @@
|
||||||
* Using underscore.js
|
* Using underscore.js
|
||||||
*
|
*
|
||||||
* License: MIT License - http://www.opensource.org/licenses/mit-license.php
|
* License: MIT License - http://www.opensource.org/licenses/mit-license.php
|
||||||
*
|
*
|
||||||
* Modifcations for Diaspora:
|
* Modifications for Diaspora:
|
||||||
*
|
*
|
||||||
* Prevent replacing the wrong text by marking the replacement position with a special character
|
* Prevent replacing the wrong text by marking the replacement position with a special character
|
||||||
* Don't add a space after inserting a mention
|
* Don't add a space after inserting a mention
|
||||||
* Only use the first div as a wrapperBox
|
* Only use the first div as a wrapperBox
|
||||||
|
* Binded paste event on input box to trigger contacts search for autocompletion while adding mention via clipboard
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function ($, _, undefined) {
|
(function ($, _, undefined) {
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
var KEY = { BACKSPACE : 8, TAB : 9, RETURN : 13, ESC : 27, LEFT : 37, UP : 38, RIGHT : 39, DOWN : 40, COMMA : 188, SPACE : 32, HOME : 36, END : 35 }; // Keys "enum"
|
var KEY = { PASTE : 118, BACKSPACE : 8, TAB : 9, RETURN : 13, ESC : 27, LEFT : 37, UP : 38, RIGHT : 39,
|
||||||
|
DOWN : 40, COMMA : 188, SPACE : 32, HOME : 36, END : 35 }; // Keys "enum"
|
||||||
var defaultSettings = {
|
var defaultSettings = {
|
||||||
triggerChar : '@',
|
triggerChar : '@',
|
||||||
onDataRequest : $.noop,
|
onDataRequest : $.noop,
|
||||||
|
|
@ -95,6 +97,7 @@
|
||||||
elmInputBox.attr('data-mentions-input', 'true');
|
elmInputBox.attr('data-mentions-input', 'true');
|
||||||
elmInputBox.bind('keydown', onInputBoxKeyDown);
|
elmInputBox.bind('keydown', onInputBoxKeyDown);
|
||||||
elmInputBox.bind('keypress', onInputBoxKeyPress);
|
elmInputBox.bind('keypress', onInputBoxKeyPress);
|
||||||
|
elmInputBox.bind('paste',onInputBoxPaste);
|
||||||
elmInputBox.bind('input', onInputBoxInput);
|
elmInputBox.bind('input', onInputBoxInput);
|
||||||
elmInputBox.bind('click', onInputBoxClick);
|
elmInputBox.bind('click', onInputBoxClick);
|
||||||
elmInputBox.bind('blur', onInputBoxBlur);
|
elmInputBox.bind('blur', onInputBoxBlur);
|
||||||
|
|
@ -208,6 +211,13 @@
|
||||||
hideAutoComplete();
|
hideAutoComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onInputBoxPaste(e) {
|
||||||
|
pastedData = e.originalEvent.clipboardData.getData("text/plain");
|
||||||
|
dataArray = pastedData.split("");
|
||||||
|
_.each(dataArray, function(value) {
|
||||||
|
inputBuffer.push(value);
|
||||||
|
});
|
||||||
|
}
|
||||||
function onInputBoxInput(e) {
|
function onInputBoxInput(e) {
|
||||||
updateValues();
|
updateValues();
|
||||||
updateMentionsCollection();
|
updateMentionsCollection();
|
||||||
|
|
@ -223,7 +233,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function onInputBoxKeyPress(e) {
|
function onInputBoxKeyPress(e) {
|
||||||
if(e.keyCode !== KEY.BACKSPACE) {
|
// Excluding ctrl+v from key press event in firefox
|
||||||
|
if (!((e.which === KEY.PASTE && e.ctrlKey) || (e.keyCode === KEY.BACKSPACE))) {
|
||||||
var typedValue = String.fromCharCode(e.which || e.keyCode);
|
var typedValue = String.fromCharCode(e.which || e.keyCode);
|
||||||
inputBuffer.push(typedValue);
|
inputBuffer.push(typedValue);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue