blob: 215795ca010b2eb7c76053b9fff1f6f20d5d8fcb [file] [log] [blame]
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
angular.module('zeppelinWebApp').service('noteActionService', noteActionService);
function noteActionService(websocketMsgSrv, $location, noteRenameService, noteListFactory) {
'ngInject';
this.moveNoteToTrash = function(noteId, redirectToHome) {
BootstrapDialog.confirm({
closable: true,
title: 'Move this note to trash?',
message: 'This note will be moved to <strong>trash</strong>.',
callback: function(result) {
if (result) {
websocketMsgSrv.moveNoteToTrash(noteId);
if (redirectToHome) {
$location.path('/');
}
}
},
});
};
this.moveFolderToTrash = function(folderId) {
BootstrapDialog.confirm({
closable: true,
title: 'Move this folder to trash?',
message: 'This folder will be moved to <strong>trash</strong>.',
callback: function(result) {
if (result) {
websocketMsgSrv.moveFolderToTrash(folderId);
}
},
});
};
this.removeNote = function(noteId, redirectToHome) {
BootstrapDialog.confirm({
type: BootstrapDialog.TYPE_WARNING,
closable: true,
title: 'WARNING! This note will be removed permanently',
message: 'This cannot be undone. Are you sure?',
callback: function(result) {
if (result) {
websocketMsgSrv.deleteNote(noteId);
if (redirectToHome) {
$location.path('/');
}
}
},
});
};
this.removeFolder = function(folderId) {
BootstrapDialog.confirm({
type: BootstrapDialog.TYPE_WARNING,
closable: true,
title: 'WARNING! This folder will be removed permanently',
message: 'This cannot be undone. Are you sure?',
callback: function(result) {
if (result) {
websocketMsgSrv.removeFolder(folderId);
}
},
});
};
this.restoreAll = function() {
BootstrapDialog.confirm({
closable: true,
title: 'Are you sure want to restore all notes in the trash?',
message: 'Folders and notes in the trash will be ' +
'<strong>merged</strong> into their original position.',
callback: function(result) {
if (result) {
websocketMsgSrv.restoreAll();
}
},
});
};
this.emptyTrash = function() {
BootstrapDialog.confirm({
type: BootstrapDialog.TYPE_WARNING,
closable: true,
title: 'WARNING! Notes under trash will be removed permanently',
message: 'This cannot be undone. Are you sure?',
callback: function(result) {
if (result) {
websocketMsgSrv.emptyTrash();
}
},
});
};
this.clearAllParagraphOutput = function(noteId) {
BootstrapDialog.confirm({
closable: true,
title: '',
message: 'Do you want to clear all output?',
callback: function(result) {
if (result) {
websocketMsgSrv.clearAllParagraphOutput(noteId);
}
},
});
};
this.renameNote = function(noteId, notePath) {
noteRenameService.openRenameModal({
title: 'Rename note',
oldName: notePath,
callback: function(newName) {
websocketMsgSrv.renameNote(noteId, newName);
},
});
};
this.renameFolder = function(folderPath) {
noteRenameService.openRenameModal({
title: 'Rename folder',
oldName: folderPath,
callback: function(newName) {
let newFolderPath = normalizeFolderId(newName);
if (_.has(noteListFactory.flatFolderMap, newFolderPath)) {
BootstrapDialog.confirm({
type: BootstrapDialog.TYPE_WARNING,
closable: true,
title: 'WARNING! The folder will be MERGED',
message: 'The folder will be merged into <strong>' + _.escape(newFolderPath) + '</strong>. Are you sure?',
callback: function(result) {
if (result) {
websocketMsgSrv.renameFolder(folderPath, newFolderPath);
}
},
});
} else {
websocketMsgSrv.renameFolder(folderPath, newFolderPath);
}
},
});
};
function normalizeFolderId(folderId) {
folderId = folderId.trim();
while (folderId.indexOf('\\') > -1) {
folderId = folderId.replace('\\', '/');
}
while (folderId.indexOf('///') > -1) {
folderId = folderId.replace('///', '/');
}
folderId = folderId.replace('//', '/');
if (folderId === '/') {
return '/';
}
if (folderId[0] === '/') {
folderId = folderId.substring(1);
}
if (folderId.slice(-1) === '/') {
folderId = folderId.slice(0, -1);
}
return folderId;
}
}