Compare commits

...

2 Commits

Author SHA1 Message Date
Max G
196224d0b8 Bug fixes and encryption handling 2020-03-14 06:04:03 +00:00
Max G
795f1b7d76 Pressing enter in a note title moves cursor to end of note. 2020-03-14 02:09:43 +00:00
4 changed files with 32 additions and 16 deletions

View File

@ -45,7 +45,7 @@
ref="titleTextarea" ref="titleTextarea"
v-on:keyup="titleResize" v-on:keyup="titleResize"
v-on:keydown="titleResize" v-on:keydown="titleResize"
@keydown.enter.exact.prevent="editor.focus()" @keydown.enter.exact.prevent="editor.focus(); editor.moveCursorToEnd()"
rows="1" rows="1"
:style="{ 'background-color':styleObject['noteBackground'], 'color':styleObject['noteText']}" :style="{ 'background-color':styleObject['noteBackground'], 'color':styleObject['noteText']}"
v-on:blur="save" type="text" v-model="noteTitle" placeholder="Title" class="stealth-input"> v-on:blur="save" type="text" v-model="noteTitle" placeholder="Title" class="stealth-input">
@ -59,7 +59,7 @@
<h3 class="ui center aligned icon header"> <h3 class="ui center aligned icon header">
<i class="green lock alternate icon"></i> <i class="green lock alternate icon"></i>
<span v-if="!lockedOut" :data-tooltip="`Unlock Attempts: ${decryptAttempts}`"> <span v-if="!lockedOut">
This note is encrypted and requires a password to be opened. This note is encrypted and requires a password to be opened.
</span> </span>
@ -860,7 +860,10 @@
this.created = response.data.created this.created = response.data.created
this.updated = response.data.updated this.updated = response.data.updated
this.noteTitle = ''
if(response.data.title){
this.noteTitle = response.data.title this.noteTitle = response.data.title
}
this.noteText = response.data.text this.noteText = response.data.text
this.diffNoteText = response.data.text this.diffNoteText = response.data.text
@ -911,6 +914,8 @@
}, },
diffText(){ diffText(){
return
// dont emit to one user // dont emit to one user
if(this.usersOnNote <= 1){ if(this.usersOnNote <= 1){
return return
@ -959,7 +964,7 @@
}, },
patchText(patch_text){ patchText(patch_text){
console.log(patch_text) return
// //
// Capture x,y of caret and position into string // Capture x,y of caret and position into string
@ -967,10 +972,10 @@
let currentSelection = this.editor.getSelection() let currentSelection = this.editor.getSelection()
let lineText = currentSelection.startContainer.textContent let lineText = currentSelection.startContainer.textContent
console.log(lineText) // console.log(lineText)
let cursorOffset = parseInt(currentSelection.startOffset) //number of characters in let cursorOffset = parseInt(currentSelection.startOffset) //number of characters in
let path = this.xpath(currentSelection.commonAncestorContainer.parentElement) let path = this.xpath(currentSelection.commonAncestorContainer.parentElement)
console.log(path) // console.log(path)
// //
@ -979,21 +984,21 @@
let currentText = this.editor._getHTML() let currentText = this.editor._getHTML()
const startingLines = (currentText.match(/<br>/g) || '').length + 1 const startingLines = (currentText.match(/<br>/g) || '').length + 1
console.log('1') // console.log('1')
const dmp = new DiffMatchPatch.diff_match_patch() const dmp = new DiffMatchPatch.diff_match_patch()
var patches = dmp.patch_fromText(patch_text); var patches = dmp.patch_fromText(patch_text);
var results = dmp.patch_apply(patches, currentText); var results = dmp.patch_apply(patches, currentText);
let newText = results[0] let newText = results[0]
console.log('2') // console.log('2')
this.noteText = newText this.noteText = newText
this.diffNoteText = newText this.diffNoteText = newText
console.log('3') // console.log('3')
// this.editor._setHTML(newText) // this.editor._setHTML(newText)
this.editor.setHTML(newText) this.editor.setHTML(newText)
console.log('4') // console.log('4')
// //
// I user hasn't selected the document, we are done here // I user hasn't selected the document, we are done here
@ -1041,14 +1046,14 @@
} }
} }
console.log('Targeting Node') // console.log('Targeting Node')
console.log(node) // console.log(node)
//Create and set range //Create and set range
let squireRange = this.editor.createRange(node, cursorOffset) let squireRange = this.editor.createRange(node, cursorOffset)
squireRange.collapse(true) squireRange.collapse(true)
this.editor.setSelection(squireRange) this.editor.setSelection(squireRange)
console.log('cursor set') // console.log('cursor set')
}, 20) }, 20)
// } // }

View File

@ -59,6 +59,7 @@
<h2 v-if="fastFilters['withTags'] == 1">Notes with Tags</h2> <h2 v-if="fastFilters['withTags'] == 1">Notes with Tags</h2>
<h2 v-if="fastFilters['onlyArchived'] == 1">Archived Notes</h2> <h2 v-if="fastFilters['onlyArchived'] == 1">Archived Notes</h2>
<h2 v-if="fastFilters['onlyShowSharedNotes'] == 1">Shared Notes</h2> <h2 v-if="fastFilters['onlyShowSharedNotes'] == 1">Shared Notes</h2>
<h2 v-if="fastFilters['onlyShowEncrypted'] == 1">Password Protected Notes</h2>
<!-- tags section --> <!-- tags section -->
<div v-if="commonTags.length > 0" class="sixteen wide column"> <div v-if="commonTags.length > 0" class="sixteen wide column">
@ -184,7 +185,8 @@
'shared': ['envelope outline', 'Received Notes'], 'shared': ['envelope outline', 'Received Notes'],
'sent': ['paper plane outline', 'Shared Notes'], 'sent': ['paper plane outline', 'Shared Notes'],
'notes': ['file','Notes'], 'notes': ['file','Notes'],
'highlights': ['paragraph', 'Found In Text'] 'highlights': ['paragraph', 'Found In Text'],
'locked': ['lock', 'Password Protected']
}, },
noteSections: { noteSections: {
pinned: [], pinned: [],
@ -193,6 +195,7 @@
sent:[], sent:[],
notes: [], notes: [],
highlights: [], highlights: [],
locked: []
}, },
} }
@ -599,6 +602,10 @@
this.noteSections.sent.push(note) this.noteSections.sent.push(note)
return return
} }
if(note.encrypted == 1 && this.fastFilters.onlyShowEncrypted == 1){
this.noteSections.locked.push(note)
return
}
if(note.note_highlights.length > 0){ if(note.note_highlights.length > 0){
this.noteSections.highlights.push(note) this.noteSections.highlights.push(note)
return return

View File

@ -436,7 +436,6 @@ Note.get = (userId, noteId, password = '') => {
//To many attempts in less than 5 minutes, note is locked //To many attempts in less than 5 minutes, note is locked
if(noteData.decrypt_attempts_count > 3 && timeSinceLastUnlock < 300){ if(noteData.decrypt_attempts_count > 3 && timeSinceLastUnlock < 300){
console.log('Locked Out')
noteLockedOut = true noteLockedOut = true
} }
@ -444,7 +443,6 @@ Note.get = (userId, noteId, password = '') => {
if(noteData.decrypt_attempts_count > 0 && timeSinceLastUnlock > 300){ if(noteData.decrypt_attempts_count > 0 && timeSinceLastUnlock > 300){
noteLockedOut = false noteLockedOut = false
noteData.decrypt_attempts_count = 0 noteData.decrypt_attempts_count = 0
console.log('Resseting Lockout')
db.promise().query('UPDATE note_raw_text SET last_decrypted_date = ?, decrypt_attempts_count = 0 WHERE id = ?', [nowTime, rawTextId ]) db.promise().query('UPDATE note_raw_text SET last_decrypted_date = ?, decrypt_attempts_count = 0 WHERE id = ?', [nowTime, rawTextId ])
} }
} }
@ -628,8 +626,10 @@ Note.search = (userId, searchQuery, searchTags, fastFilters) => {
searchAllNotes = true searchAllNotes = true
} }
//Encrypted Note
if(fastFilters.onlyShowEncrypted == 1){ if(fastFilters.onlyShowEncrypted == 1){
noteSearchQuery += ' AND encrypted = 1' noteSearchQuery += ' AND encrypted = 1'
searchAllNotes = true
} }
//If tags are passed, use those tags in search //If tags are passed, use those tags in search

View File

@ -23,6 +23,10 @@ Tag.userTags = (userId, searchQuery, searchTags, fastFilters) => {
query += ' AND note.share_user_id IS NULL' query += ' AND note.share_user_id IS NULL'
} }
if(fastFilters && fastFilters.onlyShowEncrypted == 1){
query += ' AND note.encrypted = 1' //Show Archived
}
//Show archived notes, only if fast filter is set, default to not archived //Show archived notes, only if fast filter is set, default to not archived
if(fastFilters && fastFilters.onlyArchived == 1){ if(fastFilters && fastFilters.onlyArchived == 1){
query += ' AND note.archived = 1' //Show Archived query += ' AND note.archived = 1' //Show Archived