refactor: changes per PR feedback

This commit is contained in:
Antonella Sgarlatta
2021-05-07 19:17:57 -03:00
parent 3906b9a9b4
commit 8f29b62744
7 changed files with 78 additions and 102 deletions

View File

@@ -6,6 +6,7 @@ import {
SNNote,
NoteMutator,
ContentType,
SNTag,
} from '@standardnotes/snjs';
import {
makeObservable,
@@ -14,7 +15,6 @@ import {
computed,
runInAction,
} from 'mobx';
import { RefObject } from 'preact';
import { WebApplication } from '../application';
import { Editor } from '../editor';
@@ -46,6 +46,9 @@ export class NotesState {
setPinSelectedNotes: action,
setTrashSelectedNotes: action,
unselectNotes: action,
addTagToSelectedNotes: action,
removeTagFromSelectedNotes: action,
isTagInSelectedNotes: action,
});
appEventListeners.push(
@@ -204,10 +207,8 @@ export class NotesState {
},
false
);
runInAction(() => {
this.selectedNotes = {};
this.contextMenuOpen = false;
});
this.unselectNotes();
this.contextMenuOpen = false;
}
}
@@ -297,6 +298,42 @@ export class NotesState {
this.selectedNotes = {};
}
async addTagToSelectedNotes(tag: SNTag): Promise<void> {
const selectedNotes = Object.values(
this.application.getAppState().notes.selectedNotes
);
await this.application.changeItem(tag.uuid, (mutator) => {
for (const note of selectedNotes) {
mutator.addItemAsRelationship(note);
}
});
this.application.sync();
}
async removeTagFromSelectedNotes(tag: SNTag): Promise<void> {
const selectedNotes = Object.values(
this.application.getAppState().notes.selectedNotes
);
await this.application.changeItem(tag.uuid, (mutator) => {
for (const note of selectedNotes) {
mutator.removeItemAsRelationship(note);
}
});
this.application.sync();
}
isTagInSelectedNotes(tag: SNTag): boolean {
const selectedNotes = Object.values(
this.application.getAppState().notes.selectedNotes
);
return selectedNotes.every((note) =>
this.application
.getAppState()
.getNoteTags(note)
.find((noteTag) => noteTag.uuid === tag.uuid)
);
}
private get io() {
return this.application.io;
}

View File

@@ -1,5 +1,5 @@
import { ContentType, SNSmartTag, SNTag } from '@standardnotes/snjs';
import { action, computed, makeObservable, observable } from 'mobx';
import { computed, makeObservable, observable } from 'mobx';
import { WebApplication } from '../application';
export class TagsState {
@@ -15,10 +15,6 @@ export class TagsState {
smartTags: observable,
tagsCount: computed,
addTagToSelectedNotes: action,
removeTagFromSelectedNotes: action,
isTagInSelectedNotes: action,
});
appEventListeners.push(
@@ -34,45 +30,6 @@ export class TagsState {
);
}
async addTagToSelectedNotes(tag: SNTag): Promise<void> {
const selectedNotes = Object.values(
this.application.getAppState().notes.selectedNotes
);
await this.application.changeItem(tag.uuid, (mutator) => {
for (const note of selectedNotes) {
mutator.addItemAsRelationship(note);
}
});
this.application.sync();
}
async removeTagFromSelectedNotes(tag: SNTag): Promise<void> {
const selectedNotes = Object.values(
this.application.getAppState().notes.selectedNotes
);
await Promise.all(
selectedNotes.map(
async (note) =>
await this.application.changeItem(tag.uuid, (mutator) => {
mutator.removeItemAsRelationship(note);
})
)
);
this.application.sync();
}
isTagInSelectedNotes(tag: SNTag): boolean {
const selectedNotes = Object.values(
this.application.getAppState().notes.selectedNotes
);
return selectedNotes.every((note) =>
this.application
.getAppState()
.getNoteTags(note)
.find((noteTag) => noteTag.uuid === tag.uuid)
);
}
get tagsCount(): number {
return this.tags.length;
}