Electron 22 => 30

- The shell.showItemInFolder call must be made via electron/remote per https://github.com/electron/electron/issues/38540

- MacOS Sonoma requires a different method of setting default apps (https://developer.apple.com/documentation/appkit/nsworkspace/3753005-setdefaultapplication), which is thankfully now implemented + working in Electron, use it!

- Fixed a few styling issues in themes that i noticed while testing
This commit is contained in:
Ben Gotow 2024-06-02 00:13:02 -05:00
parent e4aaa40f41
commit c214361b92
13 changed files with 253 additions and 306 deletions

View file

@ -3,7 +3,6 @@ import React from 'react';
import ReactDOM from 'react-dom';
import { Flexbox, EditableList, ComposerEditor, ComposerSupport } from 'mailspring-component-kit';
import { Actions, localized, localizedReactFragment } from 'mailspring-exports';
import { shell } from 'electron';
import { Value } from 'slate';
import TemplateStore from './template-store';
@ -176,11 +175,15 @@ export default class PreferencesTemplates extends React.Component<
/>
<a
style={{
marginTop: 10,
display: 'block',
fontSize: '0.9em',
padding: 6,
margin: -6,
marginTop: 4,
}}
onClick={() => shell.showItemInFolder(TemplateStore.directory())}
onClick={() =>
require('@electron/remote').shell.showItemInFolder(TemplateStore.directory())
}
>
{localized('Show Templates Folder...')}
</a>

View file

@ -7,12 +7,10 @@
input[type='checkbox'] {
margin: 0 7px 0 0;
position: relative;
top: -1px;
top: 1px;
}
input[type='radio'] {
margin: 0 7px 0 0;
position: relative;
top: -1px;
}
select {
margin: 4px 0 0 0;

View file

@ -24,15 +24,7 @@ class ThreadListVertical extends React.Component<
<InjectedComponentSet matching={{ role: 'ThreadList' }} />
</ResizableRegion>
<div style={{ flex: '1 1 0%' }}>
<div
style={{
display: 'flex',
flexDirection: 'column',
height: '100%',
width: '100%',
borderTop: '0.5px solid #dddddd',
}}
>
<div className="thread-list-vertical">
<div className="sheet-toolbar" style={{ borderBottom: '0' }}>
<InjectedComponentSet
matching={{

View file

@ -550,3 +550,14 @@ body.is-blurred {
}
}
}
.thread-list-vertical {
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
border-top: 1px solid @border-color-divider;
.sheet-toolbar {
-webkit-app-region: none;
}
}

View file

@ -45,13 +45,13 @@
.column-MessageListSidebar,
.preferences-sidebar,
.column-DraftList {
padding: 5em 0 2em 2em;
padding: 3em 0 2em 2em;
background: @less-background;
}
// Message List padding
.column-MessageList {
padding: 4.5em 2em 0;
padding: 2.5em 2em 0;
}
// Window Control Button transforms
@ -252,7 +252,7 @@
// Thread list padding overrides
.column-ThreadList {
padding: 5em 2em 1em;
padding: 3em 2em 1em;
}
// Selected thread list items overrides
@ -389,7 +389,7 @@ body.is-blurred .thread-list.handler-split .list-item.selected {
// Re-center message list in sidebar with padding
.column-MessageListSidebar {
padding: 5em 1em;
padding: 3em 1em;
}
.sidebar-participant-picker {
@ -550,6 +550,10 @@ body.is-blurred .sheet-toolbar-container {
box-shadow: none;
}
.composer-full-window {
padding-top: 15px;
}
// make bottom of composer window uniform in color
.composer-full-window .composer-inner-wrap .composer-action-bar-wrap {
background: @less-background;
@ -606,3 +610,7 @@ body.is-blurred .sheet-toolbar-container {
.button-dropdown .secondary-picker img.content-mask {
background-color: @less-background;
}
.thread-list-vertical #message-list {
padding-top: 30px;
}

339
app/package-lock.json generated
View file

@ -10,9 +10,9 @@
"license": "GPL-3.0",
"dependencies": {
"@bengotow/slate-edit-list": "github:bengotow/slate-edit-list#b868e108",
"@electron/remote": "^2.0.9",
"@electron/remote": "^2.1.2",
"app-module-path": "^2.2.0",
"better-sqlite3": "^8.0.1",
"better-sqlite3": "^11.0.0",
"cheerio": "^1.0.0-rc.6",
"chromium-net-errors": "1.0.3",
"chrono-node": "^1.1.2",
@ -129,9 +129,9 @@
}
},
"node_modules/@electron/get/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"peer": true,
"dependencies": {
"ms": "2.1.2"
@ -152,9 +152,9 @@
"peer": true
},
"node_modules/@electron/remote": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.11.tgz",
"integrity": "sha512-PYEs7W3GrQNuhgiMHjFEvL5MbAL6C7m1AwSAHGqC+xc33IdP7rcGtJSdTP2eg1ssyB3oI00KwTsiSlsQbAoXpA==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.1.2.tgz",
"integrity": "sha512-EPwNx+nhdrTBxyCqXt/pftoQg/ybtWDW3DUWHafejvnB1ZGGfMpv6e15D8KeempocjXe78T7WreyGGb3mlZxdA==",
"peerDependencies": {
"electron": ">= 13.0.0"
}
@ -506,9 +506,9 @@
}
},
"node_modules/better-sqlite3": {
"version": "8.7.0",
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.7.0.tgz",
"integrity": "sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==",
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.0.0.tgz",
"integrity": "sha512-1NnNhmT3EZTsKtofJlMox1jkMxdedILury74PwUbQBjWgo4tL4kf7uTAjU55mgQwjdzqakSTjkf+E1imrFwjnA==",
"hasInstallScript": true,
"dependencies": {
"bindings": "^1.5.0",
@ -1520,13 +1520,14 @@
}
},
"node_modules/es5-ext": {
"version": "0.10.62",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
"integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
"version": "0.10.64",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"hasInstallScript": true,
"dependencies": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
"esniff": "^2.0.1",
"next-tick": "^1.1.0"
},
"engines": {
@ -1534,12 +1535,15 @@
}
},
"node_modules/es5-ext/node_modules/d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"dependencies": {
"es5-ext": "^0.10.50",
"type": "^1.0.1"
"es5-ext": "^0.10.64",
"type": "^2.7.2"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/es5-ext/node_modules/es6-iterator": {
@ -1553,12 +1557,15 @@
}
},
"node_modules/es5-ext/node_modules/es6-symbol": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
"dependencies": {
"d": "^1.0.1",
"ext": "^1.1.2"
"d": "^1.0.2",
"ext": "^1.7.0"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/es6-error": {
@ -1622,6 +1629,32 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/esniff": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
"dependencies": {
"d": "^1.0.1",
"es5-ext": "^0.10.62",
"event-emitter": "^0.3.5",
"type": "^2.7.2"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/esniff/node_modules/d": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"dependencies": {
"es5-ext": "^0.10.64",
"type": "^2.7.2"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/esrever": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/esrever/-/esrever-0.2.0.tgz",
@ -1630,6 +1663,27 @@
"esrever": "bin/esrever"
}
},
"node_modules/event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
"dependencies": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"node_modules/event-emitter/node_modules/d": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"dependencies": {
"es5-ext": "^0.10.64",
"type": "^2.7.2"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/event-kit": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/event-kit/-/event-kit-1.5.0.tgz",
@ -1667,11 +1721,6 @@
"type": "^2.7.2"
}
},
"node_modules/ext/node_modules/type": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@ -1715,9 +1764,9 @@
}
},
"node_modules/extract-zip/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"peer": true,
"dependencies": {
"ms": "2.1.2"
@ -2028,28 +2077,12 @@
"node": ">=10.0"
}
},
"node_modules/global-agent/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"optional": true,
"peer": true,
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/global-agent/node_modules/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"optional": true,
"peer": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
@ -2057,13 +2090,6 @@
"node": ">=10"
}
},
"node_modules/global-agent/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"optional": true,
"peer": true
},
"node_modules/globalthis": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
@ -3151,24 +3177,10 @@
"node": ">=10"
}
},
"node_modules/node-abi/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/node-abi/node_modules/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"bin": {
"semver": "bin/semver.js"
},
@ -3176,11 +3188,6 @@
"node": ">=10"
}
},
"node_modules/node-abi/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
@ -4471,9 +4478,9 @@
}
},
"node_modules/sumchecker/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"peer": true,
"dependencies": {
"ms": "2.1.2"
@ -4640,9 +4647,9 @@
"optional": true
},
"node_modules/type": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
"integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
},
"node_modules/type-fest": {
"version": "0.13.1",
@ -5159,9 +5166,9 @@
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"peer": true,
"requires": {
"ms": "2.1.2"
@ -5176,9 +5183,9 @@
}
},
"@electron/remote": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.11.tgz",
"integrity": "sha512-PYEs7W3GrQNuhgiMHjFEvL5MbAL6C7m1AwSAHGqC+xc33IdP7rcGtJSdTP2eg1ssyB3oI00KwTsiSlsQbAoXpA==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.1.2.tgz",
"integrity": "sha512-EPwNx+nhdrTBxyCqXt/pftoQg/ybtWDW3DUWHafejvnB1ZGGfMpv6e15D8KeempocjXe78T7WreyGGb3mlZxdA==",
"requires": {}
},
"@icons/material": {
@ -5446,9 +5453,9 @@
}
},
"better-sqlite3": {
"version": "8.7.0",
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.7.0.tgz",
"integrity": "sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==",
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.0.0.tgz",
"integrity": "sha512-1NnNhmT3EZTsKtofJlMox1jkMxdedILury74PwUbQBjWgo4tL4kf7uTAjU55mgQwjdzqakSTjkf+E1imrFwjnA==",
"requires": {
"bindings": "^1.5.0",
"prebuild-install": "^7.1.1"
@ -6226,22 +6233,23 @@
}
},
"es5-ext": {
"version": "0.10.62",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
"integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
"version": "0.10.64",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"requires": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
"esniff": "^2.0.1",
"next-tick": "^1.1.0"
},
"dependencies": {
"d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"requires": {
"es5-ext": "^0.10.50",
"type": "^1.0.1"
"es5-ext": "^0.10.64",
"type": "^2.7.2"
}
},
"es6-iterator": {
@ -6255,12 +6263,12 @@
}
},
"es6-symbol": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
"requires": {
"d": "^1.0.1",
"ext": "^1.1.2"
"d": "^1.0.2",
"ext": "^1.7.0"
}
}
}
@ -6314,11 +6322,53 @@
"optional": true,
"peer": true
},
"esniff": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
"requires": {
"d": "^1.0.1",
"es5-ext": "^0.10.62",
"event-emitter": "^0.3.5",
"type": "^2.7.2"
},
"dependencies": {
"d": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"requires": {
"es5-ext": "^0.10.64",
"type": "^2.7.2"
}
}
}
},
"esrever": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/esrever/-/esrever-0.2.0.tgz",
"integrity": "sha512-1e9YJt6yQkyekt2BUjTky7LZWWVyC2cIpgdnsTAvMcnzXIZvlW/fTMPkxBcZoYhgih4d+EC+iw+yv9GIkz7vrw=="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
},
"dependencies": {
"d": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"requires": {
"es5-ext": "^0.10.64",
"type": "^2.7.2"
}
}
}
},
"event-kit": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/event-kit/-/event-kit-1.5.0.tgz",
@ -6348,13 +6398,6 @@
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
"requires": {
"type": "^2.7.2"
},
"dependencies": {
"type": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
}
}
},
"extend": {
@ -6386,9 +6429,9 @@
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"peer": true,
"requires": {
"ms": "2.1.2"
@ -6627,30 +6670,10 @@
"serialize-error": "^7.0.1"
},
"dependencies": {
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"optional": true,
"peer": true,
"requires": {
"yallist": "^4.0.0"
}
},
"semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"optional": true,
"peer": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"optional": true,
"peer": true
}
@ -7488,26 +7511,10 @@
"semver": "^7.3.5"
},
"dependencies": {
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
"yallist": "^4.0.0"
}
},
"semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w=="
}
}
},
@ -8519,9 +8526,9 @@
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"peer": true,
"requires": {
"ms": "2.1.2"
@ -8655,9 +8662,9 @@
"optional": true
},
"type": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
"integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
},
"type-fest": {
"version": "0.13.1",

View file

@ -12,9 +12,9 @@
"main": "./src/browser/main.js",
"dependencies": {
"@bengotow/slate-edit-list": "github:bengotow/slate-edit-list#b868e108",
"@electron/remote": "^2.0.9",
"@electron/remote": "^2.1.2",
"app-module-path": "^2.2.0",
"better-sqlite3": "^8.0.1",
"better-sqlite3": "^11.0.0",
"cheerio": "^1.0.0-rc.6",
"chromium-net-errors": "1.0.3",
"chrono-node": "^1.1.2",

View file

@ -363,7 +363,9 @@ export class EventedIFrame extends React.Component<
oReq.responseType = 'arraybuffer';
oReq.onload = function() {
const buffer = Buffer.from(new Uint8Array(oReq.response));
fs.writeFile(path, buffer, err => shell.showItemInFolder(path));
fs.writeFile(path, buffer, err => {
require('@electron/remote').shell.showItemInFolder(path);
});
};
oReq.send();
});

View file

@ -132,113 +132,19 @@ export class DefaultClientHelperMac implements DCH {
return true;
}
getLaunchServicesPlistPath(callback: (plist: string) => void) {
const secure = `${process.env.HOME}/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist`;
const insecure = `${process.env.HOME}/Library/Preferences/com.apple.LaunchServices.plist`;
fs.exists(secure, exists => (exists ? callback(secure) : callback(insecure)));
}
readDefaults(callback = (result: Error | any, json?: any) => {}) {
this.getLaunchServicesPlistPath(plistPath => {
const tmpPath = `${plistPath}.${Math.random()}`;
exec(`plutil -convert json "${plistPath}" -o "${tmpPath}"`, err => {
if (err) {
callback(err);
return;
}
fs.readFile(tmpPath, (readErr, data) => {
if (readErr) {
callback(readErr);
return;
}
try {
const json = JSON.parse(data.toString());
callback(json.LSHandlers, json);
fs.unlink(tmpPath, () => {});
} catch (e) {
callback(e);
}
});
});
});
}
writeDefaults(defaults, callback = (error?: Error) => {}) {
this.getLaunchServicesPlistPath(plistPath => {
const tmpPath = `${plistPath}.${Math.random()}`;
exec(`plutil -convert json "${plistPath}" -o "${tmpPath}"`, err => {
if (err) {
callback(err);
return;
}
try {
let data = fs.readFileSync(tmpPath).toString();
data = JSON.parse(data);
(data as any).LSHandlers = defaults;
data = JSON.stringify(data);
fs.writeFileSync(tmpPath, data);
} catch (e) {
callback(e);
return;
}
exec(`plutil -convert binary1 "${tmpPath}" -o "${plistPath}"`, () => {
fs.unlink(tmpPath, () => {});
exec(
'/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user',
registerErr => {
callback(registerErr);
}
);
});
});
});
}
isRegisteredForURLScheme(scheme: string, callback: (registered: boolean) => void) {
if (!callback) {
throw new Error('isRegisteredForURLScheme is async, provide a callback');
}
this.readDefaults(defaults => {
for (const def of defaults) {
if (def.LSHandlerURLScheme === scheme) {
callback(def.LSHandlerRoleAll === bundleIdentifier);
return;
}
}
callback(false);
});
return callback(require('@electron/remote').app.isDefaultProtocolClient(scheme));
}
resetURLScheme(scheme: string, callback = (error?: Error) => {}) {
this.readDefaults(defaults => {
// Remove anything already registered for the scheme
for (let ii = defaults.length - 1; ii >= 0; ii--) {
if (defaults[ii].LSHandlerURLScheme === scheme) {
defaults.splice(ii, 1);
}
}
this.writeDefaults(defaults, callback);
});
return callback(require('@electron/remote').app.removeAsDefaultProtocolClient(scheme));
}
registerForURLScheme(scheme: string, callback = (error?: Error) => {}) {
this.readDefaults(defaults => {
// Remove anything already registered for the scheme
for (let ii = defaults.length - 1; ii >= 0; ii--) {
if (defaults[ii].LSHandlerURLScheme === scheme) {
defaults.splice(ii, 1);
}
}
// Add our scheme default
defaults.push({
LSHandlerURLScheme: scheme,
LSHandlerRoleAll: bundleIdentifier,
});
this.writeDefaults(defaults, callback);
});
return callback(require('@electron/remote').app.setAsDefaultProtocolClient(scheme));
}
}

View file

@ -117,7 +117,7 @@ export default class MailsyncBridge {
openLogs() {
const { configDirPath } = AppEnv.getLoadSettings();
const configDirItem = path.join(configDirPath, 'config.json');
require('electron').shell.showItemInFolder(configDirItem); // eslint-disable-line
require('@electron/remote').shell.showItemInFolder(configDirItem); // eslint-disable-line
}
toggleVerboseLogging() {
@ -224,7 +224,7 @@ export default class MailsyncBridge {
// no-op - do not allow us to kill this client - we may be reseting the cache of an
// account which does not exist anymore, but we don't want to interrupt this process
resetClient.kill = () => { };
resetClient.kill = () => {};
this._clients[account.id] = resetClient;
@ -485,7 +485,11 @@ export default class MailsyncBridge {
// If other windows are open, delay the closing of the main window
// by 400ms the first time beforeUnload is called so other windows
// ave a chance to save drafts before we kill the workers.
if (require('@electron/remote').getGlobal('application').windowManager.getOpenWindowCount() <= 1) {
if (
require('@electron/remote')
.getGlobal('application')
.windowManager.getOpenWindowCount() <= 1
) {
return true;
}
if (this._lastWait && Date.now() - this._lastWait < 2000) {

View file

@ -203,7 +203,7 @@ class AttachmentStore extends MailspringStore {
AppEnv.config.get('core.attachments.openFolderAfterDownload')
) {
this._lastDownloadDirectory = newDownloadDirectory;
shell.showItemInFolder(actualSavePath);
require('@electron/remote').shell.showItemInFolder(actualSavePath);
}
}
})
@ -256,7 +256,7 @@ class AttachmentStore extends MailspringStore {
lastSavePaths.length > 0 &&
AppEnv.config.get('core.attachments.openFolderAfterDownload')
) {
shell.showItemInFolder(lastSavePaths[0]);
require('@electron/remote').shell.showItemInFolder(lastSavePaths[0]);
}
return resolve(lastSavePaths);
})

46
package-lock.json generated
View file

@ -49,7 +49,7 @@
"@typescript-eslint/parser": "^4.7.0",
"chalk": "1.x.x",
"devtron": "^1.4.0",
"electron": "22.3.26",
"electron": "30.0.9",
"electron-installer-dmg": "^4.0.0",
"electron-packager": "17.1.x",
"electron-winstaller": "5.1.x",
@ -744,9 +744,12 @@
"integrity": "sha512-4lrOc+oVh2NVt4FtwxtdJZ8L9wxVU/AR4qPvZ7yWvzN/I5FoemxhYZjeDbD+E4lxFbZ2+wzQancfbPxID1WJlw=="
},
"node_modules/@types/node": {
"version": "16.11.26",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz",
"integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ=="
"version": "20.13.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.13.0.tgz",
"integrity": "sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@types/node-emoji": {
"version": "1.8.1",
@ -2185,13 +2188,13 @@
}
},
"node_modules/electron": {
"version": "22.3.26",
"resolved": "https://registry.npmjs.org/electron/-/electron-22.3.26.tgz",
"integrity": "sha512-er0Lhn4WzX/bd+CBsg0KLYtEHys0gISCuZ7g8RMZhy2PGG3W31sF1TaXV90gzp/nPHQHdpKFE9frSMiDSGJ02g==",
"version": "30.0.9",
"resolved": "https://registry.npmjs.org/electron/-/electron-30.0.9.tgz",
"integrity": "sha512-ArxgdGHVu3o5uaP+Tqj8cJDvU03R6vrGrOqiMs7JXLnvQHMqXJIIxmFKQAIdJW8VoT3ac3hD21tA7cPO10RLow==",
"hasInstallScript": true,
"dependencies": {
"@electron/get": "^2.0.0",
"@types/node": "^16.11.26",
"@types/node": "^20.9.0",
"extract-zip": "^2.0.1"
},
"bin": {
@ -12006,6 +12009,11 @@
"node": "*"
}
},
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"node_modules/unique-filename": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
@ -12882,9 +12890,12 @@
"integrity": "sha512-4lrOc+oVh2NVt4FtwxtdJZ8L9wxVU/AR4qPvZ7yWvzN/I5FoemxhYZjeDbD+E4lxFbZ2+wzQancfbPxID1WJlw=="
},
"@types/node": {
"version": "16.11.26",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz",
"integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ=="
"version": "20.13.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.13.0.tgz",
"integrity": "sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==",
"requires": {
"undici-types": "~5.26.4"
}
},
"@types/node-emoji": {
"version": "1.8.1",
@ -13975,12 +13986,12 @@
}
},
"electron": {
"version": "22.3.26",
"resolved": "https://registry.npmjs.org/electron/-/electron-22.3.26.tgz",
"integrity": "sha512-er0Lhn4WzX/bd+CBsg0KLYtEHys0gISCuZ7g8RMZhy2PGG3W31sF1TaXV90gzp/nPHQHdpKFE9frSMiDSGJ02g==",
"version": "30.0.9",
"resolved": "https://registry.npmjs.org/electron/-/electron-30.0.9.tgz",
"integrity": "sha512-ArxgdGHVu3o5uaP+Tqj8cJDvU03R6vrGrOqiMs7JXLnvQHMqXJIIxmFKQAIdJW8VoT3ac3hD21tA7cPO10RLow==",
"requires": {
"@electron/get": "^2.0.0",
"@types/node": "^16.11.26",
"@types/node": "^20.9.0",
"extract-zip": "^2.0.1"
}
},
@ -21310,6 +21321,11 @@
"util-deprecate": "^1.0.2"
}
},
"undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"unique-filename": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",

View file

@ -52,7 +52,7 @@
"@typescript-eslint/parser": "^4.7.0",
"chalk": "1.x.x",
"devtron": "^1.4.0",
"electron": "22.3.26",
"electron": "30.0.9",
"electron-installer-dmg": "^4.0.0",
"electron-packager": "17.1.x",
"electron-winstaller": "5.1.x",