mirror of https://github.com/Fabio286/antares.git
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import * as Store from 'electron-store';
|
|
import { defineStore } from 'pinia';
|
|
|
|
export type TagCode = 'all' | 'note' | 'todo' | 'query'
|
|
|
|
export interface ConnectionNote {
|
|
uid: string;
|
|
cUid: string | null;
|
|
title?: string;
|
|
isArchived: boolean;
|
|
type: TagCode;
|
|
note: string;
|
|
date: Date;
|
|
}
|
|
|
|
const persistentStore = new Store({ name: 'notes' });
|
|
|
|
// Migrate old scratchpad on new notes TODO: remove in future releases
|
|
const oldNotes = persistentStore.get('notes') as string;
|
|
if (oldNotes) {
|
|
const newNotes = persistentStore.get('connectionNotes', []) as ConnectionNote[];
|
|
newNotes.unshift({
|
|
uid: 'N:LEGACY',
|
|
cUid: null,
|
|
isArchived: false,
|
|
type: 'note',
|
|
note: oldNotes,
|
|
date: new Date()
|
|
});
|
|
|
|
persistentStore.delete('notes');
|
|
|
|
persistentStore.set('connectionNotes', newNotes);
|
|
}
|
|
|
|
export const useScratchpadStore = defineStore('scratchpad', {
|
|
state: () => ({
|
|
selectedTag: 'all',
|
|
/** Connection specific notes */
|
|
connectionNotes: persistentStore.get('connectionNotes', []) as ConnectionNote[]
|
|
}),
|
|
actions: {
|
|
changeNotes (notes: ConnectionNote[]) {
|
|
this.connectionNotes = notes;
|
|
persistentStore.set('connectionNotes', this.connectionNotes);
|
|
},
|
|
addNote (note: ConnectionNote) {
|
|
this.connectionNotes = [
|
|
note,
|
|
...this.connectionNotes
|
|
];
|
|
persistentStore.set('connectionNotes', this.connectionNotes);
|
|
},
|
|
editNote (note: ConnectionNote) {
|
|
this.connectionNotes = (this.connectionNotes as ConnectionNote[]).map(n => {
|
|
if (n.uid === note.uid)
|
|
n = note;
|
|
|
|
return n;
|
|
});
|
|
persistentStore.set('connectionNotes', this.connectionNotes);
|
|
}
|
|
}
|
|
});
|