@webiny/app-mailer 0.0.0-ee-vpcs.549378cf03
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +22 -0
- package/hooks/usePermission.d.ts +3 -0
- package/hooks/usePermission.js +26 -0
- package/hooks/usePermission.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +13 -0
- package/index.js.map +1 -0
- package/package.json +59 -0
- package/plugins/Module.d.ts +2 -0
- package/plugins/Module.js +77 -0
- package/plugins/Module.js.map +1 -0
- package/types.d.ts +41 -0
- package/types.js +5 -0
- package/types.js.map +1 -0
- package/views/settings/Settings.d.ts +2 -0
- package/views/settings/Settings.js +252 -0
- package/views/settings/Settings.js.map +1 -0
- package/views/settings/graphql.d.ts +24 -0
- package/views/settings/graphql.js +21 -0
- package/views/settings/graphql.js.map +1 -0
- package/views/settings/index.d.ts +2 -0
- package/views/settings/index.js +11 -0
- package/views/settings/index.js.map +1 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Webiny
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# @webiny/app-mailer
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@webiny/app-mailer)
|
|
4
|
+
[](https://www.npmjs.com/package/@webiny/app-mailer)
|
|
5
|
+
[](https://github.com/prettier/prettier)
|
|
6
|
+
[](http://makeapullrequest.com)
|
|
7
|
+
|
|
8
|
+
An app for changing the mailer settings.
|
|
9
|
+
|
|
10
|
+
Use together with [@webiny/api-mailer](../api-mailer) package.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
npm install --save @webiny/app-mailer
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or if you prefer yarn:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
yarn add @webiny/app-mailer
|
|
22
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.usePermission = void 0;
|
|
7
|
+
|
|
8
|
+
var _appSecurity = require("@webiny/app-security");
|
|
9
|
+
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
12
|
+
var usePermission = function usePermission() {
|
|
13
|
+
var _useSecurity = (0, _appSecurity.useSecurity)(),
|
|
14
|
+
identity = _useSecurity.identity,
|
|
15
|
+
getPermission = _useSecurity.getPermission;
|
|
16
|
+
|
|
17
|
+
var canChangeSettings = (0, _react.useCallback)(function () {
|
|
18
|
+
var permission = getPermission("mailer.settings");
|
|
19
|
+
return !!permission;
|
|
20
|
+
}, [identity]);
|
|
21
|
+
return {
|
|
22
|
+
canChangeSettings: canChangeSettings
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.usePermission = usePermission;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["usePermission","useSecurity","identity","getPermission","canChangeSettings","useCallback","permission"],"sources":["usePermission.ts"],"sourcesContent":["import { useSecurity } from \"@webiny/app-security\";\nimport { useCallback } from \"react\";\nimport { MailerSecurityPermission } from \"~/types\";\n\nexport const usePermission = () => {\n const { identity, getPermission } = useSecurity();\n\n const canChangeSettings = useCallback((): boolean => {\n const permission = getPermission<MailerSecurityPermission>(\"mailer.settings\");\n return !!permission;\n }, [identity]);\n\n return {\n canChangeSettings\n };\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AAGO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,GAAM;EAC/B,mBAAoC,IAAAC,wBAAA,GAApC;EAAA,IAAQC,QAAR,gBAAQA,QAAR;EAAA,IAAkBC,aAAlB,gBAAkBA,aAAlB;;EAEA,IAAMC,iBAAiB,GAAG,IAAAC,kBAAA,EAAY,YAAe;IACjD,IAAMC,UAAU,GAAGH,aAAa,CAA2B,iBAA3B,CAAhC;IACA,OAAO,CAAC,CAACG,UAAT;EACH,CAHyB,EAGvB,CAACJ,QAAD,CAHuB,CAA1B;EAKA,OAAO;IACHE,iBAAiB,EAAjBA;EADG,CAAP;AAGH,CAXM"}
|
package/index.d.ts
ADDED
package/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Module", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _Module.Module;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _Module = require("./plugins/Module");
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["index.tsx"],"sourcesContent":["import { Module } from \"~/plugins/Module\";\n\nexport { Module };\n"],"mappings":";;;;;;;;;;;;AAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@webiny/app-mailer",
|
|
3
|
+
"version": "0.0.0-ee-vpcs.549378cf03",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/webiny/webiny-js.git"
|
|
8
|
+
},
|
|
9
|
+
"author": "Webiny Ltd",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@apollo/react-components": "3.1.5",
|
|
13
|
+
"@babel/runtime": "7.19.0",
|
|
14
|
+
"@emotion/core": "10.3.1",
|
|
15
|
+
"@webiny/app-admin": "0.0.0-ee-vpcs.549378cf03",
|
|
16
|
+
"@webiny/app-security": "0.0.0-ee-vpcs.549378cf03",
|
|
17
|
+
"@webiny/form": "0.0.0-ee-vpcs.549378cf03",
|
|
18
|
+
"@webiny/ui": "0.0.0-ee-vpcs.549378cf03",
|
|
19
|
+
"@webiny/validation": "0.0.0-ee-vpcs.549378cf03",
|
|
20
|
+
"apollo-cache": "1.3.5",
|
|
21
|
+
"apollo-client": "2.6.10",
|
|
22
|
+
"apollo-link": "1.2.14",
|
|
23
|
+
"apollo-utilities": "1.3.4",
|
|
24
|
+
"graphql": "15.8.0",
|
|
25
|
+
"graphql-tag": "2.12.6",
|
|
26
|
+
"prop-types": "15.8.1",
|
|
27
|
+
"react": "17.0.2",
|
|
28
|
+
"react-dom": "17.0.2",
|
|
29
|
+
"react-helmet": "6.1.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@babel/cli": "^7.19.3",
|
|
33
|
+
"@babel/core": "^7.19.3",
|
|
34
|
+
"@babel/preset-env": "^7.19.4",
|
|
35
|
+
"@babel/preset-react": "^7.0.0",
|
|
36
|
+
"@babel/preset-typescript": "^7.18.6",
|
|
37
|
+
"@types/react": "17.0.39",
|
|
38
|
+
"@webiny/cli": "^0.0.0-ee-vpcs.549378cf03",
|
|
39
|
+
"@webiny/project-utils": "^0.0.0-ee-vpcs.549378cf03",
|
|
40
|
+
"babel-plugin-emotion": "^9.2.8",
|
|
41
|
+
"rimraf": "^3.0.2",
|
|
42
|
+
"ttypescript": "^1.5.12",
|
|
43
|
+
"typescript": "4.7.4"
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public",
|
|
47
|
+
"directory": "dist"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "yarn webiny run build",
|
|
51
|
+
"watch": "yarn webiny run watch"
|
|
52
|
+
},
|
|
53
|
+
"svgo": {
|
|
54
|
+
"plugins": {
|
|
55
|
+
"removeViewBox": false
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"gitHead": "549378cf03fcd27845fc3fa23d1dc6b32896f630"
|
|
59
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard3 = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.Module = void 0;
|
|
11
|
+
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
|
|
14
|
+
var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard3(require("react"));
|
|
17
|
+
|
|
18
|
+
var _appAdmin = require("@webiny/app-admin");
|
|
19
|
+
|
|
20
|
+
var _appSecurity = require("@webiny/app-security");
|
|
21
|
+
|
|
22
|
+
var _AdminLayout = require("@webiny/app-admin/components/AdminLayout");
|
|
23
|
+
|
|
24
|
+
var _reactHelmet = _interopRequireDefault(require("react-helmet"));
|
|
25
|
+
|
|
26
|
+
var _usePermission2 = require("../hooks/usePermission");
|
|
27
|
+
|
|
28
|
+
var _Progress = require("@webiny/ui/Progress");
|
|
29
|
+
|
|
30
|
+
var _excluded = ["children"];
|
|
31
|
+
var Settings = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
32
|
+
return Promise.resolve().then(function () {
|
|
33
|
+
return (0, _interopRequireWildcard2.default)(require("../views/settings"));
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
var Loader = function Loader(_ref) {
|
|
38
|
+
var children = _ref.children,
|
|
39
|
+
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
41
|
+
fallback: /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null)
|
|
42
|
+
}, /*#__PURE__*/_react.default.cloneElement(children, props));
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var Module = function Module() {
|
|
46
|
+
var _usePermission = (0, _usePermission2.usePermission)(),
|
|
47
|
+
canChangeSettings = _usePermission.canChangeSettings;
|
|
48
|
+
|
|
49
|
+
var changeSettings = canChangeSettings();
|
|
50
|
+
|
|
51
|
+
if (!changeSettings) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
|
|
56
|
+
name: "settings"
|
|
57
|
+
}, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
|
|
58
|
+
name: "settings.mailer",
|
|
59
|
+
label: "Mailer"
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
|
|
61
|
+
name: "settings.mailer.settings",
|
|
62
|
+
label: "Settings",
|
|
63
|
+
path: "/mailer/settings"
|
|
64
|
+
}))), /*#__PURE__*/_react.default.createElement(_appAdmin.AddRoute, {
|
|
65
|
+
exact: true,
|
|
66
|
+
path: "/mailer/settings",
|
|
67
|
+
render: function render() {
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(_appSecurity.SecureRoute, {
|
|
69
|
+
permission: "mailer.settings"
|
|
70
|
+
}, /*#__PURE__*/_react.default.createElement(_AdminLayout.AdminLayout, null, /*#__PURE__*/_react.default.createElement(_reactHelmet.default, {
|
|
71
|
+
title: "Mailer - Settings"
|
|
72
|
+
}), /*#__PURE__*/_react.default.createElement(Loader, null, /*#__PURE__*/_react.default.createElement(Settings, null))));
|
|
73
|
+
}
|
|
74
|
+
}));
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
exports.Module = Module;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Settings","lazy","Loader","children","props","React","cloneElement","Module","usePermission","canChangeSettings","changeSettings"],"sources":["Module.tsx"],"sourcesContent":["import React, { lazy, Suspense } from \"react\";\nimport { AddMenu as Menu, AddRoute } from \"@webiny/app-admin\";\nimport { SecureRoute } from \"@webiny/app-security\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport Helmet from \"react-helmet\";\nimport { usePermission } from \"~/hooks/usePermission\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\n\nconst Settings = lazy(() => import(\"~/views/settings\"));\n\ninterface LoaderProps {\n children: React.ReactElement;\n}\nconst Loader: React.FC<LoaderProps> = ({ children, ...props }) => (\n <Suspense fallback={<CircularProgress />}>{React.cloneElement(children, props)}</Suspense>\n);\n\nexport const Module: React.FC = () => {\n const { canChangeSettings } = usePermission();\n\n const changeSettings = canChangeSettings();\n\n if (!changeSettings) {\n return null;\n }\n\n return (\n <>\n <Menu name={\"settings\"}>\n <Menu name={\"settings.mailer\"} label={\"Mailer\"}>\n <Menu\n name={\"settings.mailer.settings\"}\n label={\"Settings\"}\n path={\"/mailer/settings\"}\n />\n </Menu>\n </Menu>\n <AddRoute\n exact\n path={\"/mailer/settings\"}\n render={() => (\n <SecureRoute permission={\"mailer.settings\"}>\n <AdminLayout>\n <Helmet title={\"Mailer - Settings\"} />\n <Loader>\n <Settings />\n </Loader>\n </AdminLayout>\n </SecureRoute>\n )}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;AAEA,IAAMA,QAAQ,gBAAG,IAAAC,WAAA,EAAK;EAAA;IAAA;EAAA;AAAA,CAAL,CAAjB;;AAKA,IAAMC,MAA6B,GAAG,SAAhCA,MAAgC;EAAA,IAAGC,QAAH,QAAGA,QAAH;EAAA,IAAgBC,KAAhB;EAAA,oBAClC,6BAAC,eAAD;IAAU,QAAQ,eAAE,6BAAC,0BAAD;EAApB,gBAA2CC,cAAA,CAAMC,YAAN,CAAmBH,QAAnB,EAA6BC,KAA7B,CAA3C,CADkC;AAAA,CAAtC;;AAIO,IAAMG,MAAgB,GAAG,SAAnBA,MAAmB,GAAM;EAClC,qBAA8B,IAAAC,6BAAA,GAA9B;EAAA,IAAQC,iBAAR,kBAAQA,iBAAR;;EAEA,IAAMC,cAAc,GAAGD,iBAAiB,EAAxC;;EAEA,IAAI,CAACC,cAAL,EAAqB;IACjB,OAAO,IAAP;EACH;;EAED,oBACI,yEACI,6BAAC,iBAAD;IAAM,IAAI,EAAE;EAAZ,gBACI,6BAAC,iBAAD;IAAM,IAAI,EAAE,iBAAZ;IAA+B,KAAK,EAAE;EAAtC,gBACI,6BAAC,iBAAD;IACI,IAAI,EAAE,0BADV;IAEI,KAAK,EAAE,UAFX;IAGI,IAAI,EAAE;EAHV,EADJ,CADJ,CADJ,eAUI,6BAAC,kBAAD;IACI,KAAK,MADT;IAEI,IAAI,EAAE,kBAFV;IAGI,MAAM,EAAE;MAAA,oBACJ,6BAAC,wBAAD;QAAa,UAAU,EAAE;MAAzB,gBACI,6BAAC,wBAAD,qBACI,6BAAC,oBAAD;QAAQ,KAAK,EAAE;MAAf,EADJ,eAEI,6BAAC,MAAD,qBACI,6BAAC,QAAD,OADJ,CAFJ,CADJ,CADI;IAAA;EAHZ,EAVJ,CADJ;AA2BH,CApCM"}
|
package/types.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SecurityPermission } from "@webiny/app-security/types";
|
|
2
|
+
/**
|
|
3
|
+
* A base security permission for APW.
|
|
4
|
+
*
|
|
5
|
+
* @category SecurityPermission
|
|
6
|
+
*/
|
|
7
|
+
export interface MailerSecurityPermission extends SecurityPermission {
|
|
8
|
+
changeSettings?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* GraphQL API call response for the transport settings values
|
|
12
|
+
* @category GraphQL
|
|
13
|
+
*/
|
|
14
|
+
export interface TransportSettings {
|
|
15
|
+
host: string;
|
|
16
|
+
user: string;
|
|
17
|
+
from: string;
|
|
18
|
+
replyTo?: string;
|
|
19
|
+
password?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* @category GraphQL
|
|
24
|
+
*/
|
|
25
|
+
export interface ApiError<T = Record<string, any>> {
|
|
26
|
+
message: string;
|
|
27
|
+
code: string;
|
|
28
|
+
data: T;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Description of the JOI validation errors received from the API.
|
|
32
|
+
*
|
|
33
|
+
* @category GraphQL
|
|
34
|
+
*/
|
|
35
|
+
export interface ValidationError {
|
|
36
|
+
message: string;
|
|
37
|
+
path: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface ValidationErrors {
|
|
40
|
+
errors: ValidationError[];
|
|
41
|
+
}
|
package/types.js
ADDED
package/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { SecurityPermission } from \"@webiny/app-security/types\";\n\n/**\n * A base security permission for APW.\n *\n * @category SecurityPermission\n */\nexport interface MailerSecurityPermission extends SecurityPermission {\n changeSettings?: boolean;\n}\n\n/**\n * GraphQL API call response for the transport settings values\n * @category GraphQL\n */\nexport interface TransportSettings {\n host: string;\n user: string;\n from: string;\n replyTo?: string;\n password?: string;\n}\n/**\n *\n * @category GraphQL\n */\nexport interface ApiError<T = Record<string, any>> {\n message: string;\n code: string;\n data: T;\n}\n\n/**\n * Description of the JOI validation errors received from the API.\n *\n * @category GraphQL\n */\nexport interface ValidationError {\n message: string;\n path: string[];\n}\n\nexport interface ValidationErrors {\n errors: ValidationError[];\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.Settings = void 0;
|
|
11
|
+
|
|
12
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
13
|
+
|
|
14
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
15
|
+
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
|
|
18
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _appAdmin = require("@webiny/app-admin");
|
|
23
|
+
|
|
24
|
+
var _reactComponents = require("@apollo/react-components");
|
|
25
|
+
|
|
26
|
+
var _form = require("@webiny/form");
|
|
27
|
+
|
|
28
|
+
var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
|
|
29
|
+
|
|
30
|
+
var _Progress = require("@webiny/ui/Progress");
|
|
31
|
+
|
|
32
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
33
|
+
|
|
34
|
+
var _Input = require("@webiny/ui/Input");
|
|
35
|
+
|
|
36
|
+
var _validation = require("@webiny/validation");
|
|
37
|
+
|
|
38
|
+
var _Button = require("@webiny/ui/Button");
|
|
39
|
+
|
|
40
|
+
var _graphql = require("./graphql");
|
|
41
|
+
|
|
42
|
+
var _Alert = require("@webiny/ui/Alert");
|
|
43
|
+
|
|
44
|
+
var displayErrors = function displayErrors(errors) {
|
|
45
|
+
if (!errors) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, errors.map(function (error) {
|
|
50
|
+
var field = error.path[0];
|
|
51
|
+
|
|
52
|
+
if (!field) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
|
|
57
|
+
key: "".concat(field),
|
|
58
|
+
title: error.message,
|
|
59
|
+
type: "danger"
|
|
60
|
+
});
|
|
61
|
+
}));
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
var Settings = function Settings() {
|
|
65
|
+
var _useSnackbar = (0, _appAdmin.useSnackbar)(),
|
|
66
|
+
showSnackbar = _useSnackbar.showSnackbar;
|
|
67
|
+
|
|
68
|
+
var password = (0, _react.useRef)();
|
|
69
|
+
|
|
70
|
+
var _useState = (0, _react.useState)(),
|
|
71
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
72
|
+
errors = _useState2[0],
|
|
73
|
+
setErrors = _useState2[1];
|
|
74
|
+
|
|
75
|
+
(0, _react.useEffect)(function () {
|
|
76
|
+
var t = setTimeout(function () {
|
|
77
|
+
if (!password.current) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
password.current.value = "";
|
|
82
|
+
}, 300);
|
|
83
|
+
return function () {
|
|
84
|
+
clearTimeout(t);
|
|
85
|
+
};
|
|
86
|
+
}, []);
|
|
87
|
+
return /*#__PURE__*/_react.default.createElement(_reactComponents.Query, {
|
|
88
|
+
query: _graphql.GET_SETTINGS_QUERY
|
|
89
|
+
}, function (_ref) {
|
|
90
|
+
var response = _ref.data,
|
|
91
|
+
queryInProgress = _ref.loading;
|
|
92
|
+
return /*#__PURE__*/_react.default.createElement(_reactComponents.Mutation, {
|
|
93
|
+
mutation: _graphql.SAVE_SETTINGS_MUTATION
|
|
94
|
+
}, function (update, result) {
|
|
95
|
+
var _ref2 = (response === null || response === void 0 ? void 0 : response.mailer.settings) || {},
|
|
96
|
+
settingsData = _ref2.data,
|
|
97
|
+
settingsError = _ref2.error;
|
|
98
|
+
|
|
99
|
+
var mutationInProgress = result.loading;
|
|
100
|
+
|
|
101
|
+
var _onSubmit = /*#__PURE__*/function () {
|
|
102
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(data) {
|
|
103
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
104
|
+
while (1) {
|
|
105
|
+
switch (_context.prev = _context.next) {
|
|
106
|
+
case 0:
|
|
107
|
+
setErrors([]);
|
|
108
|
+
_context.next = 3;
|
|
109
|
+
return update({
|
|
110
|
+
variables: {
|
|
111
|
+
data: data
|
|
112
|
+
},
|
|
113
|
+
update: function update(cache, result) {
|
|
114
|
+
var _result$data;
|
|
115
|
+
|
|
116
|
+
var data = structuredClone(cache.readQuery({
|
|
117
|
+
query: _graphql.GET_SETTINGS_QUERY
|
|
118
|
+
}));
|
|
119
|
+
|
|
120
|
+
var _ref4 = ((_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.mailer.settings) || {},
|
|
121
|
+
updateData = _ref4.data,
|
|
122
|
+
updateError = _ref4.error;
|
|
123
|
+
|
|
124
|
+
var errors = updateError === null || updateError === void 0 ? void 0 : updateError.data.errors;
|
|
125
|
+
|
|
126
|
+
if (errors) {
|
|
127
|
+
setErrors(errors);
|
|
128
|
+
showSnackbar("Settings not updated! Please check your network and console logs for detailed information.");
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
data.mailer.settings.data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settingsData), updateData);
|
|
133
|
+
cache.writeQuery({
|
|
134
|
+
query: _graphql.GET_SETTINGS_QUERY,
|
|
135
|
+
data: data
|
|
136
|
+
});
|
|
137
|
+
showSnackbar("Settings updated successfully.");
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
case 3:
|
|
142
|
+
case "end":
|
|
143
|
+
return _context.stop();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}, _callee);
|
|
147
|
+
}));
|
|
148
|
+
|
|
149
|
+
return function onSubmit(_x) {
|
|
150
|
+
return _ref3.apply(this, arguments);
|
|
151
|
+
};
|
|
152
|
+
}();
|
|
153
|
+
|
|
154
|
+
if (settingsError) {
|
|
155
|
+
var _settingsError$data;
|
|
156
|
+
|
|
157
|
+
return /*#__PURE__*/_react.default.createElement(_appAdmin.CenteredView, null, /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
|
|
158
|
+
title: "Mailer Settings"
|
|
159
|
+
}), /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
|
|
160
|
+
style: {
|
|
161
|
+
backgroundColor: "#FFFFFF"
|
|
162
|
+
}
|
|
163
|
+
}, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
164
|
+
span: 12
|
|
165
|
+
}, /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
|
|
166
|
+
title: settingsError.message,
|
|
167
|
+
type: "danger"
|
|
168
|
+
}), ((_settingsError$data = settingsError.data) === null || _settingsError$data === void 0 ? void 0 : _settingsError$data.description) && /*#__PURE__*/_react.default.createElement("p", null, settingsError.data.description))));
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
var passwordValidators = [];
|
|
172
|
+
|
|
173
|
+
if (!(settingsData !== null && settingsData !== void 0 && settingsData.user)) {
|
|
174
|
+
passwordValidators.push(_validation.validation.create("required,minLength:5"));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return /*#__PURE__*/_react.default.createElement(_appAdmin.CenteredView, null, /*#__PURE__*/_react.default.createElement(_form.Form, {
|
|
178
|
+
data: settingsData || {},
|
|
179
|
+
onSubmit: function onSubmit(data) {
|
|
180
|
+
/**
|
|
181
|
+
* We are positive that data is TransportSettings.
|
|
182
|
+
*/
|
|
183
|
+
_onSubmit(data);
|
|
184
|
+
}
|
|
185
|
+
}, function (_ref5) {
|
|
186
|
+
var Bind = _ref5.Bind,
|
|
187
|
+
form = _ref5.form;
|
|
188
|
+
return /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleForm, null, (queryInProgress || mutationInProgress) && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
|
|
189
|
+
title: "Mailer Settings"
|
|
190
|
+
}), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormContent, null, displayErrors(errors), /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
191
|
+
span: 12
|
|
192
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
193
|
+
name: "host",
|
|
194
|
+
validators: [_validation.validation.create("required,minLength:1")]
|
|
195
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
196
|
+
type: "text",
|
|
197
|
+
label: "Hostname"
|
|
198
|
+
}))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
199
|
+
span: 12
|
|
200
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
201
|
+
name: "port"
|
|
202
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
203
|
+
type: "number",
|
|
204
|
+
label: "Port"
|
|
205
|
+
}))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
206
|
+
span: 12
|
|
207
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
208
|
+
name: "user",
|
|
209
|
+
validators: [_validation.validation.create("required,minLength:1")]
|
|
210
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
211
|
+
type: "text",
|
|
212
|
+
label: "User",
|
|
213
|
+
autoComplete: "new-password"
|
|
214
|
+
}))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
215
|
+
span: 12
|
|
216
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
217
|
+
name: "password",
|
|
218
|
+
validators: passwordValidators
|
|
219
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
220
|
+
label: "Password",
|
|
221
|
+
type: "password",
|
|
222
|
+
autoComplete: "new-password",
|
|
223
|
+
value: "" // @ts-ignore
|
|
224
|
+
,
|
|
225
|
+
inputRef: password
|
|
226
|
+
}))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
227
|
+
span: 12
|
|
228
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
229
|
+
name: "from",
|
|
230
|
+
validators: [_validation.validation.create("required,minLength:1,email")]
|
|
231
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
232
|
+
type: "text",
|
|
233
|
+
label: "Mail from"
|
|
234
|
+
}))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
235
|
+
span: 12
|
|
236
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
237
|
+
name: "replyTo",
|
|
238
|
+
validators: [_validation.validation.create("email")]
|
|
239
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
240
|
+
type: "text",
|
|
241
|
+
label: "Mail reply-to"
|
|
242
|
+
}))))), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormFooter, null, /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
243
|
+
onClick: function onClick(ev) {
|
|
244
|
+
form.submit(ev);
|
|
245
|
+
}
|
|
246
|
+
}, "Save Settings")));
|
|
247
|
+
}));
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
exports.Settings = Settings;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["displayErrors","errors","map","error","field","path","message","Settings","useSnackbar","showSnackbar","password","useRef","useState","setErrors","useEffect","t","setTimeout","current","value","clearTimeout","GET_SETTINGS_QUERY","response","data","queryInProgress","loading","SAVE_SETTINGS_MUTATION","update","result","mailer","settings","settingsData","settingsError","mutationInProgress","onSubmit","variables","cache","structuredClone","readQuery","query","updateData","updateError","writeQuery","backgroundColor","description","passwordValidators","user","push","validation","create","Bind","form","ev","submit"],"sources":["Settings.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { CenteredView, useSnackbar } from \"@webiny/app-admin\";\nimport { Mutation, Query } from \"@apollo/react-components\";\nimport { Form } from \"@webiny/form\";\nimport {\n SimpleForm,\n SimpleFormContent,\n SimpleFormFooter,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { validation } from \"@webiny/validation\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport {\n GET_SETTINGS_QUERY,\n SettingsQueryResponse,\n SAVE_SETTINGS_MUTATION,\n SaveSettingsMutationVariables,\n SaveSettingsMutationResponse\n} from \"./graphql\";\nimport { TransportSettings, ValidationError } from \"~/types\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { Validator } from \"@webiny/validation/types\";\n\nconst displayErrors = (errors?: ValidationError[]) => {\n if (!errors) {\n return null;\n }\n return (\n <>\n {errors.map(error => {\n const field = error.path[0];\n if (!field) {\n return null;\n }\n return <Alert key={`${field}`} title={error.message} type=\"danger\" />;\n })}\n </>\n );\n};\n\nexport const Settings: React.FC = () => {\n const { showSnackbar } = useSnackbar();\n\n const password = useRef<HTMLInputElement>();\n\n const [errors, setErrors] = useState<ValidationError[] | undefined>();\n\n useEffect(() => {\n const t = setTimeout(() => {\n if (!password.current) {\n return;\n }\n password.current.value = \"\";\n }, 300);\n\n return () => {\n clearTimeout(t);\n };\n }, []);\n\n return (\n <Query<SettingsQueryResponse> query={GET_SETTINGS_QUERY}>\n {({ data: response, loading: queryInProgress }) => (\n <Mutation<SaveSettingsMutationResponse, SaveSettingsMutationVariables>\n mutation={SAVE_SETTINGS_MUTATION}\n >\n {(update, result) => {\n const { data: settingsData, error: settingsError } =\n response?.mailer.settings || {};\n const { loading: mutationInProgress } = result;\n\n const onSubmit = async (data: TransportSettings): Promise<void> => {\n setErrors([]);\n await update({\n variables: {\n data\n },\n update: (cache, result) => {\n const data = structuredClone(\n cache.readQuery({ query: GET_SETTINGS_QUERY })\n );\n\n const { data: updateData, error: updateError } =\n result.data?.mailer.settings || {};\n\n const errors = updateError?.data.errors;\n if (errors) {\n setErrors(errors);\n showSnackbar(\n \"Settings not updated! Please check your network and console logs for detailed information.\"\n );\n return;\n }\n\n data.mailer.settings.data = {\n ...settingsData,\n ...updateData\n };\n\n cache.writeQuery({\n query: GET_SETTINGS_QUERY,\n data\n });\n showSnackbar(\"Settings updated successfully.\");\n }\n });\n };\n if (settingsError) {\n return (\n <CenteredView>\n <SimpleFormHeader title=\"Mailer Settings\" />\n <Grid style={{ backgroundColor: \"#FFFFFF\" }}>\n <Cell span={12}>\n <Alert title={settingsError.message} type=\"danger\" />\n {settingsError.data?.description && (\n <p>{settingsError.data.description}</p>\n )}\n </Cell>\n </Grid>\n </CenteredView>\n );\n }\n\n const passwordValidators: Validator[] = [];\n if (!settingsData?.user) {\n passwordValidators.push(validation.create(\"required,minLength:5\"));\n }\n\n return (\n <CenteredView>\n <Form\n data={settingsData || {}}\n onSubmit={data => {\n /**\n * We are positive that data is TransportSettings.\n */\n onSubmit(data as unknown as TransportSettings);\n }}\n >\n {({ Bind, form }) => (\n <SimpleForm>\n {(queryInProgress || mutationInProgress) && (\n <CircularProgress />\n )}\n <SimpleFormHeader title=\"Mailer Settings\" />\n <SimpleFormContent>\n {displayErrors(errors)}\n <Grid>\n <Cell span={12}>\n <Bind\n name={\"host\"}\n validators={[\n validation.create(\n \"required,minLength:1\"\n )\n ]}\n >\n <Input type=\"text\" label=\"Hostname\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"port\"}>\n <Input type=\"number\" label=\"Port\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"user\"}\n validators={[\n validation.create(\n \"required,minLength:1\"\n )\n ]}\n >\n <Input\n type=\"text\"\n label=\"User\"\n autoComplete=\"new-password\"\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"password\"}\n validators={passwordValidators}\n >\n <Input\n label=\"Password\"\n type=\"password\"\n autoComplete=\"new-password\"\n value={\"\"}\n // @ts-ignore\n inputRef={password}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"from\"}\n validators={[\n validation.create(\n \"required,minLength:1,email\"\n )\n ]}\n >\n <Input type=\"text\" label=\"Mail from\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"replyTo\"}\n validators={[\n validation.create(\"email\")\n ]}\n >\n <Input\n type=\"text\"\n label=\"Mail reply-to\"\n />\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >\n Save Settings\n </ButtonPrimary>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n </CenteredView>\n );\n }}\n </Mutation>\n )}\n </Query>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ApiError, TransportSettings, ValidationErrors } from "../../types";
|
|
2
|
+
export interface SettingsQueryResponse {
|
|
3
|
+
mailer: {
|
|
4
|
+
settings: {
|
|
5
|
+
data: TransportSettings | null;
|
|
6
|
+
error: ApiError | null;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare const GET_SETTINGS_QUERY: import("graphql").DocumentNode;
|
|
11
|
+
export interface SaveSettingsMutationVariables {
|
|
12
|
+
data: TransportSettings & {
|
|
13
|
+
password?: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface SaveSettingsMutationResponse {
|
|
17
|
+
mailer: {
|
|
18
|
+
settings: {
|
|
19
|
+
data: TransportSettings | null;
|
|
20
|
+
error: ApiError<ValidationErrors> | null;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare const SAVE_SETTINGS_MUTATION: import("graphql").DocumentNode;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.SAVE_SETTINGS_MUTATION = exports.GET_SETTINGS_QUERY = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
13
|
+
|
|
14
|
+
var _templateObject, _templateObject2;
|
|
15
|
+
|
|
16
|
+
var SETTINGS_FIELDS = "\n {\n host\n port\n user\n from\n replyTo\n }\n";
|
|
17
|
+
var ERROR_FIELDS = "\n {\n message\n code\n data\n }\n";
|
|
18
|
+
var GET_SETTINGS_QUERY = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query GetMailerSettings {\n mailer {\n settings: getSettings {\n data ", "\n error ", "\n }\n }\n }\n"])), SETTINGS_FIELDS, ERROR_FIELDS);
|
|
19
|
+
exports.GET_SETTINGS_QUERY = GET_SETTINGS_QUERY;
|
|
20
|
+
var SAVE_SETTINGS_MUTATION = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n mutation SaveTransportSettings($data: MailerTransportSettingsInput!) {\n mailer {\n settings: saveSettings(data: $data) {\n data ", "\n error ", "\n }\n }\n }\n"])), SETTINGS_FIELDS, ERROR_FIELDS);
|
|
21
|
+
exports.SAVE_SETTINGS_MUTATION = SAVE_SETTINGS_MUTATION;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SETTINGS_FIELDS","ERROR_FIELDS","GET_SETTINGS_QUERY","gql","SAVE_SETTINGS_MUTATION"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport { ApiError, TransportSettings, ValidationErrors } from \"~/types\";\n\nconst SETTINGS_FIELDS = `\n {\n host\n port\n user\n from\n replyTo\n }\n`;\n\nconst ERROR_FIELDS = `\n {\n message\n code\n data\n }\n`;\n\nexport interface SettingsQueryResponse {\n mailer: {\n settings: {\n data: TransportSettings | null;\n error: ApiError | null;\n };\n };\n}\nexport const GET_SETTINGS_QUERY = gql`\n query GetMailerSettings {\n mailer {\n settings: getSettings {\n data ${SETTINGS_FIELDS}\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n\nexport interface SaveSettingsMutationVariables {\n data: TransportSettings & {\n password?: string;\n };\n}\n\nexport interface SaveSettingsMutationResponse {\n mailer: {\n settings: {\n data: TransportSettings | null;\n error: ApiError<ValidationErrors> | null;\n };\n };\n}\nexport const SAVE_SETTINGS_MUTATION = gql`\n mutation SaveTransportSettings($data: MailerTransportSettingsInput!) {\n mailer {\n settings: saveSettings(data: $data) {\n data ${SETTINGS_FIELDS}\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;;;;AAAA;;;;AAGA,IAAMA,eAAe,8FAArB;AAUA,IAAMC,YAAY,kEAAlB;AAgBO,IAAMC,kBAAkB,OAAGC,mBAAH,qQAIRH,eAJQ,EAKPC,YALO,CAAxB;;AAyBA,IAAMG,sBAAsB,OAAGD,mBAAH,kUAIZH,eAJY,EAKXC,YALW,CAA5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Settings"],"sources":["index.ts"],"sourcesContent":["import { Settings } from \"./Settings\";\n\nexport default Settings;\n"],"mappings":";;;;;;;AAAA;;eAEeA,kB"}
|