From 8b7a7192a495ed9335224af2c9360a906adb599b Mon Sep 17 00:00:00 2001 From: Sid Pranjale Date: Sat, 26 Nov 2022 15:41:55 +0530 Subject: [PATCH] Initial EDOMH integration --- package-lock.json | 38 ++++++++------ package.json | 1 + src/app/components/ModalShoppingList.jsx | 63 +++++++++++++++++++++++- src/app/i18n/cn.json | 1 + src/app/i18n/en.json | 1 + src/app/i18n/ko.json | 1 + src/app/i18n/pt.json | 1 + src/app/i18n/ru.json | 1 + 8 files changed, 90 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 24fb2343..69919d28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@babel/polyfill": "^7.0.0", "auto-bind": "^5.0.1", + "base64url": "^3.0.1", "browserify-zlib-next": "^1.0.1", "classnames": "^2.2.6", "coriolis-data": "../coriolis-data", @@ -3822,6 +3823,14 @@ } ] }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -22389,8 +22398,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-walk": { "version": "6.2.0", @@ -22414,15 +22422,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-colors": { "version": "3.2.4", @@ -22733,8 +22739,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/appcache-webpack-plugin/-/appcache-webpack-plugin-1.4.0.tgz", "integrity": "sha512-QA0D+3yJmpPk0CyfxYMOzhzV941rkTSjCnUEy2vS05GeqK+mMnBScQSB23lstvzYaFpkeWeLMO9RamtafhliYw==", - "dev": true, - "requires": {} + "dev": true }, "append-transform": { "version": "0.4.0", @@ -23055,8 +23060,7 @@ "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true, - "requires": {} + "dev": true }, "babel-eslint": { "version": "10.1.0", @@ -23432,6 +23436,11 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -26317,8 +26326,7 @@ "version": "0.7.5", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.5.tgz", "integrity": "sha512-iPowgKUZkTPX5PznYsmifVj9Bob0w2wTHVkt/eYNPSzyebkUgIedmskf/kcfEIWpiWjg3JRjnW+a17XypySMuw==", - "dev": true, - "requires": {} + "dev": true }, "express": { "version": "4.18.2", @@ -32136,8 +32144,7 @@ "react-clickdrag": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/react-clickdrag/-/react-clickdrag-3.0.2.tgz", - "integrity": "sha512-AqJ6QJDF0JnPpkXIfJsIl7yRa22JbfYDFc7GMhPcie5jiDEHBxjDwEkO+88T0hI4Rix38dflXtfVl+lkGYs1Fg==", - "requires": {} + "integrity": "sha512-AqJ6QJDF0JnPpkXIfJsIl7yRa22JbfYDFc7GMhPcie5jiDEHBxjDwEkO+88T0hI4Rix38dflXtfVl+lkGYs1Fg==" }, "react-container-dimensions": { "version": "1.4.1", @@ -32175,8 +32182,7 @@ "react-ga": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-2.7.0.tgz", - "integrity": "sha512-AjC7UOZMvygrWTc2hKxTDvlMXEtbmA0IgJjmkhgmQQ3RkXrWR11xEagLGFGaNyaPnmg24oaIiaNPnEoftUhfXA==", - "requires": {} + "integrity": "sha512-AjC7UOZMvygrWTc2hKxTDvlMXEtbmA0IgJjmkhgmQQ3RkXrWR11xEagLGFGaNyaPnmg24oaIiaNPnEoftUhfXA==" }, "react-is": { "version": "16.13.1", diff --git a/package.json b/package.json index 759fc900..b9aff4d9 100644 --- a/package.json +++ b/package.json @@ -124,6 +124,7 @@ "dependencies": { "@babel/polyfill": "^7.0.0", "auto-bind": "^5.0.1", + "base64url": "^3.0.1", "browserify-zlib-next": "^1.0.1", "classnames": "^2.2.6", "coriolis-data": "../coriolis-data", diff --git a/src/app/components/ModalShoppingList.jsx b/src/app/components/ModalShoppingList.jsx index edf08d5c..dfa02d74 100644 --- a/src/app/components/ModalShoppingList.jsx +++ b/src/app/components/ModalShoppingList.jsx @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import TranslatedComponent from './TranslatedComponent'; import request from 'superagent'; import Persist from '../stores/Persist'; +const zlib = require('zlib'); +const base64url = require('base64url'); /** * Permalink modal @@ -56,7 +58,6 @@ export default class ModalShoppingList extends TranslatedComponent { continue; } if (module.m.blueprint.special) { - console.log(module.m.blueprint.special); blueprints.push({ uuid: module.m.blueprint.special.uuid, number: 1 }); } for (const g in module.m.blueprint.grades) { @@ -146,6 +147,64 @@ export default class ModalShoppingList extends TranslatedComponent { } } + /** + * Send all blueprints to EDOMH. This is a modified copy of registerBPs because this.state.blueprints was empty when I tried to modify sendToEDEng and I couldn't figure out why + * @param {Event} event React event + */ + sendToEDOMH(event) { + event.preventDefault(); + const ship = this.props.ship; + let blueprints = []; + + //create the json + for (const module of ship.costList) { + if (module.type === 'SHIP') { + continue; + } + if (module.m && module.m.blueprint) { + if (!module.m.blueprint.grade || !module.m.blueprint.grades) { + continue; + } + if (module.m.blueprint.special) { + blueprints.push({ + "item": module.m.symbol, + "blueprint": module.m.blueprint.special.edname + }); + } + for (const g in module.m.blueprint.grades) { + if (!module.m.blueprint.grades.hasOwnProperty(g)) { + continue; + } + if (g < module.m.blueprint.grade) { + continue; + } + blueprints.push({ + "item": module.m.symbol, + "blueprint": module.m.blueprint.fdname, + "grade": module.m.blueprint.grade, + "highestGradePercentage":1.0 + }); + } + } + } + + //create JSON to encode + let baseJson = { + "version":1, + "name":ship.name, // TO-DO: Import build name and put that here correctly + "items": blueprints + } + + let JSONString = JSON.stringify(baseJson) + let deflated = zlib.deflateSync(JSONString) + + //actually encode + let link = base64url.encode(deflated) + link = "edomh://coriolis/?" + link; + + window.open(link, "_self") + } + /** * Convert mats object to string */ @@ -239,6 +298,7 @@ export default class ModalShoppingList extends TranslatedComponent { const compatible = this.checkBrowserIsCompatible(); this.cmdrChangeHandler = this.cmdrChangeHandler.bind(this); this.sendToEDEng = this.sendToEDEng.bind(this); + this.sendToEDOMH = this.sendToEDOMH.bind(this); return
e.stopPropagation() }>

{translate('PHRASE_SHOPPING_MATS')}

@@ -267,6 +327,7 @@ export default class ModalShoppingList extends TranslatedComponent { +
; } diff --git a/src/app/i18n/cn.json b/src/app/i18n/cn.json index dcafd813..783cda70 100644 --- a/src/app/i18n/cn.json +++ b/src/app/i18n/cn.json @@ -398,6 +398,7 @@ "No modded components.": "没有改装的部件", "Sending...": "发送中...", "Send to EDEngineer": "发送至EDEngineer", + "Send to EDOMH": "发送至EDOMH", "PHASE_UPLOAD_ORBIS": "上传到orbis.zone(测试阶段)", "orbis username": "orbis.zone的Email或用户名", "orbis password": "orbis.zone的密码", diff --git a/src/app/i18n/en.json b/src/app/i18n/en.json index a67158a8..00f1fe17 100644 --- a/src/app/i18n/en.json +++ b/src/app/i18n/en.json @@ -159,6 +159,7 @@ "tp": "Torpedo Pylon", "ul": "Burst Laser", "Send To EDEngineer": "Send To EDEngineer", + "Send To EDOMH": "Send To EDOMH", "ws": "Frame Shift Wake Scanner", "rpl": "Repair Limpet Controller", "rcpl": "Recon Limpet Controller", diff --git a/src/app/i18n/ko.json b/src/app/i18n/ko.json index 208124e7..07442a6a 100644 --- a/src/app/i18n/ko.json +++ b/src/app/i18n/ko.json @@ -159,6 +159,7 @@ "tp": "어뢰관", "ul": "버스트 레이저", "Send To EDEngineer": "EDEngineer에 전송", + "Send To EDOMH": "EDOMH에 전송", "ws": "프레임 시프트 흔적 스캐너", "rpl": "수리용 림펫 컨트롤러", "rcpl": "정찰용 림펫 컨트롤러", diff --git a/src/app/i18n/pt.json b/src/app/i18n/pt.json index d7d93f38..c5a87056 100644 --- a/src/app/i18n/pt.json +++ b/src/app/i18n/pt.json @@ -403,6 +403,7 @@ "No modded components.": "Nenhum componente modificado.", "Sending...": "Enviando...", "Send to EDEngineer": "Enviar para EDEngineer", + "Send to EDOMH": "Enviar para EDOMH", "PHRASE_UPLOAD_ORBIS": "Enviar para orbis.zone (Período trial.)", "orbis username": "Usuário/email para orbis.zone", "orbis password": "Senha para orbis.zone", diff --git a/src/app/i18n/ru.json b/src/app/i18n/ru.json index e0e60d81..4b6ae8f2 100644 --- a/src/app/i18n/ru.json +++ b/src/app/i18n/ru.json @@ -159,6 +159,7 @@ "tp": "Торпедная стойка", "ul": "Пульсирующие лазеры", "Send To EDEngineer": "Отправить в EDEngineer", + "Send To EDOMH": "Отправить в EDOMH", "ws": "Сканер следа FSD", "rpl": "Дроны-ремонтники", "rcpl": "Дроны-разведчики",