This commit is contained in:
Mo Bitar
2020-02-05 17:00:11 -06:00
parent 1ae3790ea3
commit 13dd41b9ab
10 changed files with 479 additions and 4963 deletions

View File

@@ -7,10 +7,12 @@ class ActionsMenuCtrl extends PureCtrl {
$scope,
$timeout,
actionsManager,
godService
) {
super($timeout);
this.$timeout = $timeout;
this.actionsManager = actionsManager;
this.godService = godService;
}
$onInit() {
@@ -64,7 +66,7 @@ class ActionsMenuCtrl extends PureCtrl {
switch (action.verb) {
case 'render': {
const item = result.item;
this.actionsManager.presentRevisionPreviewModal(
this.godService.presentRevisionPreviewModal(
item.uuid,
item.content
);

View File

@@ -1,4 +1,8 @@
import { protocolManager, SNComponent, SFItem, SFModelManager } from 'snjs';
import {
PAYLOAD_SOURCE_REMOTE_ACTION_RETRIEVED,
CONTENT_TYPE_NOTE,
CONTENT_TYPE_COMPONENT
} from 'snjs';
import template from '%/directives/revision-preview-modal.pug';
class RevisionPreviewModalCtrl {
@@ -6,44 +10,40 @@ class RevisionPreviewModalCtrl {
constructor(
$element,
$scope,
$timeout,
syncManager,
$timeout
) {
this.$element = $element;
this.$scope = $scope;
this.$timeout = $timeout;
this.syncManager = syncManager;
this.createNote();
this.configureEditor();
this.configure();
$scope.$on('$destroy', () => {
if (this.identifier) {
this.application.componentManager.deregisterHandler(this.identifier);
}
});
}
createNote() {
this.note = new SFItem({
content: this.content,
content_type: "Note"
async configure() {
this.note = await this.application.createItem({
contentType: CONTENT_TYPE_NOTE,
content: this.content
});
}
configureEditor() {
/**
* Set UUID so editoForNote can find proper editor, but then generate new uuid
* for note as not to save changes to original, if editor makes changes.
*/
this.note.uuid = this.uuid;
const editorForNote = this.application.componentManager.editorForNote(this.note);
this.note.uuid = protocolManager.crypto.generateUUIDSync();
this.note.uuid = await this.application.generateUuid();
if (editorForNote) {
/**
* Create temporary copy, as a lot of componentManager is uuid based, so might
* interfere with active editor. Be sure to copy only the content, as the top level
* editor object has non-copyable properties like .window, which cannot be transfered
*/
const editorCopy = new SNComponent({
const editorCopy = await this.application.createItem({
contentType: CONTENT_TYPE_COMPONENT,
content: editorForNote.content
});
editorCopy.readonly = true;
@@ -85,13 +85,12 @@ class RevisionPreviewModalCtrl {
const uuid = this.uuid;
item = this.application.findItem({uuid: uuid});
item.content = Object.assign({}, this.content);
this.modelManager.mapResponseItemsToLocalModels(
[item],
SFModelManager.MappingSourceRemoteActionRetrieved
);
await this.application.mergeItem({
item: item,
source: PAYLOAD_SOURCE_REMOTE_ACTION_RETRIEVED
});
}
this.modelManager.setItemDirty(item);
this.syncManager.sync();
this.application.saveItem({item});
this.dismiss();
};

View File

@@ -4,16 +4,14 @@ class SessionHistoryMenuCtrl {
/* @ngInject */
constructor(
$timeout,
actionsManager,
alertManager,
sessionHistory,
godService,
application,
) {
this.$timeout = $timeout;
this.alertManager = alertManager;
this.actionsManager = actionsManager;
this.sessionHistory = sessionHistory;
this.diskEnabled = this.sessionHistory.diskEnabled;
this.autoOptimize = this.sessionHistory.autoOptimize;
this.godService = godService;
this.application = application;
this.diskEnabled = this.application.historyManager.isDiskEnabled();
this.autoOptimize = this.application.historyManager.isAutoOptimizeEnabled();
}
$onInit() {
@@ -21,7 +19,7 @@ class SessionHistoryMenuCtrl {
}
reloadHistory() {
const history = this.sessionHistory.historyForItem(this.item);
const history = this.application.historyManager.historyForItem(this.item);
this.entries = history.entries.slice(0).sort((a, b) => {
return a.item.updated_at < b.item.updated_at ? 1 : -1;
});
@@ -29,7 +27,7 @@ class SessionHistoryMenuCtrl {
}
openRevision(revision) {
this.actionsManager.presentRevisionPreviewModal(
this.godService.presentRevisionPreviewModal(
revision.item.uuid,
revision.item.content
);
@@ -47,11 +45,11 @@ class SessionHistoryMenuCtrl {
}
clearItemHistory() {
this.alertManager.confirm({
this.application.alertManager.confirm({
text: "Are you sure you want to delete the local session history for this note?",
destructive: true,
onConfirm: () => {
this.sessionHistory.clearHistoryForItem(this.item).then(() => {
this.application.historyManager.clearHistoryForItem(this.item).then(() => {
this.$timeout(() => {
this.reloadHistory();
});
@@ -61,11 +59,11 @@ class SessionHistoryMenuCtrl {
}
clearAllHistory() {
this.alertManager.confirm({
this.application.alertManager.confirm({
text: "Are you sure you want to delete the local session history for all notes?",
destructive: true,
onConfirm: () => {
this.sessionHistory.clearAllHistory().then(() => {
this.application.historyManager.clearAllHistory().then(() => {
this.$timeout(() => {
this.reloadHistory();
});
@@ -76,14 +74,14 @@ class SessionHistoryMenuCtrl {
toggleDiskSaving() {
const run = () => {
this.sessionHistory.toggleDiskSaving().then(() => {
this.application.historyManager.toggleDiskSaving().then(() => {
this.$timeout(() => {
this.diskEnabled = this.sessionHistory.diskEnabled;
this.diskEnabled = this.application.historyManager.diskEnabled;
});
});
};
if (!this.sessionHistory.diskEnabled) {
this.alertManager.confirm({
if (!this.application.historyManager.diskEnabled) {
this.application.alertManager.confirm({
text: `Are you sure you want to save history to disk? This will decrease general
performance, especially as you type. You are advised to disable this feature
if you experience any lagging.`,
@@ -96,9 +94,9 @@ class SessionHistoryMenuCtrl {
}
toggleAutoOptimize() {
this.sessionHistory.toggleAutoOptimize().then(() => {
this.application.historyManager.toggleAutoOptimize().then(() => {
this.$timeout(() => {
this.autoOptimize = this.sessionHistory.autoOptimize;
this.autoOptimize = this.application.historyManager.autoOptimize;
});
});
}

View File

@@ -5,11 +5,11 @@ class SyncResolutionMenuCtrl {
constructor(
$timeout,
archiveManager,
syncManager,
application
) {
this.$timeout = $timeout;
this.archiveManager = archiveManager;
this.syncManager = syncManager;
this.application = application;
this.status = {};
}
@@ -24,11 +24,11 @@ class SyncResolutionMenuCtrl {
async performSyncResolution() {
this.status.resolving = true;
await this.syncManager.resolveOutOfSync();
await this.application.resolveOutOfSync();
this.$timeout(() => {
this.status.resolving = false;
this.status.attemptedResolution = true;
if (this.syncManager.isOutOfSync()) {
if (this.application.getSyncStatus().isOutOfSync()) {
this.status.fail = true;
} else {
this.status.success = true;