feat: save user processed markdown

This commit is contained in:
Joshua Shoemaker 2023-03-28 15:57:47 -05:00
parent 626dce13dc
commit b09e7c2db4
9 changed files with 111 additions and 2 deletions

View File

@ -20,6 +20,10 @@ func GetUserMarkdownCollection() *UserMarkdownCollection {
return userMarkdownCollection
}
func SetUserMarkdownCollection(collection UserMarkdownCollection) {
userMarkdownCollection = &collection
}
func (collection *UserMarkdownCollection) GetUserMarkdownByDocumentId(documentId string) *UserMarkdown {
var foundUserMarkdown *UserMarkdown

View File

@ -16,7 +16,7 @@ import {
import { ipc } from '../../wailsjs/wailsjs/go/models'
import { AddAreaProps, AreaProps, ProjectContextType, ProjectProps, UpdateDocumentRequest, UserProps } from './types'
import makeDefaultProject from './makeDefaultProject'
import { saveDocuments, saveGroups } from '../../useCases/saveData'
import { saveDocuments, saveGroups, saveUserProcessedMarkdown } from '../../useCases/saveData'
const ProjectContext = createContext<ProjectContextType>(makeDefaultProject())
@ -97,6 +97,7 @@ export function ProjectProvider({ children, projectProps }: Props) {
let response: ipc.UserMarkdown = new ipc.UserMarkdown()
try {
response = await RequestUpdateDocumentUserMarkdown(documentId, markdown)
await saveUserProcessedMarkdown()
} catch (err) {
console.error(err)
}

View File

@ -1,4 +1,4 @@
import { RequestSaveDocumentCollection, RequestSaveGroupCollection, RequestSaveProcessedTextCollection } from '../wailsjs/wailsjs/go/ipc/Channel'
import { RequestSaveDocumentCollection, RequestSaveGroupCollection, RequestSaveLocalUserProcessedMarkdownCollection, RequestSaveProcessedTextCollection } from '../wailsjs/wailsjs/go/ipc/Channel'
const saveDocuments = async () => {
try {
@ -27,8 +27,18 @@ const saveProcessedText = async () => {
}
}
const saveUserProcessedMarkdown = async () => {
try {
const sucessfulSave = await RequestSaveLocalUserProcessedMarkdownCollection()
if (!sucessfulSave) console.error('Could not save LocalUserProcessedMarkdownCollection')
} catch (err) {
console.error('Could not save LocalUserProcessedMarkdownCollection: ', err)
}
}
export {
saveDocuments,
saveGroups,
saveProcessedText,
saveUserProcessedMarkdown,
}

View File

@ -46,6 +46,8 @@ export function RequestSaveDocumentCollection():Promise<boolean>;
export function RequestSaveGroupCollection():Promise<boolean>;
export function RequestSaveLocalUserProcessedMarkdownCollection():Promise<boolean>;
export function RequestSaveProcessedTextCollection():Promise<boolean>;
export function RequestUpdateArea(arg1:ipc.Area):Promise<ipc.Area>;

View File

@ -90,6 +90,10 @@ export function RequestSaveGroupCollection() {
return window['go']['ipc']['Channel']['RequestSaveGroupCollection']();
}
export function RequestSaveLocalUserProcessedMarkdownCollection() {
return window['go']['ipc']['Channel']['RequestSaveLocalUserProcessedMarkdownCollection']();
}
export function RequestSaveProcessedTextCollection() {
return window['go']['ipc']['Channel']['RequestSaveProcessedTextCollection']();
}

View File

@ -525,3 +525,27 @@ func (c *Channel) RequestSaveProcessedTextCollection() bool {
successfulWrite := storage.WriteLocalProcessedAreaCollection(processedAreaCollectionToWrite, projectName)
return successfulWrite
}
func (c *Channel) RequestSaveLocalUserProcessedMarkdownCollection() bool {
userProcessedMarkdownCollection := document.GetUserMarkdownCollection()
projectName := c.GetCurrentSession().Project.Name
fullProject := storage.ReadLocalProjectByName(projectName)
if fullProject.Id == "" {
return false
}
var valuesToWrite []storage.LocalUserMarkdown
for _, v := range userProcessedMarkdownCollection.Values {
valuesToWrite = append(valuesToWrite, storage.LocalUserMarkdown(v))
}
successfulWrite := storage.WriteLocalUserProcessedMarkdownCollection(storage.LocalUserMarkdownCollection{
Values: valuesToWrite,
}, projectName)
return successfulWrite
}

View File

@ -272,6 +272,25 @@ func (c *Channel) RequestChangeSessionProjectByName(projectName string) bool {
Areas: newAreas,
})
// UserProcessedMarkdown
localUserProcessedMarkdown := storage.ReadLocalUserProcessedMarkdownCollection(projectName)
newUserProcessedMarkdown := make([]document.UserMarkdown, 0)
for _, v := range localUserProcessedMarkdown.Values {
newUserProcessedMarkdown = append(newUserProcessedMarkdown, document.UserMarkdown{
Id: v.Id,
DocumentId: v.DocumentId,
Value: v.Value,
})
}
document.SetUserMarkdownCollection(document.UserMarkdownCollection{
Values: newUserProcessedMarkdown,
})
// End UserProcessedMarkdown
return session.GetInstance().Project.Id == foundProject.Id
}

View File

@ -106,3 +106,13 @@ type LocalProcessedArea struct {
type LocalProcessedAreaCollection struct {
Areas []LocalProcessedArea
}
type LocalUserMarkdown struct {
Id string `json:"id"`
DocumentId string `json:"documentId"`
Value string `json:"value"`
}
type LocalUserMarkdownCollection struct {
Values []LocalUserMarkdown `json:"values"`
}

View File

@ -39,3 +39,38 @@ func ReadLocalProcessedAreaCollection(projectName string) LocalProcessedAreaColl
return response
}
func WriteLocalUserProcessedMarkdownCollection(userMarkdownCollection LocalUserMarkdownCollection, projectName string) bool {
file, _ := json.MarshalIndent(userMarkdownCollection, "", " ")
path := GetLocalStoragePath()
if path == "" {
return false
}
subdirectory := "/projects/" + projectName
isLocalStorageDirectoryCreated := createLocalStorageSubDirIfNeeded(subdirectory)
if !isLocalStorageDirectoryCreated {
return false
}
err := os.WriteFile(GetLocalStoragePath()+subdirectory+"/UserProcessedMarkdown.json", file, 0644)
return err == nil
}
func ReadLocalUserProcessedMarkdownCollection(projectName string) LocalUserMarkdownCollection {
file, err := os.ReadFile(GetLocalStoragePath() + "/projects/" + projectName + "/UserProcessedMarkdown.json")
if err != nil {
return LocalUserMarkdownCollection{}
}
response := LocalUserMarkdownCollection{}
errorUnmarshaling := json.Unmarshal([]byte(file), &response)
if errorUnmarshaling != nil {
return LocalUserMarkdownCollection{}
}
return response
}