diff --git a/client/src/components/chat-messages-list/chat-message-list.styles.scss b/client/src/components/chat-messages-list/chat-message-list.styles.scss index 7e9a1a021..7677012a8 100644 --- a/client/src/components/chat-messages-list/chat-message-list.styles.scss +++ b/client/src/components/chat-messages-list/chat-message-list.styles.scss @@ -31,10 +31,10 @@ //display: inline-block; .message-img { - max-width: 33%; + max-width: 3rem; + max-height: 3rem; object-fit: contain; } - } .yours { diff --git a/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx b/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx index 9d68097fd..d0f70cea9 100644 --- a/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx +++ b/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx @@ -1,5 +1,5 @@ import React, { useState } from "react"; -import { QUERY_INVOICES_BY_VENDOR } from "../../graphql/invoices.queries"; +import { QUERY_INVOICES_BY_VENDOR_PAGINATED } from "../../graphql/invoices.queries"; import { useQuery } from "@apollo/react-hooks"; import queryString from "query-string"; import { useHistory, useLocation } from "react-router-dom"; @@ -13,11 +13,28 @@ import CurrencyFormatter from "../../utils/CurrencyFormatter"; export default function InvoicesByVendorList() { const search = queryString.parse(useLocation().search); const history = useHistory(); + const { page, sortcolumn, sortorder } = search; - const { loading, error, data } = useQuery(QUERY_INVOICES_BY_VENDOR, { - variables: { vendorId: search.vendorid }, - skip: !!!search.vendorid, - }); + const { loading, error, data } = useQuery( + QUERY_INVOICES_BY_VENDOR_PAGINATED, + { + variables: { + vendorId: search.vendorid, + offset: page ? (page - 1) * 25 : 0, + limit: 25, + order: [ + { + [sortcolumn || "date"]: sortorder + ? sortorder === "descend" + ? "desc" + : "asc" + : "desc", + }, + ], + }, + skip: !!!search.vendorid, + } + ); const { t } = useTranslation(); @@ -28,6 +45,10 @@ export default function InvoicesByVendorList() { const handleTableChange = (pagination, filters, sorter) => { setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + search.page = pagination.current; + search.sortcolumn = sorter.columnKey; + search.sortorder = sorter.order; + history.push({ search: queryString.stringify(search) }); }; const handleOnRowClick = (record) => { @@ -90,7 +111,7 @@ export default function InvoicesByVendorList() { ) : (data && data.invoices) || []; - if (error) return ; + if (error) return ; return ( { diff --git a/client/src/graphql/invoices.queries.js b/client/src/graphql/invoices.queries.js index 6d764d1bd..d2a765c3d 100644 --- a/client/src/graphql/invoices.queries.js +++ b/client/src/graphql/invoices.queries.js @@ -110,6 +110,36 @@ export const QUERY_INVOICES_BY_VENDOR = gql` } `; +export const QUERY_INVOICES_BY_VENDOR_PAGINATED = gql` + query QUERY_INVOICES_BY_VENDOR_PAGINATED( + $vendorId: uuid! + $offset: Int + $limit: Int + $order: [invoices_order_by!]! + ) { + invoices( + where: { vendorid: { _eq: $vendorId } } + offset: $offset + limit: $limit + order_by: $order + ) { + id + job { + id + ro_number + } + total + invoice_number + date + } + invoices_aggregate(where: { vendorid: { _eq: $vendorId } }) { + aggregate { + count(distinct: true) + } + } + } +`; + export const QUERY_INVOICE_BY_PK = gql` query QUERY_INVOICE_BY_PK($invoiceid: uuid!) { invoices_by_pk(id: $invoiceid) { diff --git a/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/down.yaml b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/down.yaml new file mode 100644 index 000000000..d4f9086a3 --- /dev/null +++ b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/down.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: invoices + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - date + - due_date + - exported + - exported_at + - federal_tax_rate + - id + - invoice_number + - is_credit_memo + - jobid + - local_tax_rate + - state_tax_rate + - total + - updated_at + - vendorid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: invoices + schema: public + type: create_select_permission diff --git a/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/up.yaml b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/up.yaml new file mode 100644 index 000000000..5e57c7e8f --- /dev/null +++ b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/up.yaml @@ -0,0 +1,41 @@ +- args: + role: user + table: + name: invoices + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: true + columns: + - created_at + - date + - due_date + - exported + - exported_at + - federal_tax_rate + - id + - invoice_number + - is_credit_memo + - jobid + - local_tax_rate + - state_tax_rate + - total + - updated_at + - vendorid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: invoices + schema: public + type: create_select_permission diff --git a/hasura/migrations/metadata.yaml b/hasura/migrations/metadata.yaml index d7f5263ff..3b47da12d 100644 --- a/hasura/migrations/metadata.yaml +++ b/hasura/migrations/metadata.yaml @@ -1474,6 +1474,7 @@ tables: _eq: X-Hasura-User-Id - active: _eq: true + allow_aggregations: true update_permissions: - role: user permission: diff --git a/server/sms/receive.js b/server/sms/receive.js index 9810e4d29..0b8c401f5 100644 --- a/server/sms/receive.js +++ b/server/sms/receive.js @@ -159,3 +159,7 @@ exports.receive = (req, res) => { // [0] MediaUrl0: 'https://api.twilio.com/2010-04-01/Accounts/AC6c09d337d6b9c68ab6488c2052bd457c/Messages/MM14fa2851ba26e0dc2b62073f8e7cdf27/Media/MEf129dd37979852f395eb29ffb126e19e', // [0] ApiVersion: '2010-04-01' // [0] } + + +// [0] MediaContentType0: 'image/jpeg', +// MediaContentType0: 'video/3gpp',