diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index c81f440be..b2c21a157 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -5,6 +5,7 @@ const _ = require('lodash'); const createClass = require('create-react-class'); import {makePatches, applyPatches, stringifyPatches, parsePatches} from '@sanity/diff-match-patch'; import { md5 } from 'hash-wasm'; +import { gzipSync, strToU8 } from 'fflate'; import request from '../../utils/request-middleware.js'; const { Meta } = require('vitreum/headtags'); @@ -270,11 +271,15 @@ const EditPage = createClass({ //brew.text = undefined; - Temporary parallel path brew.textBin = undefined; + const compressedBrew = gzipSync(strToU8(JSON.stringify(brew))); + const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId); const params = `${transfer ? `?${this.state.saveGoogle ? 'saveToGoogle' : 'removeFromGoogle'}=true` : ''}`; const res = await request .put(`/api/update/${brew.editId}${params}`) - .send(brew) + .set('Content-Encoding', 'gzip') + .set('Content-Type', 'application/json') + .send(compressedBrew) .catch((err)=>{ console.log('Error Updating Local Brew'); this.setState({ error: err }); diff --git a/package-lock.json b/package-lock.json index 8fa722ac7..c6305a529 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "express": "^5.1.0", "express-async-handler": "^1.2.0", "express-static-gzip": "3.0.0", + "fflate": "^0.8.2", "fs-extra": "11.3.0", "hash-wasm": "^4.12.0", "idb-keyval": "^6.2.2", @@ -6650,6 +6651,11 @@ "node": "^12.20 || >= 14.13" } }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", diff --git a/package.json b/package.json index 71e892058..cb6ff04a4 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "express": "^5.1.0", "express-async-handler": "^1.2.0", "express-static-gzip": "3.0.0", + "fflate": "^0.8.2", "fs-extra": "11.3.0", "hash-wasm": "^4.12.0", "idb-keyval": "^6.2.2", diff --git a/scripts/project.json b/scripts/project.json index 340de077c..7385b674a 100644 --- a/scripts/project.json +++ b/scripts/project.json @@ -28,6 +28,7 @@ "codemirror/addon/hint/show-hint.js", "moment", "superagent", - "@sanity/diff-match-patch" + "@sanity/diff-match-patch", + "fflate" ] } diff --git a/server/homebrew.api.spec.js b/server/homebrew.api.spec.js index cb953f7e5..e6528bb9c 100644 --- a/server/homebrew.api.spec.js +++ b/server/homebrew.api.spec.js @@ -1056,7 +1056,7 @@ brew`); describe('updateBrew', ()=>{ it('should return error on version mismatch', async ()=>{ const brewFromClient = { version: 1 }; - const brewFromServer = { version: 1000 }; + const brewFromServer = { version: 1000, text: '' }; const req = { brew : brewFromServer,