diff --git a/client/src/components/bill-form/bill-form.component.jsx b/client/src/components/bill-form/bill-form.component.jsx index 7864d953b..2b67ce8cc 100644 --- a/client/src/components/bill-form/bill-form.component.jsx +++ b/client/src/components/bill-form/bill-form.component.jsx @@ -48,7 +48,6 @@ export function BillFormComponent({ setDiscount(opt.discount); }; - //TODO: Test this further. Required to set discount when viewing an invoice. useEffect(() => { if (form.getFieldValue("vendorid") && vendorAutoCompleteOptions) { const vendorId = form.getFieldValue("vendorid"); diff --git a/client/src/components/bill-form/bill-form.totals.utility.js b/client/src/components/bill-form/bill-form.totals.utility.js index e07812bf7..8189d3f7b 100644 --- a/client/src/components/bill-form/bill-form.totals.utility.js +++ b/client/src/components/bill-form/bill-form.totals.utility.js @@ -11,6 +11,7 @@ export const CalculateBillTotal = (invoice) => { local_tax_rate, state_tax_rate, } = invoice; + //TODO Determine why this recalculates so many times. let subtotal = Dinero({ amount: 0 }); let federalTax = Dinero({ amount: 0 }); diff --git a/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx b/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx index 207f50583..cf580bff5 100644 --- a/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx +++ b/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx @@ -120,7 +120,7 @@ export function ContractConvertToRo({ bodyshop, currentUser, contract }) { state_tax_rate: bodyshop.bill_tax_rates.state_tax_rate / 100, local_tax_rate: bodyshop.bill_tax_rates.local_tax_rate / 100, clm_no: `${contract.job.clm_no}-CC`, - clm_total: 1234, //TODO + clm_total: 1234, ownr_fn: contract.job.owner.ownr_fn, ownr_ln: contract.job.owner.ownr_ln, ownr_co_nm: contract.job.owner.ownr_co_nm, diff --git a/client/src/components/job-totals-table/job-totals.utility.js b/client/src/components/job-totals-table/job-totals.utility.js index 8d7ab40f6..ee9c0ce98 100644 --- a/client/src/components/job-totals-table/job-totals.utility.js +++ b/client/src/components/job-totals-table/job-totals.utility.js @@ -20,7 +20,6 @@ // .add(otherTotals.rates.subtotal) // .add(Dinero({ amount: (job.towing_payable || 0) * 100 })) // .add(Dinero({ amount: (job.storage_payable || 0) * 100 })); -// //TODO Levies should be included?? // const statePartsTax = job.joblines.reduce((acc, val) => { // if (!!!val.tax_part) return acc; @@ -227,7 +226,7 @@ // subtotal: acc.sublets.subtotal.add( // Dinero({ amount: Math.round(value.act_price * 100) }) // ), -// //TODO Add Adjustments in +// // }, // }; // // case "PAA": @@ -268,7 +267,7 @@ // value.part_qty // ) // ), -// //TODO Add Adjustments in +// // }, // }; // // default: @@ -305,7 +304,7 @@ // function CalculateCustPayable(job) { // let ret = { // deductible: Dinero({ amount: (job.ded_amt || 0) * 100 }) || 0, -// federal_tax: Dinero({ amount: (job.federal_tax_payable || 0) * 100 }), //TODO Should this be renamed to make it more clear this is customer GST? +// federal_tax: Dinero({ amount: (job.federal_tax_payable || 0) * 100 }), // other_customer_amount: Dinero({ // amount: (job.other_amount_payable || 0) * 100, // }), diff --git a/client/src/components/jobs-create-jobs-info/jobs-create-jobs-info.component.jsx b/client/src/components/jobs-create-jobs-info/jobs-create-jobs-info.component.jsx index 1345dbd24..11ead16eb 100644 --- a/client/src/components/jobs-create-jobs-info/jobs-create-jobs-info.component.jsx +++ b/client/src/components/jobs-create-jobs-info/jobs-create-jobs-info.component.jsx @@ -193,14 +193,6 @@ export function JobsCreateJobsInfo({ bodyshop, form, selected }) { - TODO How to handle different taxes and marking them as exempt? - { - // - // {getFieldDecorator("exempt", { - // initialValue: job.exempt - // })()} - // - } {job.ownr_ea || ""} - { - //TODO Should add an email formatter. - } @@ -56,9 +53,6 @@ export default function OwnerTagPopoverComponent({ job }) { {job.owner.ownr_ea || ""} - { - //TODO Should add an email formatter. - } diff --git a/client/src/components/print-center-item/print-center-item.component.jsx b/client/src/components/print-center-item/print-center-item.component.jsx index 1748ccedc..8730fe3ab 100644 --- a/client/src/components/print-center-item/print-center-item.component.jsx +++ b/client/src/components/print-center-item/print-center-item.component.jsx @@ -35,16 +35,16 @@ export function PrintCenterItemComponent({ displayTemplateInWindow(html); }; - if (disabled) return
  • {item.title}
  • ; + if (disabled) return
  • {item.title}
  • ; return ( -
  • +
  • {item.title} { setEmailOptions({ messageOptions: { - Subject: "//TODO FIX ME", + Subject: "", }, template: { name: item.key, diff --git a/client/src/components/production-list-columns/production-list-columns.data.js b/client/src/components/production-list-columns/production-list-columns.data.js index d8d6e6bfd..943069111 100644 --- a/client/src/components/production-list-columns/production-list-columns.data.js +++ b/client/src/components/production-list-columns/production-list-columns.data.js @@ -8,15 +8,12 @@ import { alphaSort } from "../../utils/sorters"; import ProductionSubletsManageComponent from "../production-sublets-manage/production-sublets-manage.component"; import ProductionListColumnAlert from "./production-list-columns.alert.component"; import ProductionListColumnBodyPriority from "./production-list-columns.bodypriority.component"; +import ProductionListDate from "./production-list-columns.date.component"; import ProductionListColumnPaintPriority from "./production-list-columns.paintpriority.component"; import ProductionListColumnNote from "./production-list-columns.productionnote.component"; -import ProductionListDate from "./production-list-columns.date.component"; import ProductionListColumnStatus from "./production-list-columns.status.component"; import ProductionlistColumnTouchTime from "./prodution-list-columns.touchtime.component"; -const OneCalendarDay = 60 * 60 * 24 * 1000; -const Now = new Date(); - const r = [ { title: i18n.t("jobs.actions.viewdetail"), diff --git a/client/src/components/production-list-columns/production-list-columns.date.component.jsx b/client/src/components/production-list-columns/production-list-columns.date.component.jsx index b455d2f5c..f4fe88cfd 100644 --- a/client/src/components/production-list-columns/production-list-columns.date.component.jsx +++ b/client/src/components/production-list-columns/production-list-columns.date.component.jsx @@ -1,19 +1,15 @@ -import { ExclamationCircleFilled } from "@ant-design/icons"; -import { DatePicker, Dropdown, Menu } from "antd"; -import React from "react"; -import { useTranslation } from "react-i18next"; import { useMutation } from "@apollo/react-hooks"; -import { UPDATE_JOB } from "../../graphql/jobs.queries"; -import { logImEXEvent } from "../../firebase/firebase.utils"; -import { DateFormatter } from "../../utils/DateFormatter"; +import { DatePicker, Dropdown } from "antd"; import moment from "moment"; +import React from "react"; +import { logImEXEvent } from "../../firebase/firebase.utils"; +import { UPDATE_JOB } from "../../graphql/jobs.queries"; +import { DateFormatter } from "../../utils/DateFormatter"; const OneCalendarDay = 60 * 60 * 24 * 1000; const Now = new Date(); export default function ProductionListDate({ record, field }) { - const { t } = useTranslation(); - const [updateAlert] = useMutation(UPDATE_JOB); const handleChange = (date) => { diff --git a/client/src/components/production-list-table/production-list-table.component.jsx b/client/src/components/production-list-table/production-list-table.component.jsx index 93d838f82..11d23084b 100644 --- a/client/src/components/production-list-table/production-list-table.component.jsx +++ b/client/src/components/production-list-table/production-list-table.component.jsx @@ -1,7 +1,7 @@ import { SyncOutlined } from "@ant-design/icons"; import { Button, Dropdown, Input, Menu, Table } from "antd"; import React, { useState } from "react"; -import ReactDragListView from "react-drag-listview"; //TODO Is there a better way? This library is too big. +import ReactDragListView from "react-drag-listview"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; @@ -170,14 +170,14 @@ export function ProductionListTable({ loading={loading} dataSource={dataSource} onChange={handleTableChange} - rowClassName={(record, index) => { - // const classes = []; //TODO What could be good usage here? - // if (!!record.scheduled_completion) { - // if (new Date(record.scheduled_completion) - Now < OneCalendarDay) - // classes.push("production-completion-1"); - // } - // return classes.join(" "); - }} + // rowClassName={(record, index) => { + // // const classes = []; + // // if (!!record.scheduled_completion) { + // // if (new Date(record.scheduled_completion) - Now < OneCalendarDay) + // // classes.push("production-completion-1"); + // // } + // // return classes.join(" "); + // }} /> diff --git a/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx index eb6723820..dc538c782 100644 --- a/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx +++ b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx @@ -78,7 +78,7 @@ export function ScheduleCalendarWrapperComponent({ bodyshop.schedule_start_time ? new Date(bodyshop.schedule_start_time) : new Date("2020-01-01T06:00:00") - } //TODO Read from business settings. + } max={ bodyshop.schedule_end_time ? new Date(bodyshop.schedule_end_time) diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx index bfc7fde7f..c208d43b3 100644 --- a/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx +++ b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx @@ -62,7 +62,6 @@ export function ScheduleJobModalComponent({ } }; - //TODO Existing appointments list only refreshes sometimes after modal close. May have to do with the container class. return ( diff --git a/client/src/components/shop-employees/shop-employees-form.component.jsx b/client/src/components/shop-employees/shop-employees-form.component.jsx index ab90cf249..491928f14 100644 --- a/client/src/components/shop-employees/shop-employees-form.component.jsx +++ b/client/src/components/shop-employees/shop-employees-form.component.jsx @@ -130,9 +130,7 @@ export function ShopEmployeesFormComponent({ > - { - //TODO Make this a picklist. - } + form.resetFields()); }) @@ -63,7 +63,7 @@ function ShopEmployeesContainer({ bodyshop }) { notification["success"]({ message: t("employees.successes.save"), }); - //TODO Better way to reset the field decorators? + employeeState[1](null); refetch().then((r) => form.resetFields()); }) @@ -84,7 +84,6 @@ function ShopEmployeesContainer({ bodyshop }) { notification["success"]({ message: t("employees.successes.save"), }); - //TODO Better way to reset the field decorators? employeeState[1](null); refetch().catch((error) => { notification["error"]({ diff --git a/client/src/components/shop-info/shop-info.intake.component.jsx b/client/src/components/shop-info/shop-info.intake.component.jsx index 78383e350..d53907020 100644 --- a/client/src/components/shop-info/shop-info.intake.component.jsx +++ b/client/src/components/shop-info/shop-info.intake.component.jsx @@ -12,7 +12,7 @@ const SelectorDiv = styled.div` width: 200px; } `; -//TODO Fix up styles. + export default function ShopInfoIntakeChecklistComponent({ form }) { const { t } = useTranslation(); diff --git a/client/src/components/shop-info/shop-info.orderstatus.component.jsx b/client/src/components/shop-info/shop-info.orderstatus.component.jsx index 81a6b66e3..8d7ca831c 100644 --- a/client/src/components/shop-info/shop-info.orderstatus.component.jsx +++ b/client/src/components/shop-info/shop-info.orderstatus.component.jsx @@ -3,7 +3,7 @@ import { Button, Form, Input, Select, Row, Col } from "antd"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component"; -//TODO Fix up styles. + export default function ShopInfoOrderStatusComponent({ form }) { const { t } = useTranslation(); diff --git a/client/src/components/shop-info/shop-info.rbac.component.jsx b/client/src/components/shop-info/shop-info.rbac.component.jsx index 3cc24227a..aeaa2970f 100644 --- a/client/src/components/shop-info/shop-info.rbac.component.jsx +++ b/client/src/components/shop-info/shop-info.rbac.component.jsx @@ -2,7 +2,6 @@ import { Form, InputNumber } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; import LayoutFormRow from "../layout-form-row/layout-form-row.component"; -//TODO Fix up styles. export default function ShopInfoRbacComponent({ form }) { const { t } = useTranslation(); diff --git a/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx b/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx index bff7b98f7..4c4c532bd 100644 --- a/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx +++ b/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx @@ -1,10 +1,10 @@ import { DeleteFilled } from "@ant-design/icons"; -import { Button, Form, Input, Select, InputNumber } from "antd"; +import { Button, Form, Input, InputNumber, Select } from "antd"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import styled from "styled-components"; import LayoutFormRow from "../layout-form-row/layout-form-row.component"; -//TODO Fix up styles. + const SelectorDiv = styled.div` .ant-form-item .ant-select { width: 125px; diff --git a/client/src/components/shop-info/shop-info.rostatus.component.jsx b/client/src/components/shop-info/shop-info.rostatus.component.jsx index 6f28f7af3..b8691763e 100644 --- a/client/src/components/shop-info/shop-info.rostatus.component.jsx +++ b/client/src/components/shop-info/shop-info.rostatus.component.jsx @@ -1,5 +1,5 @@ import { DeleteFilled } from "@ant-design/icons"; -import { Button, Form, Input, Select, Row, Col } from "antd"; +import { Button, Col, Form, Input, Row, Select } from "antd"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import styled from "styled-components"; @@ -9,7 +9,7 @@ const SelectorDiv = styled.div` width: 200px; } `; -//TODO Fix up styles. + export default function ShopInfoROStatusComponent({ form }) { const { t } = useTranslation(); diff --git a/client/src/components/shop-info/shop-info.scheduling.component.jsx b/client/src/components/shop-info/shop-info.scheduling.component.jsx index b3b23aa54..4dd8c5fb3 100644 --- a/client/src/components/shop-info/shop-info.scheduling.component.jsx +++ b/client/src/components/shop-info/shop-info.scheduling.component.jsx @@ -12,9 +12,9 @@ import { import React from "react"; import { useTranslation } from "react-i18next"; import ColorpickerFormItemComponent from "../form-items-formatted/colorpicker-form-item.component"; -//TODO Fix up styles. import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component"; + export default function ShopInfoSchedulingComponent({ form }) { const { t } = useTranslation(); diff --git a/client/src/components/shop-info/shop-info.speedprint.component.jsx b/client/src/components/shop-info/shop-info.speedprint.component.jsx index a983a0c75..df3bf9201 100644 --- a/client/src/components/shop-info/shop-info.speedprint.component.jsx +++ b/client/src/components/shop-info/shop-info.speedprint.component.jsx @@ -4,7 +4,6 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { TemplateList } from "../../utils/TemplateConstants"; import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component"; -//TODO Fix up styles. export default function ShopInfoSpeedPrint({ bodyshop, form }) { const { t } = useTranslation(); diff --git a/client/src/components/sign-in-form/sign-in-form.component.jsx b/client/src/components/sign-in-form/sign-in-form.component.jsx index 2797e3066..1e393d1b6 100644 --- a/client/src/components/sign-in-form/sign-in-form.component.jsx +++ b/client/src/components/sign-in-form/sign-in-form.component.jsx @@ -2,13 +2,11 @@ import { LockOutlined, UserOutlined } from "@ant-design/icons"; import { Button, Form, Input, Typography } from "antd"; import queryString from "query-string"; import React from "react"; -import { useApolloClient } from "react-apollo"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { Link, Redirect, useLocation } from "react-router-dom"; import { createStructuredSelector } from "reselect"; import ImEXOnlineLogo from "../../assets/logo192.png"; -import { UPSERT_USER } from "../../graphql/user.queries"; import { emailSignInStart, sendPasswordReset, @@ -38,7 +36,7 @@ export function SignInComponent({ sendPasswordReset, }) { const { redirect } = queryString.parse(useLocation().search); - const apolloClient = useApolloClient(); + const { t } = useTranslation(); const handleFinish = (values) => { const { email, password } = values; @@ -46,22 +44,6 @@ export function SignInComponent({ }; const [form] = Form.useForm(); - //TODO - may be able to run this only on new user creation. - if (currentUser.authorized === true) { - apolloClient - .mutate({ - mutation: UPSERT_USER, - variables: { - authEmail: currentUser.email, - authToken: currentUser.uid, - }, - }) - .then() - .catch((error) => { - console.log("User login upsert error.", error); - }); - } - if (currentUser.authorized === true) return ; diff --git a/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx b/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx index 4f65e318d..e91a3d05f 100644 --- a/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx +++ b/client/src/components/vehicle-detail-form/vehicle-detail-form.component.jsx @@ -136,7 +136,7 @@ export default function VehicleDetailFormComponent({ form, loading }) { { - //TODO Add handling for paint code json + //Removed as a part of IO-446. //No values have been captured in this field as of yet. // { form.resetFields(); @@ -74,7 +74,7 @@ function VendorsFormContainer({ refetch, bodyshop }) { notification["success"]({ message: t("vendors.successes.saved"), }); - //TODO Better way to reset the field decorators? + if (refetch) refetch().then(() => { form.resetFields(); @@ -99,7 +99,7 @@ function VendorsFormContainer({ refetch, bodyshop }) { notification["success"]({ message: t("vendors.successes.saved"), }); - //TODO Better way to reset the field decorators? + if (refetch) refetch(); form.resetFields(); setFormLoading(false); diff --git a/client/src/components/vendors-list/vendors-list.component.jsx b/client/src/components/vendors-list/vendors-list.component.jsx index 9410d0eb2..6fa9681a5 100644 --- a/client/src/components/vendors-list/vendors-list.component.jsx +++ b/client/src/components/vendors-list/vendors-list.component.jsx @@ -58,7 +58,6 @@ export default function VendorsListComponent({ setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); }; - //TODO Implement search return ( ); }} - size='small' + size="small" pagination={{ position: "top" }} columns={columns.map((item) => ({ ...item }))} - rowKey='id' + rowKey="id" onChange={handleTableChange} dataSource={vendors} rowSelection={{ diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index bd8b84eaa..70fd17c5d 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -837,7 +837,7 @@ export const SEARCH_FOR_JOBS = gql` } } `; -//TODO Ensure this is always up to date. + export const QUERY_ALL_JOB_FIELDS = gql` query QUERY_ALL_JOB_FIELDS($id: uuid!) { jobs_by_pk(id: $id) { diff --git a/client/src/pages/jobs-create/jobs-create.container.jsx b/client/src/pages/jobs-create/jobs-create.container.jsx index af75b898f..e0eb135aa 100644 --- a/client/src/pages/jobs-create/jobs-create.container.jsx +++ b/client/src/pages/jobs-create/jobs-create.container.jsx @@ -1,19 +1,19 @@ -import React, { useState, useEffect } from "react"; -import JobsCreateComponent from "./jobs-create.component"; +import { useLazyQuery, useMutation } from "@apollo/react-hooks"; import { Form, notification } from "antd"; -import JobCreateContext from "./jobs-create.context"; -import { useMutation, useLazyQuery } from "@apollo/react-hooks"; -import { INSERT_NEW_JOB } from "../../graphql/jobs.queries"; -import { QUERY_OWNER_FOR_JOB_CREATION } from "../../graphql/owners.queries"; +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; -import { selectBodyshop } from "../../redux/user/user.selectors"; -import { useTranslation } from "react-i18next"; +import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; +import { INSERT_NEW_JOB } from "../../graphql/jobs.queries"; +import { QUERY_OWNER_FOR_JOB_CREATION } from "../../graphql/owners.queries"; import { setBreadcrumbs, setSelectedHeader, } from "../../redux/application/application.actions"; -import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import JobsCreateComponent from "./jobs-create.component"; +import JobCreateContext from "./jobs-create.context"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -97,8 +97,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) { shopid: bodyshop.id, } ); - //TODO Logic to ensure the owner is actually fetched. - console.log("job", job); + let ownerData; if (!!!job.ownerid) { ownerData = job.owner.data; diff --git a/client/src/redux/messaging/messaging.sagas.js b/client/src/redux/messaging/messaging.sagas.js index c3db8d974..c96a30942 100644 --- a/client/src/redux/messaging/messaging.sagas.js +++ b/client/src/redux/messaging/messaging.sagas.js @@ -1,18 +1,18 @@ import axios from "axios"; import phone from "phone"; import { all, call, put, select, takeLatest } from "redux-saga/effects"; -import client from "../../utils/GraphQLClient"; import { logImEXEvent } from "../../firebase/firebase.utils"; import { CONVERSATION_ID_BY_PHONE, - CREATE_CONVERSATION, + CREATE_CONVERSATION } from "../../graphql/conversations.queries"; import { INSERT_CONVERSATION_TAG } from "../../graphql/job-conversations.queries"; +import client from "../../utils/GraphQLClient"; import { selectBodyshop } from "../user/user.selectors"; import { sendMessageFailure, sendMessageSuccess, - setSelectedConversation, + setSelectedConversation } from "./messaging.actions"; import MessagingActionTypes from "./messaging.types"; @@ -73,7 +73,7 @@ export function* openChatByPhone({ payload }) { }, }); } else { - console.log("ERROR: Multiple conversations found. "); //TODO Graceful handling of this situation + console.log("ERROR: Multiple conversations found. "); } } catch (error) { console.log("Error in sendMessage saga.", error); diff --git a/client/src/redux/user/user.sagas.js b/client/src/redux/user/user.sagas.js index c4e4553ed..933426172 100644 --- a/client/src/redux/user/user.sagas.js +++ b/client/src/redux/user/user.sagas.js @@ -10,6 +10,9 @@ import { } from "../../firebase/firebase.utils"; import { checkInstanceId, + sendPasswordResetFailure, + sendPasswordResetSuccess, + setAuthlevel, setInstanceConflict, setInstanceId, setLocalFingerprint, @@ -19,11 +22,8 @@ import { signOutSuccess, unauthorizedUser, updateUserDetailsSuccess, - sendPasswordResetFailure, - sendPasswordResetSuccess, - validatePasswordResetSuccess, validatePasswordResetFailure, - setAuthlevel, + validatePasswordResetSuccess, } from "./user.actions"; import UserActionTypes from "./user.types"; @@ -102,7 +102,6 @@ export function* updateUserDetails(userDetails) { yield put(updateUserDetailsSuccess(userDetails.payload)); } catch (error) { //yield put(signOutFailure(error.message)); - //TODO error handling } } export function* onSetInstanceId() { @@ -127,8 +126,6 @@ export function* setInstanceIdSaga({ payload: uid }) { if (process.env.NODE_ENV === "production") yield put(checkInstanceId(uid)); } catch (error) { console.log("error", error); - //yield put(signOutFailure(error.message)); - //TODO error handling } } @@ -152,7 +149,6 @@ export function* checkInstanceIdSaga({ payload: uid }) { } } catch (error) { console.log("error", error); - //TODO error handling } } diff --git a/firebase/functions/index.js b/firebase/functions/index.js index 779dc1893..f7abdb537 100644 --- a/firebase/functions/index.js +++ b/firebase/functions/index.js @@ -2,30 +2,6 @@ const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(functions.config().firebase); -// //TODO Move this to an environment parameter. -// const GRAPHQL_ENDPOINT = functions.config().auth.graphql_endpoint; -// const HASURA_SECRET_ADMIN_KEY = functions.config().auth.hasura_secret_admin_key; -// const UPSERT_USER = ` -// mutation upsert_user($authEmail: String!, $authToken: String!) { -// insert_users( -// objects: [ -// { -// email:$authEmail, -// authid:$authToken -// } -// ], -// on_conflict: { -// constraint: users_pkey, -// update_columns: [authid] -// } -// ) { -// returning { -// authid -// } -// } -// } -// `; - // On sign up. exports.processSignUp = functions.auth.user().onCreate((user) => { // Check if user meets role criteria: diff --git a/server/graphql-client/graphql-client.js b/server/graphql-client/graphql-client.js index 70c3f7a14..9495f6ec3 100644 --- a/server/graphql-client/graphql-client.js +++ b/server/graphql-client/graphql-client.js @@ -12,7 +12,6 @@ const { Headers } = require("cross-fetch"); global.Headers = global.Headers || Headers; -//TODO May need to use a different client that includes caching of resources. exports.client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, { headers: { "x-hasura-admin-secret": process.env.HASURA_ADMIN_SECRET, diff --git a/server/job/job-totals.js b/server/job/job-totals.js index 76f01a1e0..f152b6d87 100644 --- a/server/job/job-totals.js +++ b/server/job/job-totals.js @@ -220,7 +220,6 @@ function CalculateTaxesTotals(job, otherTotals) { .add(otherTotals.additional) .add(Dinero({ amount: (job.towing_payable || 0) * 100 })) .add(Dinero({ amount: (job.storage_payable || 0) * 100 })); - //TODO Levies should be included?? //Potential issue here with Sublet Calculation. Sublets are calculated under labor in Mitchell, but it's done in IO //Under the parts rates. diff --git a/server/sms/receive.js b/server/sms/receive.js index 9d7dab74d..71e617e4e 100644 --- a/server/sms/receive.js +++ b/server/sms/receive.js @@ -29,7 +29,6 @@ exports.receive = (req, res) => { phone: phone(req.body.From)[0], }) .then((response) => { - //TODO Add logic for handling MMS. let newMessage = { msid: req.body.SmsMessageSid, text: req.body.Body,