
* refact: generalized back end structs * refact: fixed front end type, removed dead code * removed test image folder * refact: removed dead structs
79 lines
2.6 KiB
TypeScript
79 lines
2.6 KiB
TypeScript
import { saveGroups } from '../../useCases/saveData'
|
|
import { RequestAddDocument, RequestAddDocumentGroup, RequestChangeGroupOrder, RequestDeleteDocumentAndChildren, RequestUpdateDocument, RequestUpdateProcessedWordById } from '../../wailsjs/wailsjs/go/ipc/Channel'
|
|
import { ipc, entities } from '../../wailsjs/wailsjs/go/models'
|
|
import { UpdateDocumentRequest } from './types'
|
|
|
|
type Dependencies = {
|
|
selectedDocumentId: string
|
|
documents: entities.Document[]
|
|
saveDocuments: () => Promise<void>
|
|
updateDocuments: () => Promise<ipc.GetDocumentsResponse>
|
|
groups: entities.Group[]
|
|
}
|
|
|
|
const createDocumentProviderMethods = (dependencies: Dependencies) => {
|
|
const { selectedDocumentId, documents, saveDocuments, updateDocuments, groups } = dependencies
|
|
|
|
const getGroupById = (groupId: string): entities.Group | undefined => (
|
|
groups.find(g => g.id === groupId)
|
|
)
|
|
|
|
const getSelectedDocument = () => documents.find(d => d.id === selectedDocumentId)
|
|
|
|
const requestAddDocument = async (groupId: string, documentName: string) => {
|
|
const response = await RequestAddDocument(groupId, documentName)
|
|
if (response.id) await updateDocuments()
|
|
saveDocuments()
|
|
return response
|
|
}
|
|
|
|
const requestDeleteDocumentById = async (documentId: string): Promise<boolean> => {
|
|
const wasSuccessfulDeletion = await RequestDeleteDocumentAndChildren(documentId)
|
|
updateDocuments()
|
|
saveDocuments()
|
|
return wasSuccessfulDeletion
|
|
}
|
|
|
|
const requestAddDocumentGroup = async (groupName: string) => {
|
|
const response = await RequestAddDocumentGroup(groupName)
|
|
if (response.id) await updateDocuments()
|
|
saveGroups()
|
|
return response
|
|
}
|
|
|
|
const requestUpdateDocument = async (documentProps: UpdateDocumentRequest) => {
|
|
const response = await RequestUpdateDocument(new entities.Document(documentProps))
|
|
await updateDocuments()
|
|
saveDocuments()
|
|
return response
|
|
}
|
|
|
|
const requestChangeGroupOrder = async (groupId: string, newOrder: number) => {
|
|
const response = await RequestChangeGroupOrder(groupId, newOrder)
|
|
console.log('should be at ', newOrder)
|
|
console.log(response)
|
|
await updateDocuments()
|
|
saveGroups()
|
|
return response
|
|
}
|
|
|
|
|
|
const requestUpdateProcessedWordById = async (wordId: string, newTextValue: string) => {
|
|
const successfulResponse = await RequestUpdateProcessedWordById(wordId, newTextValue)
|
|
return successfulResponse
|
|
}
|
|
|
|
return {
|
|
getGroupById,
|
|
getSelectedDocument,
|
|
requestAddDocument,
|
|
requestDeleteDocumentById,
|
|
requestAddDocumentGroup,
|
|
requestUpdateDocument,
|
|
requestChangeGroupOrder,
|
|
requestUpdateProcessedWordById,
|
|
}
|
|
}
|
|
|
|
export default createDocumentProviderMethods
|