Insert URL at caret when dropping image into GB
unfortunately this pollutes the root scope a bit more
This commit is contained in:
parent
3f661ded6c
commit
a6c2e6f387
2 changed files with 28 additions and 26 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
var weechat = angular.module('weechat');
|
||||
|
||||
weechat.directive('imgurDrop', ['connection','imgur', function(connection, imgur) {
|
||||
weechat.directive('imgurDrop', ['connection','imgur','$rootScope', function(connection, imgur, $rootScope) {
|
||||
return {
|
||||
restrict: 'A',
|
||||
link: function($scope, element, attr) {
|
||||
|
@ -26,7 +26,7 @@ weechat.directive('imgurDrop', ['connection','imgur', function(connection, imgur
|
|||
|
||||
// Send image
|
||||
if(imageUrl !== undefined && imageUrl !== '') {
|
||||
connection.sendMessage(String(imageUrl));
|
||||
$rootScope.insertAtCaret(String(imageUrl));
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -70,36 +70,38 @@ weechat.directive('inputBar', function() {
|
|||
}, 0);
|
||||
};
|
||||
|
||||
$rootScope.insertAtCaret = function(toInsert) {
|
||||
// caret position in the input bar
|
||||
var inputNode = $scope.getInputNode(),
|
||||
caretPos = inputNode.selectionStart;
|
||||
|
||||
var prefix = $scope.command.substring(0, caretPos),
|
||||
suffix = $scope.command.substring(caretPos, $scope.command.length);
|
||||
// Add spaces if missing
|
||||
if (prefix.length > 0 && prefix[prefix.length - 1] !== ' ') {
|
||||
prefix += ' ';
|
||||
}
|
||||
if (suffix.length > 0 && suffix[0] !== ' ') {
|
||||
suffix = ' '.concat(suffix);
|
||||
}
|
||||
$scope.command = prefix + toInsert + suffix;
|
||||
|
||||
setTimeout(function() {
|
||||
inputNode.focus();
|
||||
var pos = $scope.command.length - suffix.length;
|
||||
inputNode.setSelectionRange(pos, pos);
|
||||
// force refresh?
|
||||
$scope.$apply();
|
||||
}, 0);
|
||||
};
|
||||
|
||||
$scope.uploadImage = function($event, files) {
|
||||
// Send image url after upload
|
||||
var sendImageUrl = function(imageUrl) {
|
||||
|
||||
// Send image
|
||||
if(imageUrl !== undefined && imageUrl !== '') {
|
||||
// caret position in the input bar
|
||||
var inputNode = $scope.getInputNode(),
|
||||
caretPos = inputNode.selectionStart;
|
||||
|
||||
var prefix = $scope.command.substring(0, caretPos),
|
||||
suffix = $scope.command.substring(caretPos, $scope.command.length);
|
||||
// Add spaces if missing
|
||||
if (prefix.length > 0 && prefix[prefix.length - 1] !== ' ') {
|
||||
prefix += ' ';
|
||||
}
|
||||
if (suffix.length > 0 && suffix[0] !== ' ') {
|
||||
suffix = ' '.concat(suffix);
|
||||
}
|
||||
$scope.command = prefix + String(imageUrl) + suffix;
|
||||
|
||||
setTimeout(function() {
|
||||
inputNode.focus();
|
||||
var pos = $scope.command.length - suffix.length;
|
||||
inputNode.setSelectionRange(pos, pos);
|
||||
// force refresh?
|
||||
$scope.$apply();
|
||||
}, 0);
|
||||
$rootScope.insertAtCaret(String(imageUrl));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
if(typeof files !== "undefined" && files.length > 0) {
|
||||
|
|
Loading…
Reference in a new issue