p00002/components/commitToPDB.jsx
2024-09-07 07:52:09 -04:00

71 lines
1.8 KiB
JavaScript

import React, { useState } from "react";
import PouchDB from "pouchdb";
import { connect } from 'react-redux';
import { store } from "../redux/store";
import { useEffect } from "react";
function CommitToPouchDB(props) {
const project = props.projects.find(
(project) => project.projectId === props.selectedProjectId
);
const currentProject = project.projectName
// use selected project to commit
// please note project creation and management is done through project system administration web app
const projectLink = "http://192.168.0.234:5982/" + currentProject
// get latest version of the project from nosql database
console.log({projectLink})
const localTasksDB = new PouchDB({currentProject})
const remoteTasksDB = new PouchDB( {projectLink} , {
auth: {
username: "ditswbsclient",
password: "bluebeard",
},
});
const syncHandler = localTasksDB
.sync(remoteTasksDB, {
live: true,
retry: true,
})
.on("paused", (info) => {
console.log("Task replication paused");
})
.on("active", (info) => {
console.log("Task replication resumed");
})
.on("change", (change) => {
console.log("Task change detected");
});
const commitTasks = () => {
try {
const result = localTasksDB
.bulkDocs(props.tasks)
} catch (error) {
console.error("Error uploading new tasks to cloud: ", error);
}
return () => console.log('unmounting...');
}
useEffect(() => {
commitTasks();
}, []);
}
export default connect(mapStateToProps)(CommitToPouchDB);
function mapStateToProps(state) {
return {
tasks: state.tasksReducer.tasks,
selectedProjectId: state.projectsReducer.selectedProjectId,
projects: state.projectsReducer.projects,
};
}