[PALEMOON] [frontend vs backend] Places - fix: adding a livemark doesn't work correctly

Issue #121
This commit is contained in:
janekptacijarabaci 2018-05-23 13:32:52 +02:00 • committed by Roy Tam
commit 64602172c2

View file

@ -61,6 +61,8 @@
Components.utils.import('resource://gre/modules/XPCOMUtils.jsm'); Components.utils.import('resource://gre/modules/XPCOMUtils.jsm');
XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils", XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
"resource://gre/modules/PrivateBrowsingUtils.jsm"); "resource://gre/modules/PrivateBrowsingUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Task",
"resource://gre/modules/Task.jsm");
const BOOKMARK_ITEM = 0; const BOOKMARK_ITEM = 0;
const BOOKMARK_FOLDER = 1; const BOOKMARK_FOLDER = 1;
@ -303,7 +305,7 @@ var BookmarkPropertiesPanel = {
* This method should be called by the onload of the Bookmark Properties * This method should be called by the onload of the Bookmark Properties
* dialog to initialize the state of the panel. * dialog to initialize the state of the panel.
*/ */
onDialogLoad: function BPP_onDialogLoad() { onDialogLoad: Task.async(function* BPP_onDialogLoad() {
this._determineItemInfo(); this._determineItemInfo();
document.title = this._getDialogTitle(); document.title = this._getDialogTitle();
@ -355,7 +357,7 @@ var BookmarkPropertiesPanel = {
acceptButton.disabled = this._readOnly; acceptButton.disabled = this._readOnly;
break; break;
case ACTION_ADD: case ACTION_ADD:
this._fillAddProperties(); yield this._fillAddProperties();
// if this is an uri related dialog disable accept button until // if this is an uri related dialog disable accept button until
// the user fills an uri value. // the user fills an uri value.
if (this._itemType == BOOKMARK_ITEM) if (this._itemType == BOOKMARK_ITEM)
@ -380,7 +382,7 @@ var BookmarkPropertiesPanel = {
.addEventListener("input", this, false); .addEventListener("input", this, false);
} }
} }
}, }),
// nsIDOMEventListener // nsIDOMEventListener
handleEvent: function BPP_handleEvent(aEvent) { handleEvent: function BPP_handleEvent(aEvent) {
@ -428,8 +430,8 @@ var BookmarkPropertiesPanel = {
forceReadOnly: this._readOnly }); forceReadOnly: this._readOnly });
}, },
_fillAddProperties: function BPP__fillAddProperties() { _fillAddProperties: Task.async(function* BPP__fillAddProperties() {
this._createNewItem(); yield this._createNewItem();
// Edit the new item // Edit the new item
gEditItemOverlay.initPanel(this._itemId, gEditItemOverlay.initPanel(this._itemId,
{ hiddenRows: this._hiddenRows }); { hiddenRows: this._hiddenRows });
@ -439,7 +441,7 @@ var BookmarkPropertiesPanel = {
var locationField = this._element("locationField"); var locationField = this._element("locationField");
if (locationField.value == "about:blank") if (locationField.value == "about:blank")
locationField.value = ""; locationField.value = "";
}, }),
// nsISupports // nsISupports
QueryInterface: function BPP_QueryInterface(aIID) { QueryInterface: function BPP_QueryInterface(aIID) {
@ -637,7 +639,7 @@ var BookmarkPropertiesPanel = {
/** /**
* Dialog-accept code-path for creating a new item (any type) * Dialog-accept code-path for creating a new item (any type)
*/ */
_createNewItem: function BPP__getCreateItemTransaction() { _createNewItem: Task.async(function* BPP__getCreateItemTransaction() {
var [container, index] = this._getInsertionPointDetails(); var [container, index] = this._getInsertionPointDetails();
var txn; var txn;
@ -647,12 +649,22 @@ var BookmarkPropertiesPanel = {
break; break;
case LIVEMARK_CONTAINER: case LIVEMARK_CONTAINER:
txn = this._getCreateNewLivemarkTransaction(container, index); txn = this._getCreateNewLivemarkTransaction(container, index);
break; break;
default: // BOOKMARK_ITEM default: // BOOKMARK_ITEM
txn = this._getCreateNewBookmarkTransaction(container, index); txn = this._getCreateNewBookmarkTransaction(container, index);
} }
PlacesUtils.transactionManager.doTransaction(txn); PlacesUtils.transactionManager.doTransaction(txn);
this._itemId = PlacesUtils.bookmarks.getIdForItemAt(container, index); // This is a temporary hack until we use PlacesTransactions.jsm
} if (txn._promise) {
yield txn._promise;
}
let folderGuid = yield PlacesUtils.promiseItemGuid(container);
let bm = yield PlacesUtils.bookmarks.fetch({
parentGuid: folderGuid,
index: index
});
this._itemId = yield PlacesUtils.promiseItemId(bm.guid);
})
}; };